XSD: valeur par défaut d'un élément manquant
Est-il possible de définir une valeur par défaut pour un élément manquant dans un Schéma XML. J'ai le code suivant:
<xs:element name="protocol" nillable="false" minOccurs="0" default="ftp">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="ftp"/>
<xs:enumeration value="webdav"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Si j'ai dans le fichier XML
<protocol>ftp</protocol>
ou
<protocol>webdav</protocol>
il valide et je obtenir la bonne valeur.
Si j'ai dans le fichier XML
<protocol></protocol>
il valide également et j'obtiens la valeur par défaut de ftp.
Mes recherches montrent que les valeurs d'attribut par défaut s'appliquent lorsque les attributs sont manquantes, et l'élément par défaut les valeurs s'appliquent lorsque les éléments sont vides. Est-il possible d'avoir une valeur par défaut pour un élément manquant?
Ce qui concerne
rambius
minOccurs
devrait être de 1 alorsJe veux l'élément protocole facultatif, mais si elle est manquante, il convient de ftp. On dirait qu'il n'est pas possible et je doit traiter que de la logique dans l'application, pas dans le schéma.
OriginalL'auteur rambius | 2013-09-09
Vous devez vous connecter pour publier un commentaire.
Pas. XSD ne prévoit pas que.
Vous pouvez spécifier la valeur par défaut d'un élément.
Mais une fois qu'il est absent (lorsque cela est permis par le modèle de contenu de son parent),
toute demande à cet élément doit renvoyer une chaîne vide ou null (ou juste une erreur).
L'élément manquant est inexistante élément!
Pour les attributs, c'est possible, parce que les attributs sont beaucoup plus simple.
Tous les attributs d'un élément constituent effectivement un non-ordonnée ensemble de nommée des valeurs simples. Il n'y a pas une sorte d'attribut de l'arbre (avec la variable de la structure à l') fixé à l'élément parent.
Mais avec des éléments, les choses sont beaucoup plus complexes.
Si quelque chose "par défaut" sur les éléments manquants ont été autorisés, qui serait la cause de beaucoup d'ambiguïtés. Par exemple, une sorte de "contenu par défaut" doit être spécifiée, alors,
ce qui serait une séquence d'éléments évoqués automatiquement à la place de la vacuité...
ou même un certain nombre de "valeur par défaut" chaque évoquée lorsque seuls certains éléments sont spécifiés explicitement et d'autres doivent les compléter de manière implicite (par défaut).
....
Eh bien, si vous pensez que plus loin, les choses sont plus époustouflant complexe.
Une autre langue doivent être créés! Mais dans quel but?
OriginalL'auteur ColdFusion