xsl-list
[Top] [All Lists]

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

2022-05-06 11:26:25
If you can express the condition with an @as attribute, use that in preference 
to an xsl:assert, because it's much more amenable to static analysis - 
certainly with Saxon, xsl:assert will only ever give you a run-time error. The 
diagnostics for type errors will also tend to be better.


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

is equivalent to:

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


Almost. name() is sensitive to the choice of namespace prefixes, and should 
only be used to generate diagnostic output. If you need an assertion here, use

<xsl:assert test="$item[self::author]"/>

or

<xsl:assert test="$item instance of element(author)"/>

Michael Kay
Saxonica
--~----------------------------------------------------------------
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>