xsl:evaluate
Allows dynamic evaluation of XPath expressions constructed as a string.
Category: instruction
Content: (
xsl:with-param
| xsl:fallback
)*
Permitted parent elements:
any XSLT element whose content model is
sequence-constructor; any literal result element
Attributes
|
|
An XPath expression which is evaluated to return the target expression as a string. |
|
|
Defines the required type of the result of the
XPath expression. Defaults to |
|
|
The base URI for the target expression. Defaults to the base URI of the stylesheet instruction. |
|
|
A map used to supply values for variables in the target expression, if the names are only known dynamically. |
|
|
An XPath expression which is evaluated to determine the context item, position, and size, for evaluation of the target expression. |
|
|
An expression returning a node;
the in-scope namespaces of this node define the namespace context for the XPath
expression. Defaults to the namespace context of the |
|
|
If |
Notes on the Saxon implementation
The instruction has been implemented since Saxon 9.3 with the exception that
functions available only in XSLT, such as key()
, cannot be used in
the target XPath expression. The instruction is fully implemented since Saxon
9.6.
Details
The xsl:evaluate
instruction allows dynamic evaluation of XPath
expressions in the same way as the saxon:evaluate() extension function
that has been available in Saxon for many years.
The functionality is available as an XSLT instruction, rather than a function, to allow more flexibility in the syntax, in particular the ability to define parameters using xsl:with-param child elements.
The instruction may take an xsl:fallback to define fallback behaviour when using an XSLT 2.0 (or 1.0) processor.
Examples
Sorting product elements according to a sort key supplied (in the form of an XPath expression) as a parameter to the stylesheet:
<xsl:apply-templates select="product"> <xsl:sort> <xsl:evaluate xpath="$product-sort-key"/> </xsl:sort> </xsl:apply-templates>