[xsl] Defensive programming in XSLT using asserts and as="..."

Subject: [xsl] Defensive programming in XSLT using asserts and as="..."
From: "Roger L Costello costello@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 6 May 2022 14:16:17 -0000
Hi Folks,

I just love the xsl:assert statement!

I am going wild with it.

I am peppering asserts through my XSLT program. Already I have caught a bunch
of errors that would otherwise have been missed.

It dawned on me that there are other mechanisms in XSLT that perform "implicit
asserts":

<xsl:param name="item" as="element(author)"/>

is equivalent to:

<xsl:param name="item"/>
<xsl:assert test="name($item) eq 'author'"/>

And this:

<xsl:variable name="item" select="..." as="element(author)+" />

is equivalent to:

<xsl:variable name="item" select="..." />
<xsl:assert test="count($item) ge 1" />

What other mechanisms are there in XSLT that effectively perform implicit
asserts?

What other ways do you do defensive programming in XSLT?

/Roger

Current Thread