xsd - séquence vs choix
Je suis confus sur le Schéma XML de la séquence
Selon w3schools.com,
The sequence element specifies that the child elements
must appear
in a sequence. Each child element can occur from
0
to any number of times.
Si chaque élément doit apparaître, comment peut-il se produire 0 fois? Ne serait-ce pas briser le doit apparaître règle?
Et une autre chose, quelle est la différence entre
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="choiceA" type="xs:string" >
<xs:element name="choiceB" type="xs:string" />
</xs:choice>
et ce:
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="choiceA" type="xs:string" >
<xs:element name="choiceB" type="xs:string" />
</xs:sequence>
ne pouvez-vous pas mettre n'importe quel nombre de chaque élément de ces deux cas? Est-il une différence?
Vous devez vous connecter pour publier un commentaire.
Les éléments à l'intérieur d'une séquence doivent apparaître dans l'ordre spécifié dans le schéma. Mais si un élément est défini avec minOccurs="0" alors il n'a pas à apparaître.
Voici un exemple similaire à celui qui est l'un des w3schools.com didacticiel. J'ai juste ajouté le minOccurs="0" pour le prenom de l'élément.
Dans ce cas, valide les éléments xml basé sur cette définition serait
ou vous retirez le prénom élément parce qu'il a un minOccurs="0"
cependant on ne peut pas mélanger l'ordre des éléments. Donc, ce serait invalide.
Quant à la différence entre le choix et la séquence. Le choix de l'élément ne permet de l'apparaître des éléments. Donc, le choix pourrait avoir choiceA ou choiceB mais pas les deux. Alors que la façon dont la séquence est définie pour chaque élément de la séquence va avoir à la fois un choiceA et un choiceB.
malheureusement, il y a une autre manière d'utiliser au choix - en cas de 0 pour illimité, il est possible d'avoir plusieurs éléments du même type que bien qu'aucun.
exemple:
acceptera XML suivant l'une:
et acceptera XML suivant deux: