xsl-list
[Top] [All Lists]

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

2022-05-06 10:29:13
In addition to being obsessive about using @as, I tend to have fallback 
templates that will report unhandled elements. This approach tends to tell me 
when I’m done handling all the cases in my input corpus.

And of course the general programming practice of checking preconditions before 
performing business logic and putting effort into error trapping and reporting 
has served me well over the years.

I’m also starting to take more advantage of XSLT unit tests with XSpec.

Cheers,

Eliot

_____________________________________________
Eliot Kimber
Sr Staff Content Engineer
O: 512 554 9368
M: 512 554 9368
servicenow.com<https://www.servicenow.com>
LinkedIn<https://www.linkedin.com/company/servicenow> | 
Twitter<https://twitter.com/servicenow> | 
YouTube<https://www.youtube.com/user/servicenowinc> | 
Facebook<https://www.facebook.com/servicenow>

From: Roger L Costello costello(_at_)mitre(_dot_)org 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com>
Date: Friday, May 6, 2022 at 9:16 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
<xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Subject: [xsl] Defensive programming in XSLT using asserts and as="..."
[External Email]


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
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>