2014-01-24 18 views
12

Ich versuche eine XSD-Grammatik gemäß einer bestimmten XML-Datei zu entwickeln. Die angegebene XML-Datei itemList.xml wird wie folgt angezeigt.XML-Validierung: "An dieser Stelle wird kein untergeordnetes Element erwartet"

<?xml version="1.0" encoding = "utf-8"?> 
<itemList 
    xmlns="http://www.w3schools.com" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.w3schools.com itemList.xsd" > 
    <item>spoon</item> 
    <item>knife</item> 
    <item>fork</item> 
    <item>cup</item> 
</itemList> 

Die itemList.xsd Datei, die ich wie folgt entwickelt.

<schema 
    xmlns="http://www.w3.org/2001/XMLSchema" 
    xmlns:co="http://www.w3schools.com" 
    targetNamespace="http://www.w3schools.com" 
    elementFormDefault="qualified"> 
<simpleType name="itemType"> 
    <restriction base="string"/> 
</simpleType> 
<complexType name="itemListType"> 
    <sequence> 
     <element name="item" type="co:itemType"/> 
    </sequence> 
</complexType> 
<element name="itemList" type="co:itemListType"/> 
</schema> 

Wenn ich die XML gegen XSD mit this XML validator bestätigen, erhalte ich die Fehler

Cvc-complex-type.2.4.d: Invalid Content Was Found Starting With Element 'item'. No Child Element Is Expected At This Point.. Line '6', Column '12'. 

Es scheint, dass ich meine complexType in itemList.xsd umschreiben sollte, aber ich bin nicht sicher, was ist zu tun. Vielen Dank an alle, die helfen konnten.

Antwort

22

Ihre Artikelliste besteht derzeit aus genau einem Artikel; Das liegt daran, dass die Standard-Partikel-Kardinalität 1 ist (minOccurs = maxOccurs = 1).

Wenn Sie mehrere wünschen, müssen Sie das Attribut maxOccurs mit der entsprechenden Zahl hinzufügen. für unbegrenzt verwenden maxOccurs = „unbounded“ ... wie so:

<element name="item" type="co:itemType" maxOccurs="unbounded"/> 
8

In meinem Fall habe ich diese Nachricht erhalten, weil die Reihenfolge der Felder in meinem XML, nicht diejenigen, die in meinem XSD übereinstimmen hatte ich fälschlicherweise umgekehrt die Reihenfolge der letzten beiden Felder.

Während dies nicht die Situation in der Frage ist, dachte ich, dass es anderen helfen kann, die sich durch den Titel zu dieser Frage hingezogen fühlen (zweifellos werde ich diese Frage in der Zukunft erneut erwähnen, wenn ich vergessen habe, was ich gerade gelernt habe) .

Verwandte Themen