Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Valider XML Discussion :

Liste de valeurs contraintes dans un attribut


Sujet :

Valider XML

  1. #1
    Membre à l'essai
    Liste de valeurs contraintes dans un attribut
    Bonjour,

    Je cherche à écrire le schéma XSD pour contraindre un attribut 'valeurs' a ne pouvoir prendre qu'un ensemble de chaines bien spécifique.

    Je souhaite par exemple avoir ceci au niveau XML :

    valeurs="lundi,mardi,mercredi,jeudi,vendredi"

    La liste peut comporter uniquement les valeurs 'lundi' à 'dimanche' (idéalement, une seule fois).
    La liste peut avoir entre un et sept éléments.

    Actuellement mon code JAVA prend en compte la virgule comme séparateur mais si c'est plus facile avec un espace pour séparer les éléments de la liste, pas de pb.

    Avez-vous une idée sur comme faire ça?

    Merci d'avance,

    Philippe

  2. #2
    Membre actif
    enumerations
    je dirais...

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <xs:element name="toto">
    	<xs:complexType>
    		<xs:attribute name="jour" use="required">
    			<xs:simpleType>
    				<xs:restriction base="xs:string">
    					<xs:enumeration value="lundi"/>
    					<xs:enumeration value="mardi"/>
    					<xs:enumeration value="mercredi"/>
                                             etc...
    				</xs:restriction>
    			</xs:simpleType>
    		</xs:attribute>
    	</xs:complexType>
    </xs:element>
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  3. #3
    Membre à l'essai
    Merci pour la réponse mais elle ne permet que de spécifier UNE seule valeur pour l'attribut 'jour' alors que je souhaite avoir un ENSEMBLE comme
    jour="lundi,mardi,mercredi"
    or, avec le code précédent, je ne peux qu'avoir
    jour="lundi" OU jour="mardi" OU ...

    Philippe

  4. #4
    Membre actif
    Utilise alors les patterns, par exemple

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	<xs:element name="toto">
    		<xs:complexType>
    			<xs:attribute name="jour" use="required">
    				<xs:simpleType>
    					<xs:restriction base="xs:string">
    						<xs:pattern value="(.*[.di])+,"/>
    					</xs:restriction>
    				</xs:simpleType>
    			</xs:attribute>
    		</xs:complexType>
    	</xs:element>


    reste plus qu'à traiter le cas du dimanche, je te laisse chercher


    Citation Envoyé par juhel philippe Voir le message
    Merci pour la réponse mais elle ne permet que de spécifier UNE seule valeur pour l'attribut 'jour' alors que je souhaite avoir un ENSEMBLE comme
    jour="lundi,mardi,mercredi"
    or, avec le code précédent, je ne peux qu'avoir
    jour="lundi" OU jour="mardi" OU ...

    Philippe
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  5. #5
    Membre habitué
    Utiliser xs:list !
    Hello,

    Un sujet un peu vieux... mais qui mérite tout de même une réponse : il faut utiliser <xs:list> (avec séparateur espace).

    Le XSD donne :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
        <xs:simpleType name="Jour_de_la_semaine">
            <xs:restriction base="xs:string">
                <xs:enumeration value="lundi"/>
                <xs:enumeration value="mardi"/>
                <xs:enumeration value="mercredi"/>
                <xs:enumeration value="jeudi"/>
                <xs:enumeration value="vendredi"/>
                <xs:enumeration value="samedi"/>
                <xs:enumeration value="dimanche"/>
            </xs:restriction>
        </xs:simpleType>
     
        <xs:simpleType name="Jours_de_la_semaine">
            <xs:list itemType="Jour_de_la_semaine"/>
        </xs:simpleType>


    Et le XML donnera (si on crée un élément avec ce type ; mais ça peut aussi servir pour un attribut puisqu'on a créé des simpleType's).

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        <jour>lundi</jour>
     
        <jour>dimanche</jour>
     
        <jours>mardi mercredi jeudi lundi</jours>


    Mathieu
    Développeur confirmé C++, Java, Python, JS.