Home >
Online Product Documentation >
Table of Contents >
Obtaining the Current Node for the Current XSLT Template
Obtaining the Current Node for the Current XSLT Template
In a stylesheet, the current node is the node for which the XSLT processor instantiates a template. When the XPath processor evaluates an expression during stylesheet processing, the initial context node for the expression is set to the current node for the stylesheet instruction that contains the expression. Because the context node can change during evaluation of subexpressions, it is useful to be able to retrieve, from within a subexpression, the original context node for which the expression is being evaluated. You can use the
current()
function for this purpose. The format is
The
current()
function returns a node set that contains only the current node for the current template. The
current()
function is specified in the W3C XSLT Recommendation.
For example, the following stylesheet causes the XSLT processor to pass the
bookstore
node to the outer
xsl:for-each
instruction:
The
bookstore
node is the current node within the outer
xsl:for-each
instruction. Within the inner
xsl:for-each
instruction, a
book
node is the current node.
The
current()
function in the inner expression returns the
bookstore
element because the
bookstore
element is the current node for the inner
xsl:for-each
instruction. The result of the query contains
book
elements if the value of their
style
attribute is the same as the value of the
specialty
attribute of the
bookstore
element (
novel
).
Suppose the
select
attribute in the inner
xsl:for-each
instruction specified the dot (
.
) instead of the
current()
function:
In a query, the dot specifies the context node. This query would return a
book
if the value of its
style
attribute was the same as the value of its
specialty
attribute.
You can nest
xsl:for-each
instructions more than one level deep. In any given nested
xsl:for-each
instruction, the
current()
function returns the current node for the closest enclosing
xsl:for-each
instruction.