p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité régulier
    Inscrit en
    janvier 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 23
    Points : 8
    Points
    8

    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 Expert
    Inscrit en
    octobre 2011
    Messages
    791
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 791
    Points : 1 373
    Points
    1 373

    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
    Invité régulier
    Inscrit en
    janvier 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 23
    Points : 8
    Points
    8

    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

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

    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
    Invité régulier
    Inscrit en
    janvier 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 23
    Points : 8
    Points
    8

    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, 19h34
  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, 12h05
  3. Jointure avec valeur unique
    Par zooffy dans le forum Développement
    Réponses: 6
    Dernier message: 22/09/2008, 16h23
  4. Réponses: 2
    Dernier message: 24/02/2008, 14h46
  5. Enum avec valeur unique
    Par Oberown dans le forum Général Dotnet
    Réponses: 14
    Dernier message: 10/01/2008, 15h52

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