Schéma XSD : comment définir une séquence d'éléments non ordonnés

publié le

Lors de la définition d'une séquence, les éléments sont ordonnés dans le même ordre que leur déclaration. Mais il peut être utile d'avoir une séquence d'éléments non ordonnés dans un schéma XSD.

Le schéma suivant définit une liste d'éléments non ordonnés A, B ou C:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:element name="SEQUENCE" type="sequenceType"/>
 <xs:complexType name="sequenceType">
  <xs:sequence>
  <xs:choice maxOccurs="unbounded" minOccurs="1">
    <xs:element name="A" type="xs:string"/>
    <xs:element name="B" type="xs:string"/>
    <xs:element name="C" type="xs:string"/>
  </xs:choice>
  </xs:sequence>
 </xs:complexType>
</xs:schema>

L'astuce ici est d'utiliser une balise choice dans la séquence, comme cela, un ou plusieurs éléments peuvent apparaîtrent dans n'importe quel ordre.
Toutes les séquences suivantes sont validées par le schéma défini précédemment:

<SEQUENCE>
<A/>
</SEQUENCE>

<SEQUENCE>
<A/>
<C/>
<B/>
</SEQUENCE>

<SEQUENCE>
<A/>
<A/>
<C/>
</SEQUENCE>

comments powered by Disqus