[XSD] Créer une séquence non ordonnée.
Bonjour,
XSD me donne pas mal de fil à retordre... J'aimerais simplement créer des "sequences" (si j'ose dire) non ordonnées. Et c'est galère.
Solution "all":
C'est ultra limité, vu qu'on ne peut mettre que des elements dedans. Et surtout, seule une cardinalité de 0 ou 1 est acceptée, il est donc impossible de mettre maxOccurs="unbounded".
Code:
1 2 3 4 5 6 7
|
<xs:complexType name="AllComplexType">
<xs:all>
<xs:element name="UniqueElement" type="MyfirstType" minOccurs="1" maxOccurs="1" />
<xs:element name="MultipleElement" type="MysecondType" minOccurs="0" maxOccurs="unbounded" />
</xs:all>
</xs:complexType> |
Ceci est invalide, à cause de "unbounded".
Solution "choice":
Choice me semble donc (pour l'instant) être la seule solution pour pouvoir créer une séquence non ordonnée, si certains éléments peuvent apparaitre plusieurs fois. Cependant, ça présente une énorme problématique. Vu que c'est le choix en lui-même que l'on doit mettre "unbounded", tous les éléments peuvent apparaitre à plusieurs reprises: il n'est alors plus possible de garantir que certains éléments soient uniques.
Code:
1 2 3 4 5 6 7
|
<xs:complexType name="ChoiceComplextype">
<xs:choice maxOccurs="unbounded" >
<xs:element name="UniqueElement" type="UniqueElement" minOccurs="1" maxOccurs="1" />
<xs:element name="MultipleElement" type="MysecondType" minOccurs="0" maxOccurs="unbounded" />
</xs:all>
</xs:complexType> |
Si je ne me trompe pas, le schema validera un XML où "UniqueElement" apparait plusieurs fois... (De même si il n'apparait pas du tout...)
Bref, est-il vraiment si difficile de déclarer une séquence non-ordonnée, avec certains éléments qui apparaissent une seule fois, et d'autres qui peuvent apparaitre plusieurs fois?
Merci d'avance.