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] Attribut unique pour un block


Sujet :

Valider XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut [XSD] Attribut unique pour un block
    Bonjour,

    Cette question a déjà du être posée, néanmoins les réponses trouvées ne me conviennent pas.

    Comment faire en sorte qu'une xsd valide l'xml suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <AAA>
             <BBB>
                      <CCC att=1/>
                      <CCC att=2/>
              </BBB>
     
             <BBB>
                      <CCC att=1/>
                      <CCC att=2/>
              </BBB>
    </AAA>
    Mais pas celui-ci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <AAA>
             <BBB>
                      <CCC att=1/>
                      <CCC att=2/>
              </BBB>
    
             <BBB>
                      <CCC att=1/>
                      <CCC att=2/>
                      <CCC att=2/>
              </BBB>
    </AAA>

    Je veux donc pour un block <BBB> donné, tous les éléments <CCC > aient des attributs att différents. Par contre, deux bloques BBB peuvent avoir des éléments CCC ayant le même attribut att.

    Je pense que cela doit marcher avec la balise <unique>, mais je ne comprend pas bien comment l'utiliser, je fais la syntaxe suivante :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsd:element name="AAA" type="aaa">
    	<xsd:unique name="attUnique">
    		<xsd:selector xpath="BBB"></xsd:selector>
    		<xsd:field xpath="att"></xsd:field>
    	</xsd:unique></xsd:element>
    Mais, ce schéma valide quand même le 2eme exemple.

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

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

    C'est bien xs:unique qu'il faut utiliser, et qu'il faut mettre au bon endroit, en l'occurrence dans la définition de l'élément BBB, puisque les éléments dont on veut vérifier l'unicité, les éléments CCC, sont ses descendants :
    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
    <xs:element name="AAA">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="BBB" maxOccurs="unbounded">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="CCC" maxOccurs="unbounded">
                  <xs:complexType>
                    <xs:attribute name="att" type="xs:integer" use="required" />
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
            <xs:unique name="unique-CCC">
              <xs:selector xpath="CCC"></xs:selector>
              <xs:field xpath="@att"></xs:field>
            </xs:unique>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
    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
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    Merci beaucoup, je devais en effet mal positionné mon unique, puisqu'il était à la racine ^^

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

Discussions similaires

  1. [XSD] Attribut unique à true
    Par Ldoppea dans le forum Valider
    Réponses: 3
    Dernier message: 20/06/2010, 15h28
  2. [XSD] Définir un attribut unique
    Par tahtah dans le forum Valider
    Réponses: 1
    Dernier message: 03/01/2008, 10h40
  3. Réponses: 2
    Dernier message: 14/12/2006, 18h08
  4. [XSD] Erreur "Unique Particle Attribution"
    Par be_tnt dans le forum Valider
    Réponses: 4
    Dernier message: 17/10/2006, 13h21
  5. Y a t il un format unique pour les hd portables
    Par von_magnus dans le forum Composants
    Réponses: 6
    Dernier message: 27/09/2005, 18h38

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