RE: Question about the unique element declaration inside the model groups

 

	I meet a case when I do the schema testing, which as the following:

	 

	<xs:schema> 
	         <xs:complexType name="One">
	                   <xs:sequence>
	                     <xs:element name="elem1" type="xs:string"
fixed="abc"/>
	                     <xs:element name="elem1" type="xs:string"
fixed="123"/>
	                   </xs:sequence>
	         </xs:complexType>
	</xs:schema>

	 

	There are two elements with the same name "elem1" and the same
target namespace
	inside the <xs:sequence>. Is this allowed? 

Yes, provided (a) that the elements have the same type, and (b) that you
don't violate the UPA constraint (which would be violated in this example if
the first element were optional). This example should be OK.

	 

	I read the spec and get the description which says: 

	3.15.6 Constraints on Schemas as a Whole  

	Schema Component Constraint: Schema Properties Correct

	2 Each of the {type definitions}
<http://www.w3.org/TR/xmlschema-1/#type_definitions#type_definitions> ,
{element declarations}
<http://www.w3.org/TR/xmlschema-1/#element_declarations#element_declarations
> , {attribute group definitions}
<http://www.w3.org/TR/xmlschema-1/#attribute_group_definitions#attribute_gro
up_definitions> , 

	{model group definitions}
<http://www.w3.org/TR/xmlschema-1/#model_group_definitions#model_group_defin
itions>  and {notation declarations}
<http://www.w3.org/TR/xmlschema-1/#notation_declarations#notation_declaratio
ns>  must not contain two or more 

	schema components with the same {name} and {target namespace}.

	 

	I think this case violate this rule. 


These are local element declarations. The rule applies only to global
element declarations (<xs:element> as a child of <xs:schema>).

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

Received on Thursday, 25 January 2007 10:24:29 UTC