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

XSL/XSLT/XPATH XML Discussion :

Pb IDREF et ID


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 44
    Par défaut Pb IDREF et ID
    Salut à tous,

    J'ai une question simple sur les ID et les IDREF.
    Je n'arrive pas à voir pourquoi un xpath ne passe pas, mais ça doit être très simple.

    Mon xml est du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <livres>
      <livre id="l1" auteur="e1">
    			<titre>Mon titre</titre>
      </livre>
     
      <ecrivain id="e1">
    	<e_nom>Mon ecrivain</c_nom>
      </ecrivain>
    </livres>
    Ma DTD spécifie bien que les id sont des ID, et qu'auteur est un IDREF. Ca valide.

    J'ai ensuite du XSL pour afficher le livre et le nom de l'auteur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <xsl:for-each select="//livre">
      <xsl:call-template name="infos_livres"/>
    </xsl:foreach>
    ...
    <xsl:template name="infos_livres">
    <ul>
      <li>Livre écrit par <xsl:value-of select="//ecrivain[@id=./@id]/e_nom"/></li>
    </ul>
    </xsl:template>
    Sous Firefox4, cette ligne ne rend rien. Je sais que mon fichier est bon, le reste marche parfaitement sauf cette instruction.

    Comment puis-je faire pour récupérer l'auteur de mon livre par son ID? le "./@id" n'a pas l'air de passer, existe-t-il un autre technique ?

    Merci d'avance !

  2. #2
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Citation Envoyé par chateau_dur Voir le message
    Je sais que mon fichier est bon
    Alors tu sais mal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <e_nom>Mon ecrivain</c_nom>
    De plus, tu compares l'attribut id à... lui-même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="//ecrivain[@id=./@id]/e_nom"/>
    Pour faire ce que tu veux, il te faut passer par une variable (en tout cas c'est le plus simple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:variable name="id" select="@id"/>
    <xsl:value-of select="//ecrivain[@id=$id]/e_nom"/>

  3. #3
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 44
    Par défaut
    Ca marche, merci

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

Discussions similaires

  1. IDREF vers un ID externe dans un autre document ?
    Par Hibou57 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 31/07/2007, 10h32
  2. [XSLT] Récupérer un attribut sur un élément pointé par un IDREF
    Par Folken Laëneck dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 13/05/2007, 07h31
  3. [XSD] Une enumeration externe et idref
    Par Emplyst dans le forum Valider
    Réponses: 4
    Dernier message: 12/10/2006, 01h24
  4. [XSL][IDREF] Comment recuperer?
    Par Hikage dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 04/01/2006, 18h46
  5. [XSD] Incompatibilité des types xs:ID et xs:IDREF ?
    Par Cpt.FLAM dans le forum Valider
    Réponses: 6
    Dernier message: 08/04/2005, 14h54

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