[xsl] Error recovery from casting in XSLT 2.0
Subject: [xsl] Error recovery from casting in XSLT 2.0
From: Fraser Crichton <fc@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 19 Jun 2007 11:47:18 +0100
|
Hi, there,
I'm new to XSLT 2.0 and have a question about recovering from casting
errors, say for instance I'm trying to cast to a date, I'd do something
like -
<xsl:function name="f:castToDate" as="xs:date">
<xsl:param name="date-string" as="xs:string" />
<xsl:sequence select="if ($date-string castable as xs:date)
then xs:date($date-string)
else if ($date-string castable as xs:dateTime)
then xs:date(substring-before($date-string,'T'))
else()" />
</xsl:function>
What I'm wondering is how do I raise some kind of error in the final
else() if the function gets passed something it can't cast? e.g.
<xsl:function name="f:castToDate" as="xs:date">
<xsl:param name="date-string" as="xs:string" />
<xsl:sequence select="if ($date-string castable as xs:date)
then xs:date($date-string)
else if ($date-string castable as xs:dateTime)
then xs:date(substring-before($date-string,'T'))
else("NASTY ERROR CAN'T BE RETURNED BECAUSE I'M A DATE")" />
</xsl:function>
Or do I have to write another wrapper function? I'm only a few hundred
pages into the first of Mr Kay's books so forgive me if this is a bit basic.
Cheers,
Fraser