Announcement

Collapse
No announcement yet.

Eindeutiger Eintrag in Sequence (Unique(Key)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Eindeutiger Eintrag in Sequence (Unique(Key)

    Hallo Zusammen,

    auch nach längerem Durchforsten von Google, W3C und diversen try'n'error-Versuchen habe ich meine xsd nicht richtig zum Laufen bekommen.
    Ziel ist es in einer Liste einen eindeutigen Schlüssel ("SEQ_A") zu gewährleisten. Meine aktuelle Version der xsd ist laut XMLSPY zwar valid, versagt aber bei der Prüfung auf Eindeutigkeit:

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
       <xs:element name="AAA">
          <xs:complexType>
             <xs:sequence>
                <xs:element name="BBB" maxOccurs="unbounded">
                   <xs:complexType>
    	    <xs:sequence>						
    	       <xs:element name="SEQ_A" type="xs:integer"/>
    	       <xs:element name="SEQ_B" type="xs:integer"/>
    	       <xs:element name="SEQ_C" type="xs:string"/>
    	    </xs:sequence>			
    	 </xs:complexType>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ -->			
    	 <!-- Versuch mit unique -->
    	 <!-- xs:unique name="unique_errorcode">
       	    <xs:selector xpath="BBB"/>
    	    <xs:field xpath="SEQ_A"/>
    	 </xs:unique--> 
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ -->
      	 <!-- Versuch mit key -->
      	 <xs:key name="CCCKey">
        	    <xs:selector xpath="BBB"/>
        	    <xs:field xpath="@SEQ_A"/>
      	 </xs:key>					
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ -->
                </xs:element>				
             </xs:sequence>
          </xs:complexType>
       </xs:element>
    </xs:schema>
    Weiß jemand, was ich falsch mache und wie ich es besser machen könnte?
    Bin für jede Hilfe dankbar!!!

    Viele Grüße aus Mainhatten

    Markus

  • #2
    *HEUREKA*

    Nach weiterem t'n'r hier die Lösung (der Unique-Eintrag muss außerhalb des Elements liegen, welches als Selector angegeben wird - eigentlich logisch...):

    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="AAA">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="BBB" maxOccurs="unbounded">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="SEQ_A" type="xs:integer"/>
    <xs:element name="SEQ_B" type="xs:integer"/>
    <xs:element name="SEQ_C" type="xs:string"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:sequence>
    </xs:complexType>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <xs:unique name="SEQ_A_Unique">
    <xs:selector xpath="BBB"/>
    <xs:field xpath="SEQ_A"/>
    </xs:unique>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ -->
    </xs:element>
    </xs:schema>

    Comment

    Working...
    X