J'ai une restriction pour définir les valeurs de l'élément. Selon les règles que je veux définir, l'ensemble de valeurs suivant est possible pour mon élément.Limitation de valeurs dans un groupe d'éléments via XML Schema
<tags>
<tag>One of Audio, Video, Others.</tag>
<tag>For Audio, either Label or Record, For Video, either Studio or Producer, For Others this tag will be empty.</tag>
<tag>One of English, Spanish, French</tag>
</tags>
Maintenant, je aurais pu définir une restriction de modèle regex dans mon XSD pour un seul élément tags si elle était delimiter le texte brut (,) séparés des valeurs qui pourraient être
<element name="tags">
<simpleType>
<restriction base="string">
<pattern value="(Audio, (Label|Record)|Video, (Studio|Producer)|Others), (English|Spanish|French)" />
</restriction>
</simpleType>
</element>
Mais depuis que j'ai séquence d'éléments avec le même nom tag
, je ne suis pas sûr qu'il est même possible de restreindre un tel moyen via XSD. Je sais que je peux restreindre les valeurs via enumeration
mais je ne peux pas les grouper. Je veux suivant XML pour valider
<tags>
<tag>Audio</tag>
<tag>Record</tag>
<tag>English</tag>
</tags>
Et suite à l'échec de validation
<tags>
<tag>Others</tag>
<tag>Record</tag>
<tag>English</tag>
</tags>
Mon cas réel est beaucoup plus complexe avec des restrictions imbriquées, mais je quelqu'un peut aider dans un état ci-dessus, je pense que je peux prenez-le comme référence et résolvez mon problème.
Bonne réponse - le problème est la conception du langage et non l'implémentation du schéma. Si cela est vraiment nécessaire, schematron serait la seule solution possible. –
C'était vraiment une bonne réponse et j'aurais pu faire la même chose, mais malheureusement, je ne peux pas changer la structure de à différents éléments. Je dois en quelque sorte valider les XML entrants du fournisseur via XSD seulement. Et seule la solution possible semble opter pour un élément de chaîne délimité restreint par un motif regex (celui que j'ai donné par exemple.) Si la séquence ne peut pas être restreinte de cette façon. –