Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité régulier
    Inscrit en
    janvier 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 22
    Points : 8
    Points
    8

    Par défaut attribut même nom avec valeur unique

    Bonjour ,

    Voici mon xml:

    Code :
    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 :
    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 :
    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
    676
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 676
    Points : 1 182
    Points
    1 182

    Par défaut

    Remplacez celà:
    <xsd:element name="article" type="articleType" />
    par ceci:
    Code :
    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
    22
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 22
    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 :
    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
    9 773
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 9 773
    Points : 16 176
    Points
    16 176

    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
    22
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 22
    Points : 8
    Points
    8

    Par défaut

    ok merci bien

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •