Étant donné une disposition XML comme celle-ci, j'essaie de créer un schéma XSD pour le valider.Comment créer un schéma pour une liste non ordonnée de nœuds XML, avec des contraintes d'occurrence
<RootNode>
<ChildA />
<ChildC />
<ChildB />
<ChildB />
<ChildA />
</RootNode>
Les exigences sont les suivantes:
- Childa, ChildB et ChildC peut se produire dans l'ordre. (
<xs:sequence>
inadapté) - ChildA est obligatoire mais peut apparaître plusieurs fois.
- ChildB est optionnel et peut apparaître plusieurs fois.
- ChildC est optionnel et peut apparaître une fois seulement.
La technique que je l'habitude d'utiliser pour créer une liste non ordonnée de nœuds est d'utiliser un <xs:choice maxOccurs="unbounded">
avec chaque nœud possible dans la liste, mais je suis incapable de créer la contrainte sur Childa et maxOccurs="1"
contraint sur ChildC. (Le nombre d'occurrences du choix a préséance sur celles des éléments ici).
<xs:element name="RootNode">
<xs:complexType>
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="ChildA" minOccurs="1"/>
<xs:element name="ChildB" />
<xs:element name="ChildC" maxOccurs="1"/>
</xs:choice>
</xs:complexType>
</xs:element>
Je ne pense pas que le schéma XML actuel est capable de faire ce moment. Avez-vous vérifié dans d'autres systèmes de validation, comme RelaxNG (www.relaxng.org) peut-être? –
Question connexe avec, au moment de l'écriture de ce, de meilleures réponses: https://stackoverflow.com/questions/2290360/xsd-how-to-allow-elements-in-any-order-any-number-of-times/12012599 – Flow