Bonjour,
Pour afficher le contenu d'une discussion au format xml avec xslt, je tente d'accèder avec XPath à un élément selon la valeur de son attribut, bref :
qui s'applique au code xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <xsl:template match="replique"> <li><xsl:apply-templates select="/discussion/contexte/destinataire[@destid='{@expid}']/pseudo" /> : <xsl:apply-templates /></li> </xsl:template>
Pour avoir finalement dans le navigateur :
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 <discussion> <contexte> <destinataire destid="0"> <pseudo>Test</pseudo> </destinataire> <destinataire destid="1"> <pseudo>Gus</pseudo> </destinataire> </contexte> <replique expid="1"> Salut ! </replique> <replique expid="0"> Salut, ça va ? </replique> <replique expid="1"> Yop, et toi ? </replique> </discussion>
- Gus : Salut !
- Test : Salut, ça va ?
- Gus : Yop, et toi ?
Pour le moment, il me semble que [@destid='{@expid}'] pose problème (pas d'erreur, mais le pseudo n'est pas affiché, donc je suppose que le chemin XPath n'est pas valide), alors que si je remplate {@expid} par une id valide (genre 0 ou 1 ici), ça me met le même pseudo partout (donc c'est bien cette partie qui dérange). Mais je ne vois pas comment faire autrement pour que chaque réplique puisse afficher le pseudo correspondant à son id.
Ma syntaxe n'est pas valide ou c'est une erreur de sens ?
Merci d'avace !
Partager