The xsl:call-template
element is used to invoke a named template.
The name
attribute is mandatory and must match the name defined on an xsl:template
element.
Saxon supports an alternative instruction saxon:call-template
. This has the same
effect as xsl:call-template
, except that the name
attribute may be written as an attribute value template, allowing
the called template to be decided at run-time. The string result of evaluating the attribute value
template must be a valid QName that identifies a named template somewhere in the stylesheet.
To supply parameters to the called template, one or more xsl:with-param elements
may be included. The values of these parameters are available to the called template. If the
xsl:with-param
element specifies tunnel="yes"
, then the parameter is passed
transparently through to templates called at any depth, but it can only be referenced by an
xsl:param
element that also specifies tunnel="yes"
. If the default value,
tunnel="no"
is used, then the parameter value is available only in the immediately
called template, and only if the xsl:param
element specifies tunnel="no"
(explicitly or by defaulting the attribute).
The context of the called template (for example the current node and current node list) is the same as that for the calling template; however the variables defined in the calling template are not accessible in the called template.