xsl-list
[Top] [All Lists]

[xsl] Signature of a function that may throw an error

2019-01-22 08:35:53
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
--~--
<Prev in Thread] Current Thread [Next in Thread>