W3C home > Mailing lists > Public > xmlschema-dev@w3.org > March 2006

RE: two elements with the same name but different types

From: Michael Kay <mike@saxonica.com>
Date: Mon, 20 Mar 2006 13:50:37 -0000
To: "'andrew welch'" <andrew.j.welch@gmail.com>, <xmlschema-dev@w3.org>
Message-ID: <E1FLKmS-0006Da-FS@maggie.w3.org>

The subject line says it all:

>two elements with the same name but different types

Sorry: no can do.

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: xmlschema-dev-request@w3.org 
> [mailto:xmlschema-dev-request@w3.org] On Behalf Of andrew welch
> Sent: 20 March 2006 11:56
> To: xmlschema-dev@w3.org
> Subject: two elements with the same name but different types
> 
> 
> Hi,
> 
> I'm trying to model the following in a schema:
> 
> <head>
>   <title>the title<title>
>   <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
>   <meta name="fixed_1" content="variable"/>
>   <meta name="fixed_2" content="variable"/>
>   <meta name="fixed_3" content="variable"/>
>   <meta name="fixed_4" content="fixed_5"/>
> </head>
> 
> Here the first <meta> has two fixed value attributes, then the
> following three have fixed name attributes (which are all different
> fixed values) but any content attributes.  The last meta contains two
> fixed value attributes, like the first.
> 
> Is this possible to model with XML Schema?  Currently I have:
> 
> <xs:element name="head">
>   <xs:complexType>
>     <xs:sequence>
>       <xs:element ref="title"/>		
> 					
>       <xs:element name="meta">
>         <xs:complexType>
>           <xs:attribute name="http-equiv" type="xs:string"
> fixed="Content-Type"/>
>           <xs:attribute name="content" type="xs:string"
> fixed="text/html; charset=utf-8"/>
>         </xs:complexType>
>       </xs:element>
> 					
>       <xs:element name="meta">
>         <xs:complexType>
> 	  <xs:attribute name="name" type="xs:string" fixed="fixed_1"/>
>           <xs:attribute name="content" type="xs:string"/>
>         </xs:complexType>
>       </xs:element>
> 					
>       <xs:element name="meta">
>         <xs:complexType>
>           <xs:attribute name="name" type="xs:string" fixed="fixed_2"/>
>           <xs:attribute name="content" type="xs:string"/>
> 	</xs:complexType>
>       </xs:element>
> 
> ....
>       <xs:element name="meta">
>         <xs:complexType>
>           <xs:attribute name="name" type="xs:string" fixed="fixed_4"/>
>           <xs:attribute name="content" type="xs:string" 
> fixed="fixed_5"/>
> 	</xs:complexType>
>       </xs:element>
> 
> I read that this is ok as long as the element definitions are local
> and not global, but I still get the error:
> 
> "two elements with the same name <meta> but different types appear in
> the content model"
> 
> The other problem is defining when "fixed_4" is the value for the name
> attribute, "fixed_5" must be the value for the content attribute. 
> Isn't this a co-occurrence constraint?  In which case it's not
> possible to do this in XML Schema...?
> 
> I'm writing this schema within an <xsl:import-schema> element in XSLT
> 2.0, so it's not possible to use Relax NG here.  This is to validate
> the output as it's being generated by the transform... the alternative
> is to do the validation as a seperate step in the pipeline, which
> might be the only option....
> 
> thanks
> andrew
> 
> 
> 
Received on Monday, 20 March 2006 13:50:58 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:14:54 GMT