Quelle est la différence entre "." et "current()" (XPath/XSLT)?
Eric van der Vlist,
Dyomedea (vdv@dyomedea.com).
mardi 26 juin 2001
Quelle est la différence entre "." et
"current()" et pourquoi n'ai-je pas réussi à écrire
<xsl:variable name="lib">
<xsl:value-of select="./libelle"/>
</xsl:variable>
<xsl:for-each select="//idValeursCodes/code[@libelle=$lib]/choix">
sans utiliser de variables ?
"." désigne est un raccourci XPath
qui désigne le noeud courant au sein même de l'expression XPath alors que "current()" est
une fonction XSLT qui désigne le noeud contexte
au niveau de l'instruction XSLT:
<xsl:template match="/foo/bar">
<!-- current() désigne un élément "/foo/bar"-->
<xsl:value-of select="/foo[.='bar']" >
<!-- ici ^
"." désigne /foo -->
<xsl:value-of select="/foo/bar2[.='bar']">
<!-- ici ^
"." désigne un élément /foo/bar2 -->
</xsl:template>
Dans l'exemple que vous soumettez, vous avez besoin de comparer
l'attribut @libelle à un élément qui se trouve sous le noeud contexte (XSLT).
C'est impossible en utilisant "." mais c'est un bon cas
d'école pour l'utilisation de "current()" et votre boucle peut
s'écrire sans variable:
<xsl:for-each
select="//idValeursCodes/code[@libelle=current()/libelle]/choix">
ROMAN
Jean-François: "[xml-tech] Simple curiosité"Eric
van der Vlist: "[xml-tech] Re: Simple curiosité"ROMAN
Jean-François: "[xml-tech] Re: [xml-tech] Re: Simple curiosité"Eric
van der Vlist: "[xml-tech] Re: Simple curiosité"
Copyright 2001,
Eric van der Vlist.
|