xsl:call-template element is used to invoke a named template.
name attribute is mandatory and must match the name defined on an
Saxon supports an alternative instruction
saxon:call-template. This has the same
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
(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.