I needed to add some declarative error checking to some XSLT templates
recently. Specifically, I wanted to throw an error if my selects yielded an
empty string, indicating that the input XML was wrong.
Unfortunately, there seems to be no easy way of doing this in XSLT, nor in
XslTransform. The approved way is to validate against an XSD schema,
but for various reasons, I didn't want to go to the hassle of creating one.
I found a partial solution using
xsl:message with the
terminate="yes" attribute. Under
following code throws an exception if the XPath expression is empty.
<xslmessage terminate="yes">Missing expression</xslmessage>
<xslvalue-of select="/some/xpath/expression" />
It doesn't do anything, however, in XMLSpy.
The downside, of course, is that you have to maintain the expression in two places,
and the template becomes littered with those annoying tests.