Función current
Devuelve un conjunto de nodos que tiene el nodo actual como único miembro.
node-set current()
Comentarios
La función devuelve un conjunto de nodos que tiene el nodo actual como único miembro.Para una expresión exterior, es decir, una expresión que no aparezca dentro de otra expresión, el nodo actual es siempre el mismo que el nodo de contexto.Así,
<xsl:value-of select="current()"/>
equivale a:
<xsl:value-of select="."/>
Sin embargo, entre corchetes, el nodo actual suele ser diferente del nodo de contexto.Por ejemplo:
<xsl:apply-templates select="//glossary/item[@name=current()/@ref]"/>
procesa todos los elementos <item> que tienen un elemento principal <glossary> y un atributo name con el mismo valor que el del atributo ref del nodo actual.No sucede lo mismo que en
<xsl:apply-templates select="//glossary/item[@name=./@ref]"/>
lo que significa que es igual que
<xsl:apply-templates select="//glossary/item[@name=@ref]"/>
y, por tanto, procesa todos los elementos <item> que tienen un elemento principal <glossary> y que tienen un atributo name y un atributo ref con el mismo valor.
Ejemplo
Archivo 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>
Archivo 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>
Resultados
Este es el resultado con formato que se muestra en el explorador.
first
1
class
Este es el resultado desde el procesador XSLT.Para obtener dicho resultado, haga clic con el botón secundario en el explorador y seleccione el elemento de menú Ver resultado XSL.
<?xml version="1.0" encoding="UTF-16"?>
<blockquote>
<blockquote>first</blockquote>
<blockquote>1</blockquote>
<blockquote>
<blockquote>class</blockquote>
</blockquote>
</blockquote>