IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Problème de vérification de choix pour les attributs [XSD]


Sujet :

Valider XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Points : 2
    Points
    2
    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

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    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.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Points : 2
    Points
    2
    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