
Olumide wrote: Hi,
I'd appreciate help figuring out why the schema below validates the following xml file even though it the id='3' is not unique.
<xs:element name="a"> <xs:complexType> <xs:attribute name="id" use="required"/> </xs:complexType> <xs:unique name="uniqueId-a"> <xs:selector xpath="*"/> <xs:field xpath="@id"/> </xs:unique> </xs:element>
Well, the value of the attribute @id is unique within the scope of each element a. What you're looking for, most likely, is to have unique values for @id of all elements a children of an Item, an similar for elements b. In this case, the following schema should do that: <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="Item"> <xs:complexType> <xs:sequence maxOccurs="unbounded"> <xs:choice> <xs:element name="a"> <xs:complexType> <xs:attribute name="id" use="required"/> </xs:complexType> </xs:element> <xs:element name="b"> <xs:complexType> <xs:attribute name="id" use="required"/> </xs:complexType> </xs:element> </xs:choice> </xs:sequence> </xs:complexType> <xs:unique name="uniqueId-a"> <xs:selector xpath="a"/> <xs:field xpath="@id"/> </xs:unique> <xs:unique name="uniqueId-b"> <xs:selector xpath="b"/> <xs:field xpath="@id"/> </xs:unique> </xs:element> </xs:schema> Regards, -- Florent Georges http://fgeorges.org/ http://h2oconsulting.be/