Reputation: 23224
As far as I can see the following XML should pass validation against the XSD beneath it because all of the "symbolName" values are unique. However when I try to validate it I get the following error
The field 'symbolName' of identity constraint 'xxxxxxsdfsdfsdfsdf' matches 9 times within the scope of element 'symbols'
<levelSymbolCollection>
<levelName>Simple</levelName>
<symbols>
<symbolName>Letter-A</symbolName>
<symbolName>Letter-B</symbolName>
<symbolName>Letter-C</symbolName>
<symbolName>Letter-D</symbolName>
<symbolName>Letter-E</symbolName>
<symbolName>Letter-F</symbolName>
<symbolName>Letter-I</symbolName>
<symbolName>Letter-O</symbolName>
<symbolName>Letter-U</symbolName>
</symbols>
</levelSymbolCollection>
<xs:element name="levelSymbolCollection" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="levelName" type="requiredString"/>
<xs:element name="symbols">
<xs:complexType>
<xs:sequence>
<xs:element name="symbolName" type="requiredString" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:unique name="xxxxxxxxsdfsdfsdfsdf">
<xs:selector xpath="symbols"></xs:selector>
<xs:field xpath="symbolName"></xs:field>
</xs:unique>
</xs:element>
Upvotes: 0
Views: 108
Reputation: 23224
Add "symbolName" to the selector, set the field xpath="."
<xs:element name="levelSymbolCollection" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="levelName" type="requiredString"/>
<xs:element name="symbols">
<xs:complexType>
<xs:sequence>
<xs:element name="symbolName" type="requiredString" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="xxxxxxxxsdfsdfsdfsdf">
<xs:selector xpath="symbolName"></xs:selector>
<xs:field xpath="."></xs:field>
</xs:unique>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Upvotes: 1
Reputation: 163272
You clearly have some misunderstanding of the meaning of xs:unique. Your declaration says that every symbolName must have a unique value, and indeed, every symbolName does have a unique value.
Upvotes: 0