xsl:assert
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 
      
Attributes
  | 
  | XPath expression to be asserted.  | 
  | 
  | Can be used to specify (part of) the content of the error message produced when the assertion is false.  | 
  | 
  | 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.
Details
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()"/>.
Examples
 The following code tests whether the value of $x is
                        non-negative, and if not, fails with an error message: