Funzione current
Restituisce un set di nodi con il nodo corrente come unico membro.
node-set current()
Note
La funzione restituisce un set di nodi con il nodo corrente come unico membro. Per un'espressione più esterna, ovvero un'espressione che non ricorre in un'altra espressione, il nodo corrente è sempre identico al nodo di contesto. Pertanto
<xsl:value-of select="current()"/>
è uguale a
<xsl:value-of select="."/>
Tuttavia, se racchiuso tra parentesi quadre, il nodo corrente è normalmente diverso dal nodo di contesto. Di seguito è riportato un esempio:
<xsl:apply-templates select="//glossary/item[@name=current()/@ref]"/>
vengono elaborati tutti gli elementi <item> con un elemento padre <glossary> e un attributo name il cui valore è uguale al valore dell'attributo ref del nodo corrente. Ciò è diverso da
<xsl:apply-templates select="//glossary/item[@name=./@ref]"/>
che indica lo stesso valore di
<xsl:apply-templates select="//glossary/item[@name=@ref]"/>
Pertanto verrebbero elaborati tutti gli elementi <item> con un elemento padre <glossary>, un attributo name e un attributo ref con lo stesso valore.
Esempio
File 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>
File 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>
Output
Di seguito è riportato l'output formattato visualizzato nel browser.
first
1
class
Di seguito è riportato l'output del processore XSLT. Per ottenere questo output, fare clic con il pulsante destro del mouse sul browser e scegliere la voce di menu View XSL Output.
<?xml version="1.0" encoding="UTF-16"?>
<blockquote>
<blockquote>first</blockquote>
<blockquote>1</blockquote>
<blockquote>
<blockquote>class</blockquote>
</blockquote>
</blockquote>