Gimme Shelter: Schema Unique Xpath

Beitrag lesen

Im Xml-Dokument soll der Wert des Elemtes DREI innerhalb von ZWEI nicht doppelt vorkommen. Als Lösung kommt meineserachtens nur unique in der Schemadatei in Frage. Allerdings komme ich nicht auf die Lösung. Hier eine Beispiel-Xml-Datei (ungültig da mit doppelten b):
<?xml version="1.0" encoding="UTF-8"?>
<EINS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="EINS.xsd">
<ZWEI>
  <DREI>a</DREI>
  <DREI>c</DREI>
</ZWEI>
<ZWEI>
  <DREI>a</DREI>
  <DREI>b</DREI>
  <DREI>b</DREI><!--Fehler:doppelter Wert in ZWEI-->
</ZWEI>
</EINS>

Die Schema-Datei ist noch falsch. :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="EINS">
  xs:complexType
   xs:sequence
    <xs:element ref="ZWEI" maxOccurs="unbounded"/>
   </xs:sequence>
  </xs:complexType>
</xs:element>
<xs:element name="ZWEI">
  xs:complexType
   xs:sequence
    <xs:element ref="DREI" maxOccurs="unbounded"/>
   </xs:sequence>
  </xs:complexType>
  <xs:unique name="ConstraintEins">
   <xs:selector xpath="."/>
   <xs:field xpath="DREI"/>
  </xs:unique>
</xs:element>
<xs:element name="DREI" type="xs:string"/>
</xs:schema>

Mit XMLSpy bekomme ich schon beim ersten ZWEI-Element folgende nicht gewünschte Fehlermeldung (die Schema-Datei ist also noch falsch):
"The field "DREI" of identity contraint 'ContraintEins" matches 2 times within the scope of element

Das gleiche auch bei http://apps.gotdotnet.com/xmltools/xsdvalidator/Default.aspx :
Validation error:
<?xml version="1.0" encoding="UTF-8"?>
<EINS xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "EINS.xsd">
<ZWEI>
  <DREI>b</DREI>
  <DREI>c
Error at (5,12): The field 'DREI' is expecting at the most one value. An error occurred at , (5, 12).
</DREI>
</ZWEI>
<ZWEI>
  <DREI>a</DREI>
  <DREI>b
Error at (9,12): The field 'DREI' is expecting at the most one value. An error occurred at , (9, 12).
</DREI>
  <DREI>b
Error at (10,12): The field 'DREI' is expecting at the most one value. An error occurred at , (10, 12).
</DREI><!--Fehler:doppelter Wert in ZWEI-->
</ZWEI>
</EINS>

Ich bekomme das mit Unique in bei DIESEM Problem absolut nicht gebacken.