J'ai le code XSD suivant:Validation XML avec XSD: comment éviter de se soucier de la séquence des éléments?
<xsd:complexType name="questions">
<xsd:sequence>
<xsd:element name="location" type="location"/>
<xsd:element name="multipleChoiceInput" type="multipleChoiceInput" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="textInput" type="textInput" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="pictureInput" type="pictureInput" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
Le problème ici est: l'emplacement des éléments, multipleChoiceInput, etc. doit apparaître dans le même ordre dans lequel ils sont déclarés. Je ne veux pas que cela arrive, je veux que, dans le processus de validation, la séquence ne soit pas pertinente. Comment puis-je atteindre cet objectif?
Une autre possibilité que j'ai essayé a été:
<xsd:complexType name="questions">
<xsd:choice maxOccurs="unbounded">
<xsd:element name="location" type="location"/>
<xsd:element name="multipleChoiceInput" type="multipleChoiceInput" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="textInput" type="textInput" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="pictureInput" type="pictureInput" minOccurs="0" maxOccurs="1"/>
</xsd:choice>
</xsd:complexType>
Dans cet exemple, la séquence n'a pas d'importance plus, et je peux avoir tant d'éléments que je veux (ce « tout » ne permettrait pas moi de faire). Mais j'ai toujours le problème avec les min- et maxOccurs. Dans cet exemple, je pourrais avoir autant de "pictureInput" que possible, quelle est la contrainte que je voudrais avoir soit 0 ou 1.
Merci beaucoup d'avoir aidé!
Merci d'avoir répondu à Yok, mais « tous » ne peut pas être utilisé dans mon cas, la cause "all" nécessite que l'élément apparaisse seulement une fois (min- et maxOccurs ne peuvent accepter que les valeurs 0 et 1). – jcborges
Ensuite, peut-être '' est votre ami. –
Tomalak
Ya dans ce cas, tout doit être utilisé. Mettra également à jour la réponse. – YoK