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 :

[XSD] Equivalent du <choice> pour les attribut [FAQ]


Sujet :

Valider XML

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [XSD] Equivalent du <choice> pour les attribut
    Bonjour à tous.

    J'aimerai savoir s'il est possible de créer l'équivalent du <choice> pour des attributs pour obtenir quelquechose qui ressemblerait à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <choice>
      <attributeGoup>
        <attribute name="A"/>
        <attribute name="B"/>
      </attributeGoup>
     
      <attribute name="C"/>
    </choice>
    Merci d'avance

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    il n'existe pas de fonction toute faite permettant de définir cela, mais il est possible de s'en sortir en utilisant un xs:key.

    Exemple :

    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:simpleContent>
    			<xs:extension base="xs:string">
    				<xs:attribute name="a" type="xs:string"/>
    				<xs:attribute name="b" type="xs:string"/>
    				<xs:attribute name="c" type="xs:string"/>
    			</xs:extension>
    		</xs:simpleContent>
    	</xs:complexType>
    	<xs:key name="att">
    		<xs:selector xpath="."/>
    		<xs:field xpath="@a|@b"/>
    	</xs:key>
    </xs:element>
    L'élément <toto> doit contenir un attribut a ou b, et un attribut c. Pour définir cette contrainte, on définit un xs:key qui déclare que l'élément toto est identifié par une clé composée de l'attribut a ou de l'attribut b ; si les deux attributs sont présents (même avec des valeurs différentes), cela crée deux clés pour <toto>, donc un doublon qui met en échec la validation. D'autre part, le <xs:key> impose qu'une clé soit définie pour l'élément, et donc qu'un des deux attributs soit présent (contrairement à <xs:unique> qui n'impose pas que le <xs:field> renvoie une valeur)
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Rapide, clair, efficace
    merci GrandFather
    Manque juste la distribution d'un werthers original et t'es le grand-père parfait

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 73
    Points : 66
    Points
    66
    Par défaut
    Bonjours le sujet m'intéresse mais il me semble qu'il ne fonctionne pas.

    j'ai fait un xml qui ne devrai pas respecter être valide et pourtant oxygen (qui est un outils correct en ce qui concerne tout ce qui touche à l'XML) me le valide !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0" encoding="UTF-8"?>
    <toto xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="test.xsd"
     a="sdqs"
     b="csdcsd"
     c="csdcsdc" >
     
    </toto>

  5. #5
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    La validation n'est en fait pas réalisée par Oxygen directement mais par Xerces-J, qui implémente W3C XML Schema. Ce schema est parfaitement licite, je pencherais plutôt pour un problème de paramétrage de Oxygen.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Par rapport à cette question de la FAQ, il y a t il moyen de définir un élément qui doit avoir l'attribut a ou l'attribut b, mais qui est aussi valide s'il a les deux attributs a et b ?

    Merci

    PW

  7. #7
    Membre actif
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Points : 234
    Points
    234
    Par défaut
    Bonjour,
    Pour info, la solution présenté ici avec le xsd:key ne fonctionne pas avec xml V1.0. A priori il y a une évolution avec la version 1.1, mais sinon, voir topic http://www.developpez.net/forums/d14...ice-attributs/

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/03/2014, 13h37
  2. Equivalent de "onunload" mais que pour les postbacks ?
    Par Invité dans le forum ASP.NET
    Réponses: 3
    Dernier message: 31/01/2012, 15h12
  3. [RegEx] Equivalent de l'accent circonflexe pour les chaines ?
    Par brunoperel dans le forum Langage
    Réponses: 6
    Dernier message: 05/01/2010, 10h20
  4. Equivalent du L en C pour les valeurs hexa
    Par Rustine dans le forum Delphi
    Réponses: 2
    Dernier message: 11/03/2007, 13h05
  5. Réponses: 7
    Dernier message: 13/02/2006, 17h13

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