2012-06-22 7 views
7

Ich habe eine XML-und Xsd-Datei, die beide korrekt überprüfen (getestet unter http://xsdvalidation.utilities-online.info/).

Die XML-Datei wird jedoch nicht anhand der xsd validiert. Ich denke, das liegt daran, dass ich complexType-Elemente in der xsd falsch verschachtelt, verglichen mit der XML. Das äußere Element von people scheint das Problem zu verursachen ...

Hier ist die xml:
Wie schachtest du complexType-Elemente in einem xsd?

<?xml version = "1.0"?> 

<people> 
    <person> 
     <firstname>Joe</firstname> 
     <lastname>Schmoe</lastname> 
    </person> 

    <person> 
     <firstname>Cletus</firstname> 
     <lastname>Jenkins</lastname> 
    </person> 
</people> 

... und hier ist die xsd:

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

    <xs:element name = "people"> 
     <xs:complexType> 
      <xs:sequence> 

       <xs:element name = "person"> 
        <xs:complexType> 
         <xs:sequence> 

          <xs:element name = "firstname" type = "xs:string" /> 
          <xs:element name = "lastname" type = "xs:string" /> 

         </xs:sequence> 
        </xs:complexType> 
       </xs:element> 

      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 

</xs:schema> 

Antwort

10

Fügen Sie maxoccurs="unbounded" zu dem Element mit dem Namen "Person" hinzu. Es ist eine Abfolge von einem oder mehreren Personenelementen.

+0

Hey, du hast Recht, ignorieren meine Antwort :-) –

+0

Ah, das ist eine einfache Lösung, Dank! –

2

Versuchen Sie dies für Ihre XSD:

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

    <xs:element name="people" type="people"/> 

    <xs:complexType name="people"> 
     <xs:sequence> 
      <xs:element name="person" type="person" maxOccurs="unbounded" minOccurs="0"/> 
     </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="person"> 
     <xs:sequence> 
      <xs:element name="firstname" type="xs:string" maxOccurs="1" minOccurs="1"/> 
      <xs:element name="lastname" type="xs:string" maxOccurs="1" minOccurs="1"/> 
     </xs:sequence> 
    </xs:complexType> 

</xs:schema> 
+0

Übrigens, ich habe einige Beispiele für die Anzahl der Vorkommen bestimmter Elemente hinzugefügt, aber natürlich können diese abhängig von Ihren Anforderungen geändert oder weggelassen werden. –

+0

Das ist eine interessante Lösung @JonoB ... ist es immer eine bessere Methode, eine Einschränkung als Attribut eines Elements hinzuzufügen, anstatt die ' ... 'Tags? –

Verwandte Themen