xsl:evaluate instruction is new in XSLT 3.0. It allows dynamic evaluation
of XPath expressions constructed as a string, in the same way as the
extension function that has been available in Saxon for many years.
The following example sorts 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 select="$product-sort-key"/> </xsl:sort> </xsl:apply-templates>
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
The instruction has been fully implemented since Saxon 9.3 with the following exceptions:
Functions available only in XSLT, such as key(), cannot be used in the target XPath expression.
The instruction may take an
xsl:fallback to define fallback behaviour when using an
XSLT 2.0 processor.
xpath: an expression, which is evaluated to return the target expression as a string.
base-uri: a string (as an AVT), gives the base URI for the target expression. Defaults to the base URI of the stylesheet instruction.
namespace-context: 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
xsl:evaluateinstruction in the stylesheet
as: a SequenceType: defines the required type of the result of the XPath expression. Defaults to
schema-aware: "yes" or "no", as an AVT: if "yes", the XPath expression has access to the schema components imported into the stylesheet.
xsl:with-param: defines variables that the target expression can use.
xsl:fallback: defines fallback behaviour when using an XSLT 2.0 (or 1.0) processor.