p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Inscrit en
    janvier 2012
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : janvier 2012
    Messages : 2
    Points : 1
    Points
    1

    Par défaut Problème de vérification de choix pour les attributs

    Bonjour,

    Je me trouve actuellement face à un problème. Je souhaiterai savoir si il est possible d'effectuer la vérification suivante avec un schéma XML :

    J'ai un code XML qui peut s'écrire de 3 façons différentes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <couleur rouge="255" vert="42" bleu="0">Le texte à colorer</couleur>
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <couleur hexa="e4e4f2">Le texte à colorer</couleur>
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <couleur nom="bleu">Le texte à colorer</couleur>

    En fonction de ces codes, je souhaiterai pouvoir effectuer la vérification suivante avec un schéma XML :
    Vérifier que l’attribut ["rouge" ET "vert" ET "bleu"] sont présents OU l'attribut "hexa" OU l'attribut "nom".

    Que me conseillez-vous pour faire face à ce problème ?


    J'ai testé le code suivant, mais sans sucés. Car dans ce cas présent le code attend un attribut rouge, hexa et nom en même temps si j'ai bien compris...
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <xsd:element name="couleur"> 
    	<xsd:complexType>
    		<xsd:simpleContent>
    			<xsd:extension base="xsd:string">
    				<xsd:attribute type="checkColorRGB" name="rouge"/> 
    				<xsd:attribute type="checkColorRGB" name="vert"/> 
    				<xsd:attribute type="checkColorRGB" name="bleu"/> 
    				<xsd:attribute type="checkColorHexa" name="hexa"/> 
    				<xsd:attribute type="checkColorName" name="nom"/>
    			</xsd:extension>
    		</xsd:simpleContent>
    	</xsd:complexType>
    	<xsd:key name="key-RGB">
    		<xsd:selector xpath="."/>
    		<xsd:field xpath="@rouge|@vert|@bleu"/>
    	</xsd:key> 
    	<xsd:key name="key-hexa">
    		<xsd:selector xpath="."/>
    		<xsd:field xpath="@hexa"/>
    	</xsd:key> 
    	<xsd:key name="key-name">
    		<xsd:selector xpath="."/>
    		<xsd:field xpath="@nom"/>
    	</xsd:key> 
    </xsd:element>

    En vous remerciant par avance.

  2. #2
    Modérateur

    Inscrit en
    septembre 2004
    Messages
    10 371
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 10 371
    Points : 17 296
    Points
    17 296

    Par défaut

    Citation Envoyé par yeti47 Voir le message
    Je souhaiterai savoir si il est possible d'effectuer la vérification suivante avec un schéma XML
    Non.
    Les attributs, en XSD :
    - ou bien n'ont pas le droit d'être là du tout.
    - ou bien ont le droit optionnel d'être là, sans condition.
    - ou bien ont le devoir d'être là, sans condition.

    Peu importe ce qu'il y a autour d'eux. Autres attributs, contenu de l'élément, ça ne change rien.

    Citation Envoyé par yeti47 Voir le message
    Que me conseillez-vous pour faire face à ce problème ?
    Au niveau de la validation, autorise les trois à être là ensemble. Et au niveau au-dessus, quand tu cherches à traiter le fichier, traite ça comme une erreur.

    Autre possibilité dans un cas comme celui-ci, permettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <couleur>
      <rgb rouge="255" vert="42" bleu="0"/>
      <texte>Le texte à colorer</texte>
    </couleur>
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <couleur>
      <hexa>e4e4f2</hexa>
      <texte>Le texte à colorer</texte>
    </couleur>
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <couleur>
      <nom>bleu</nom>
      <texte>Le texte à colorer</texte>
    </couleur>
    Ça, ça peut se vérifier.
    Mais pour cet exemple-là, c'est quand même sacrément nul.


    Citation Envoyé par yeti47 Voir le message
    J'ai testé le code suivant, mais sans sucés. Car dans ce cas présent le code attend un attribut rouge, hexa et nom en même temps si j'ai bien compris...
    Oui, <xsd:key> sert d'une part à assurer l'existence de ce qu'il vise.
    Donc 3 <xsd:key> => existence obligatoire de 3 choses.

  3. #3
    Invité de passage
    Inscrit en
    janvier 2012
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : janvier 2012
    Messages : 2
    Points : 1
    Points
    1

    Par défaut

    Merci beaucoup thelvin pour cette réponse. Ça ne peut pas être plus clair !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/03/2014, 13h37
  2. [XSD] Equivalent du <choice> pour les attribut
    Par BigOne55 dans le forum Valider
    Réponses: 6
    Dernier message: 14/03/2014, 19h24
  3. Problème héritage pour les attributs
    Par fab87 dans le forum C++
    Réponses: 26
    Dernier message: 07/04/2011, 16h26
  4. Réponses: 7
    Dernier message: 13/02/2006, 17h13
  5. [JMeter] Problème avec la boucle infinie pour les tests
    Par zegreg dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 05/10/2005, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo