[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Signature of a function that may throw an error

Subject: Re: Signature of a function that may throw an error
From: "Christophe Marchand cmarchand@xxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 23 Jan 2019 23:05:01 -0000
Re:  Signature of a function that may throw an error
Finally, problem didn't come from XSL or Saxon.

We have an process orchestrator, that can run many treatments. Each 
treatment is deployed as a jar file in the container. This orchestrator, 
very very badly written, doesn't isolate treatment's classpathes.

In this situation, we have 2 treatments, that have a common dependency, 
but in different releases. When searching for configuration.xsl, we were 
using the wrong one. And in this wrong release, the code returns an 
empty sequence, instead of an error.

It has been very difficult to understand, and your help, especially on 
the code that may raise this error, help us a lot.

As a conclusion, this orchestrator is going to be re-written totally. 
Never trust a program made by a developer you can't trust !

Thanks a lot,
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 <>)

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.