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

xpath

expression

An XPath expression which is evaluated to return the target expression as a string.

as?

sequence-type

Defines the required type of the result of the XPath expression. Defaults to item()*.

base-uri?

{ uri }

The base URI for the target expression. Defaults to the base URI of the stylesheet instruction.

with-params?

expression

context-item?

expression

namespace-context?

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 xsl:evaluate instruction in the stylesheet.

schema-aware?

{ boolean }

If yes, the XPath expression has access to the schema components imported into the stylesheet.

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 in 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 select="$product-sort-key"/> </xsl:sort> </xsl:apply-templates>

Links to W3C specifications

XSLT 3.0 Specification

See also

saxon:evaluate()