Hello,
I have a function that must return a xs:string, or raise an error, if
result value can not be computed, or is empty-sequence.
Here is function :
<xsl:function name="conf:getConfVar" as="xs:string">
<xsl:param name="conf" as="element(els-conf:conf)"/>
<xsl:param name="varName" as="xs:string"/>
<xsl:sequence select="
if (exists($conf/els-conf:variable[@name=$varName]))
then $conf/els-conf:variable[@name=$varName]/@value
else (
error(
$conf:ERROR_MISSING_ENTRY,
concat('Entry ',$varName,' is missing in environment
configuration')
)
)
"/>
</xsl:function>
When a variable does not exist in $conf, I expect an error being raised,
and expect to catch it in a xsl:try / xsl:catch.
But, in this case, I get this :
XTTE0780: Conditional expression: The condition is not satisfied, so an
empty sequence is returned, but this is not allowed as the result of
call to conf:getConfVar
in xsl:sequence/@select ....
* I understand that error() function never return a value, so return
value does not satisfies xsl:function/@as constrint. Is it correct ?
* How could I write this, as I want the return type being xs:string,
and not xs:string?, and I want my error to be raised when entry is
missing ?
Best regards,
Christophe
--~----------------------------------------------------------------
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
--~--