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 :

attribut même nom avec valeur unique [XSD]


Sujet :

Valider XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 22
    Points
    22
    Par défaut attribut même nom avec valeur unique
    Bonjour ,

    Voici mon xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?xml version="1.0" encoding="utf-8"?>
    <articles >
     <article>   
        <city lg="fr">ville_en_fr</city>
        <city lg="nl">ville_en_nl</city>
        <city lg="de">ville_en_de</city>
        <city lg="en">ville_en_en</city>
        <title lg="fr">titre_en_fr</title>
        <title lg="nl">titre_en_nl</title>
        <title lg="de">titre_en_de</title>
        <title lg="en">titre_en_en</title>
      </article>
    </articles>
    Voici mon xml:

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?xml version="1.0"  ?>
    <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <xsd:element name="articles" type="articlesType" />
      <xsd:complexType name="articlesType">
        <xsd:sequence>
          <xsd:element name="article" type="articleType" />
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="articleType">
        <xsd:sequence>
          <xsd:element minOccurs="4"  maxOccurs="4" name="city" type="cityType" />
          <xsd:element minOccurs="4" maxOccurs="4" name="title" type="titleType" />
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="titleType">
    		<xsd:simpleContent>
    		<xsd:extension base="xsd:string">
    			<xsd:attribute name="lg" type="Langue" use="required"/>
    		</xsd:extension>
    		</xsd:simpleContent>
      </xsd:complexType>
      <xsd:complexType name="cityType">
    		<xsd:simpleContent>
    		<xsd:extension base="xsd:string">
    			<xsd:attribute name="lg" type="Langue" use="required"/>
    		</xsd:extension>
    		</xsd:simpleContent>
      </xsd:complexType>
     
       <xsd:simpleType name="Langue"   >
    	<xsd:restriction base="xsd:string">	
         <xsd:enumeration value="en" />
         <xsd:enumeration value="fr"  />
         <xsd:enumeration value="de"  />
         <xsd:enumeration value="nl"  />    
        </xsd:restriction>
       </xsd:simpleType>    
    </xsd:schema>

    Ce que j'aimerai faire,c'est que l’énumération soit obligatoire et unique ,
    donc pour le noeud city , il faudrait pas qu'il y ait 2 fois le noeud city avec la même valeur de l'attribut mais de chacune des langues .
    Donc ceci ne devait pas passer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        <city lg="fr">ville_en_fr</city>
        <city lg="nl">ville_en_nl</city>
    OU
    
        <city lg="fr">ville_en_fr</city>
        <city lg="fr">ville_en_fr</city>
        <city lg="de">ville_en_de</city>
        <city lg="en">ville_en_en</city>
    Bien à vous,
    Merci
    --
    Tiger360

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Remplacez celà:
    <xsd:element name="article" type="articleType" />
    par ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
          <xsd:element name="article" type="articleType">
              <xsd:key name="city_lg">
                  <xsd:selector xpath="city" />
                  <xsd:field xpath="@lg" />
              </xsd:key>
          </xsd:element>
    Si vous voulez imposer la même contrainte sur "title", ajoutez xsd:key à la suite avec une construction pareille.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    Merci beaucoup ,ça fonctionne
    juste une question , étant donné qu'il y aura plusieurs noeuds similaire à city et tiltle
    est ce qu'il est obligé de rajouter un par un comme le code ci-dessous, ou bien est-il possible de mettre le nom des noeuds dans le selector

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     <xsd:element name="article" type="articleType">
              <xsd:key name="city_lg">
                  <xsd:selector xpath="city" />
                  <xsd:field xpath="@lg" />
              </xsd:key>
              <xsd:key name="title_lg">
                  <xsd:selector xpath="title" />
                  <xsd:field xpath="@lg" />
              </xsd:key>
          </xsd:element> ...

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 633
    Points
    21 633
    Par défaut
    Cela imposera l'unicité mais pas l'énumération complète.

    Je ne crois pas que l'énumération complète soit possible sans utiliser XML Shema 1.1 (qui n'est pas encore géré par grand-chose.)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    ok merci bien

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

Discussions similaires

  1. VBA: Erreur d'affichage listbox avec valeur unique
    Par polenade dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/07/2012, 20h34
  2. Déplacer fichier + Nom avec valeur d'une variable
    Par tony_95 dans le forum VB.NET
    Réponses: 3
    Dernier message: 22/04/2010, 13h05
  3. Jointure avec valeur unique
    Par zooffy dans le forum Développement
    Réponses: 6
    Dernier message: 22/09/2008, 17h23
  4. Réponses: 2
    Dernier message: 24/02/2008, 15h46
  5. Enum avec valeur unique
    Par Oberown dans le forum Général Dotnet
    Réponses: 14
    Dernier message: 10/01/2008, 16h52

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