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".
Ceci est invalide, à cause de "unbounded".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
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.
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...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
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.
Partager