J'essaie de développer une grammaire XSD en fonction d'un fichier XML donné. Le fichier XML donné itemList.xml est illustré comme ci-dessous.
<?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>
Le fichier itemList.xsd que j'ai développé est illustré ci-dessous.
<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>
Lorsque je valide le XML par rapport au XSD en utilisant ce validateur XML , j'obtiens l'erreur
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'.
Il semble que je devrais réécrire mon complexType
dans itemList.xsd , mais je ne sais pas quoi faire. Un grand merci à tous ceux qui pourraient aider.
Votre itemList se compose actuellement d'un seul article; c'est parce que la cardinalité des particules par défaut est 1 (minOccurs = maxOccurs = 1).
Si vous en souhaitez plusieurs, vous devez ajouter l'attribut maxOccurs avec le numéro approprié; pour illimité, utilisez maxOccurs = "illimité" ... comme ceci:
<element name="item" type="co:itemType" maxOccurs="unbounded"/>
Dans mon cas, j'ai reçu ce message car l'ordre des champs dans mon XML ne correspondait pas à ceux de mon XSD, j'avais inversé par erreur l'ordre des deux derniers champs.
Bien que ce ne soit pas la situation dans la question, j'ai pensé que cela pourrait aider d'autres qui sont attirés par cette question par le titre (sans doute, je referai référence à cette question à l'avenir quand j'oublierai ce que je viens d'apprendre).