Used to make assertions in the form of XPath expressions, causing a dynamic error if the assertion turns out to be false.

Category: instruction
Content: sequence-constructor
Permitted parent elements: any XSLT element whose content model is sequence-constructor; any literal result element




XPath expression to be asserted.



Can be used to specify (part of) the content of the error message produced when the assertion is false.


{ eqname }

Specifies the error code associated with the error message produced when the assertion is false.

Saxon availability

Available in XSLT 3.0. From Saxon 9.8, available in all editions. Implemented in Saxon-PE and Saxon-EE since Saxon 9.5. Available for all platforms.

Notes on the Saxon implementation

Following a change in the W3C specification, from Saxon 9.7 assertions are now disabled by default. To enable assertions, use the -ea command line option, or the configuration property XSLT_ENABLE_ASSERTIONS, or call XsltCompiler.enableAssertions(true) in the s9api interface.


It may be useful to add an attribute such as use-when="$DEBUG" to xsl:assert instructions; the global static variable DEBUG can then be used to switch assertion processing on and off. The variable might be declared as <xsl:variable name="DEBUG" as="xs:boolean" select="true()"/>.


The following code tests whether the value of $x is non-negative, and if not, fails with an error message:

<xsl:assert test="$x &gt; 0">Argument $x must be greater than zero</xsl:assert>

Links to W3C specifications

XSLT 3.0 Specification