Fonction current
Retourne une collection de nœuds ayant le nœud actuel pour seul membre.
node-set current()
Notes
La fonction retourne une collection de nœuds ayant le nœud actuel pour seul membre. Pour une expression extérieure, c'est-à-dire qui n'apparaît pas dans une autre expression, le nœud actuel est toujours identique à celui de contexte. Donc
<xsl:value-of select="current()"/>
est identique à
<xsl:value-of select="."/>
Toutefois, placé entre crochets, le nœud actuel est généralement différent du nœud de contexte. Par exemple :
<xsl:apply-templates select="//glossary/item[@name=current()/@ref]"/>
traite tous les éléments <item> ayant un élément parent <glossary> et un attribut name avec une valeur égale à celle de l'attribut ref du nœud actuel. C'est différent de
<xsl:apply-templates select="//glossary/item[@name=./@ref]"/>
qui a la même signification que
<xsl:apply-templates select="//glossary/item[@name=@ref]"/>
et qui traite donc tous les éléments <item> ayant un élément parent <glossary> et des attributs name et ref de même valeur.
Exemple
Fichier XML (current.xml)
<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="current.xsl" ?>
<nodes>
<node>first</node>
<node>1</node>
<node>
<obj>class</obj>
</node>
</nodes>
Fichier XSLT (current.xsl)
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="current()"/>
</xsl:template>
<xsl:template match="*">
<blockquote><xsl:apply-templates/></blockquote>
</xsl:template>
</xsl:stylesheet>
Sortie
Voici les données en sortie formatées affichées dans le navigateur :
first
1
class
Voici les données en sortie du processeur XSLT. Pour obtenir cette sortie, cliquez avec le bouton droit dans le navigateur et sélectionnez l'option de menu View XSL Output.
<?xml version="1.0" encoding="UTF-16"?>
<blockquote>
<blockquote>first</blockquote>
<blockquote>1</blockquote>
<blockquote>
<blockquote>class</blockquote>
</blockquote>
</blockquote>