Y a-t-il un moyen de faire fonctionner le code suivant sans passer par une variable intermédiaire ?
L'attribut @ref est un attribut de l'élément toto.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<xsl:template match="toto">
  <xsl:apply-templates select="//Value[@id=./@ref]" mode="titi"/>
</xsl:template>
<xsl:template match="Value" mode="titi">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="text()"/>
Mon code fonctionne si j'utilise une variable intermédiaire mais je trouve cela moins joli.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<xsl:template match="toto">
  <xsl:variable name="vRef" select="@ref"/>
  <xsl:apply-templates select="//Value[@id=$vRef]" mode="titi"/>
</xsl:template>
<xsl:template match="Value" mode="titi">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="text()"/>
J'ai cherché en utilisant self::./@ref mais cela ne fonctionne pas non plus.
Y a-t-il un problème de syntaxe ?
Exemple de xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
<toto ref="2"/>
<Value id="1">truc</Value>
<Value id="2">bidule</Value>
Je voudrais donc qu'il m'affiche "bidule".