XML Schéma - une liste de chaîne de caractères
L'élément était d'avoir un type "d'une liste de chaînes" et il peut être 0
ou plusieurs occurrences de ce type d'informations. Donc, ce que j'ai fait:
<xs:element name="xxx" type="ooo" />
<xs:simpleType name="ooo">
<xs:list itemType="xs:string" />
</xs:simpleType>
Je crois que c'est correct, mais
où dois-je mettre minOccur
et maxOccur
ici?
- qu'entendez-vous par "liste des chaînes"? Voulez-vous 0 pour x occurrences de l'élément "xxx"? Ou voulez-vous un seul "xxx" élément qui a une seule chaîne délimitée vous pouvez l'analyser? Ou voulez-vous un seul "xxx" élément qui contient de 0 à x des éléments d'enfant (efficacement votre liste)
- psubsee2003 si vous n'avez pas l'esprit pourriez-vous me donner des exemples de tous les possibles de l'interprétation possible?
InformationsquelleAutor Jane Doe | 2012-09-19
Vous devez vous connecter pour publier un commentaire.
Votre question est malheureusement pas clair parce que cela pourrait signifier plusieurs choses.
Une interprétation possible est que vous voulez un élément "xxx" de se produire entre 0 et x fois. Ce qui est fait par la définition d'une séquence à l'intérieur d'un élément racine.
Vous ne pouvez pas spécifier minOccurs et maxOccurs sur l'élément racine même si, comme il peut y avoir seulement 1 élément racine d'un document XML. Mais vous pouvez définir une séquence en tant qu'enfant de l'élément racine, que ce ce qui est fait dans l'exemple ci-dessus.
Maintenant, si vous vouliez "xxx" à la racine de votre élément, vous pouvez effectivement faire exactement la même chose. c'est exactement le même sauf qu'au lieu d'un élément appelé "root", vous avez maintenant un élément appelé "xxx" et les éléments enfants sont appelés à autre chose avec un type de "ooo"
Dans votre exemple, l'utilisation de la liste "type" veut dire ce que je pense, vous pensez que cela signifie. Un type de liste dans un XSD n'est pas de définir une séquence d'éléments, mais un seul élément qui peut avoir une liste de valeurs séparées par un espace.
Le XML résultant de ce schéma defination devrait ressembler à ceci:
Le XML est effectivement une surabondance de la liste de chaînes de caractères de longueur quelconque séparés par un espace. Vous pouvez définir un type pour la liste qui hérite de
xs:string
pour restreindre les types de valeurs, mais je ne suis pas au courant d'une méthode pour limiter la longueur.Et enfin, je pense que vous voulez accomplir est proche de l'un de mes suggestions ci-dessus avec "xxx", "xxx-enfant", mais juste de reformater où la séquence est définie.
Et le XML résultant serait comme ceci:
Et il existe d'autres variations sur la dernière option, tels que le déplacement de la
minOccurs="0" maxOccurs="unbounded"
de la<xs:sequence>
à "l'enfant" de l'élément. Dans votre exemple, il ne sera pas question parce que les deux définitions résultat serait exactement le même XML. Mais si vous aviez 2 éléments d'enfant, il serait signifier différentes choses:Entraînerait un XML comme ceci (la séquence de l'enfant1 suivre par enfant2 serait répété x fois):
où, comme
entraînerait un XML comme ceci (enfant1 voudrais répéter x fois, suivi par enfant2 répétant y temps):
Pour éviter d'obtenir un objet, qui dispose d'un champ, qui dispose d'une liste de chaînes, vous souhaiterez peut-être utiliser plus simple:
puis dans la classe générée, vous obtiendrez un champ qui contient directement la liste (et non un objet)
Voici un exemple de code que j'ai trouvé qui peut vous aider: