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

XML/XSL et SOAP Discussion :

keyref: référencer une clé utilisée dans des éléments non parents


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Par défaut keyref: référencer une clé utilisée dans des éléments non parents
    Bonjour,

    j'essaie de faire référence à une clé utilisée dans des éléments non parents. Voici le fichier XML qui serait valide :

    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
     
    <?xml version="1.0" encoding="utf-8" ?>
    <MEMORIES selected="MEM1">
     
      <MEM name="MEM1">
        <BOARD id="1" central="10"/>
        <BOARD id="2" central="20"/>
        <BOARD id="3" central="30"/>
      </MEM>
     
      <MEM name="MEM2">
        <BOARD id="1" central="30"/>
      </MEM>
     
      <CUSTOM name="Custom">
        <BOARD id="1" central="10"/>
        <BOARD id="2" central="20"/>
        <BOARD id="3" central="30"/>
      </CUSTOM>
    </MEMORIES>
    Je voudrai que MEMORIES.selected référence l'un des attributs MEM.name ou CUSTOM.name.
    Est-ce possible ? Voici mon schéma actuellement, avec cette contrainte qui ne fonctionne pas:

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
     
      <xs:element name="MEMORIES">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="MEM" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element maxOccurs="8" name="BOARD">
                    <xs:complexType>
                      <xs:attribute name="id" type="xs:unsignedByte" use="required"/>
                      <xs:attribute name="central" type="xs:double" use="required"/>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="name" type="xs:string" use="required"/>
              </xs:complexType>
     
              <xs:unique name="memBoardUnique">
                <xs:selector xpath="BOARD" />
                <xs:field xpath="@id" />
              </xs:unique>
            </xs:element>
     
            <xs:element name="CUSTOM">
              <xs:complexType>
                <xs:sequence>
                  <xs:element maxOccurs="8" minOccurs="8" name="BOARD">
                    <xs:complexType>
                      <xs:attribute name="id" type="xs:unsignedByte" use="required"/>
                      <xs:attribute name="central" type="xs:double" use="required"/>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="name" type="xs:string" use="required"/>
              </xs:complexType>
     
              <xs:unique name="customMemBoardUnique">
                <xs:selector xpath="BOARD" />
                <xs:field xpath="@id" />
              </xs:unique>
     
            </xs:element>
     
     
          </xs:sequence>
          <xs:attribute name="selected" type="xs:string" use="required"/>
        </xs:complexType>
     
     
        <xs:unique name="nameUnique">
          <xs:selector xpath="*" />
          <xs:field xpath="@name" />
        </xs:unique>
     
     
        <!-- Ne fonctionne pas ... -->
        <xs:keyref name="myMemRef" refer="nameUnique">
          <xs:selector xpath="."/>
          <xs:field xpath="@selected"/>
        </xs:keyref>
        <!-- Ne fonctionne pas ... -->
      </xs:element>
    </xs:schema>
    Ce que j'essaie est-il possible déjà ?

    Merci d'avance pour toute aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Par défaut Je pense que mon schéma était bancal ;-)
    J'ai modifié la structure du fichier XML car j'avais d'autres problèmes ensuite, donc voici le schéma final (pas de clé gérée dans 2 éléments non parents):

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
     
      <xs:element name="MEMORIES">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="MEM" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element maxOccurs="8" name="BOARD">
                    <xs:complexType>
                      <xs:attribute name="central" type="xs:double" use="required"/>
                      <xs:attribute name="used" type="xs:boolean" use="required"/>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="name" type="xs:string" use="required"/>
              </xs:complexType>
     
              <xs:unique name="memBoardUnique">
                <xs:selector xpath="BOARD" />
                <xs:field xpath="@id" />
              </xs:unique>
     
            </xs:element>
     
     
          </xs:sequence>
          <xs:attribute name="selected" type="xs:string" use="required"/>
          <xs:attribute name="custom" type="xs:string" use="required"/>
        </xs:complexType>
     
     
        <xs:unique name="nameUnique">
          <xs:selector xpath="MEM" />
          <xs:field xpath="@name" />
        </xs:unique>
     
        <xs:keyref name="mySelectedMemRef" refer="nameUnique">
          <xs:selector xpath="."/>
          <xs:field xpath="@selected"/>
        </xs:keyref>
     
        <xs:keyref name="myCustomMemRef" refer="nameUnique">
          <xs:selector xpath="."/>
          <xs:field xpath="@custom"/>
        </xs:keyref>
      </xs:element>
    </xs:schema>

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

Discussions similaires

  1. [XL-2007] Utilisation unique des éléments d'une liste
    Par porruak dans le forum Excel
    Réponses: 1
    Dernier message: 07/07/2014, 13h00
  2. Réponses: 12
    Dernier message: 09/11/2009, 19h56
  3. Réponses: 8
    Dernier message: 21/05/2007, 23h59
  4. [HTML] pb de mise en place d'une balise <div> dans des balises <ul>
    Par youp_db dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 06/11/2006, 16h57
  5. Réponses: 4
    Dernier message: 07/07/2006, 15h44

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