SaxonEE 9.8.0-14.
Christophe
Le 22/01/2019 ` 17:28, Michael Kay mike@xxxxxxxxxxxx a icrit :
> The XPath spec defines the return type of the error() function as
> "none", and the role of "none" in the type system is pretty much
> unspecified. As a result, there was always a steady stream of problems
> with edge cases in the W3C test suites in this area.
>
> Saxon actually implements the static return type of error() as item(),
> which is intended to ensure that you won't get a static type error
> from this sort of construct.
>
> This particular example doesn't seem to give a static error with Saxon
> 9.9, though the error message looks like it comes from Saxon. The code
> that produces this error is intended for the case where one of the
> branches of the conditional always returns an empty sequence
> (typically, an implicit xsl:otherwise).
>
> What software version are you running?
>
> Michael Kay
> Saxonica
>
>
>
>> On 22 Jan 2019, at 14:36, Christophe Marchand cmarchand@xxxxxxxxxx
>> <mailto:cmarchand@xxxxxxxxxx>
>> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx
>> <mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>> wrote:
>>
>> 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/293509>
>> (by email)
>
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/2837134>
> (by email <>)
|