[XML Schema] Ajout d'attributs
Gantark
Messages postés
3
Statut
Membre
-
ftiercel Messages postés 120 Statut Membre -
ftiercel Messages postés 120 Statut Membre -
Bonjour,
Je suis en train de rédiger un schema XSD pour un fichier .XML.
Je souhaiterais ajouter une contrainte pour ne pouvoir n'assigner des attributs que si un autre a une valeur particulière, ou si ce n'est pas possible, au moins ne pas pouvoir assigner certains attributs si d'autres le sont déjà.
Voici le bout de code :
Dans l'idéal, je souhaiterais que l'on ne puisse assigner ces attributs :
Si ce n'est pas possible, je souhaiterais que si on assigne les trois attributs ci-dessus, on ne puisse pas assigner le dernier, et vice versa.
Pour la seconde solution, j'ai pensé à choice, mais je ne peux pas l'insérer à cet endroit. Je me demande si ce n'est pas à cause de la séquence qui a déjà été déclarée plus haut.
Je suis débutant en XML Schema mais j'ai pourtant besoin d'implémenter ces règles relativement complexes.
Merci de votre aide,
Rémi.
Je suis en train de rédiger un schema XSD pour un fichier .XML.
Je souhaiterais ajouter une contrainte pour ne pouvoir n'assigner des attributs que si un autre a une valeur particulière, ou si ce n'est pas possible, au moins ne pas pouvoir assigner certains attributs si d'autres le sont déjà.
Voici le bout de code :
<xs:element name="activity">
<xs:complexType>
<xs:sequence minOccurs="0">
<!-- <xs:element ref="startDate" minOccurs="0"/>
<xs:element ref="endDate" minOccurs="0"/> -->
<xs:element ref="activity" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="account" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="start" type="xs:string" use="required"/>
<xs:attribute name="end" type="xs:string" use="required"/>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Root"/>
<xs:enumeration value="Resource"/>
<xs:enumeration value="Training"/>
<xs:enumeration value="Project"/>
<xs:enumeration value="Presales"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<!-- Attributes for a task -->
<xs:attribute name="comment" type="xs:string"/>
<xs:attribute name="probability" type="xs:int"/>
<xs:attribute name="duration" type="xs:int"/>
<!-- Attributes for a resource -->
<xs:attribute name="role" type="xs:string"/>
</xs:complexType>
</xs:element>
Dans l'idéal, je souhaiterais que l'on ne puisse assigner ces attributs :
<xs:attribute name="comment" type="xs:string"/> <xs:attribute name="probability" type="xs:int"/> <xs:attribute name="duration" type="xs:int"/>à l'élément "activity" que si l'attribut "type" a la valeur "Training", "Presales" ou "Project", et cet attribut :
<xs:attribute name="role" type="xs:string"/>à l'élément "activity" que si l'attribut "type" a la valeur "Resource".
Si ce n'est pas possible, je souhaiterais que si on assigne les trois attributs ci-dessus, on ne puisse pas assigner le dernier, et vice versa.
Pour la seconde solution, j'ai pensé à choice, mais je ne peux pas l'insérer à cet endroit. Je me demande si ce n'est pas à cause de la séquence qui a déjà été déclarée plus haut.
Je suis débutant en XML Schema mais j'ai pourtant besoin d'implémenter ces règles relativement complexes.
Merci de votre aide,
Rémi.
A voir également:
- [XML Schema] Ajout d'attributs
- Schéma téléphone oublié - Guide
- Xml viewer - Télécharger - Édition & Programmation
- Schéma branchement autoradio couleur fils - Forum Autoradio
- Ajout rapide snap - Forum Snapchat
- Office xml handler - Télécharger - Traitement de texte
1 réponse
À ma connaissance, on ne peut pas fixer de contraintes particulières à des attributs ou des sous-éléments selon la valeur que prend un autre attribut. À part le choice, je n'ai rien d'autre à te proposer. Si tu as besoin d'aide, il y a ce tutoriel :
https://fr.wikiversity.org/wiki/Extensible_Markup_Language/XML_Schema
https://fr.wikiversity.org/wiki/Extensible_Markup_Language/XML_Schema