2010-11-22 12 views
1

Was muss ich tun, ist dieses Stück xml zu überprüfen:XSD: Same Element, verschiedene Attribute

<token type="email">qwqe12e12e1</token> 
<token type="mobile">12e12313121w</token> 

Ich weiß, wie ein solches Element zu validieren mit dem Attribut und Inhalt, aber meine Frage ist, wie Zeichen zu verhindern Geben Sie zB E-Mail mehrmals vorkommen? Ich brauche beide Token, aber jeder einzelne Token kann nur einmal vorkommen.

Antwort

0

das folgende XML-Beispiel Gegeben:

<tokens> 
    <token type="email">qwqe12e12e1</token> 
    <token type="mobile">12e12313121w</token> 
    <token type="mobile">1234</token> 
</tokens> 

und die folgende XSD:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="tokens"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="token" maxOccurs="unbounded" /> 
     </xs:sequence> 
    </xs:complexType> 
    <!-- token[type] to only occur once --> 
    <xs:unique name="type"> 
     <xs:selector xpath="token" /> 
     <xs:field xpath="@type" /> 
    </xs:unique> 
    </xs:element> 

    <xs:element name="token"> 
    <xs:complexType> 
     <xs:simpleContent> 
     <xs:extension base="xs:string"> 
      <xs:attribute name="type" use="required"> 
      <xs:simpleType> 
       <xs:restriction base="xs:string"> 
       <xs:enumeration value="email"/> 
       <xs:enumeration value="mobile"/> 
       </xs:restriction> 
      </xs:simpleType> 
      </xs:attribute> 
     </xs:extension> 
     </xs:simpleContent> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

Die Validierung wird auf dem zweiten "mobilen" Token-Typ fehlschlagen.

Wenn der zweite "mobile" Tokentyp aus der XML-Eingabe entfernt wird, ist die Validierung erfolgreich.

Verwandte Themen