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.

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 FeatureKeys.XSLT_ENABLE_ASSERTIONS configuration property, 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