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

Re: Saxon error: "If none of the conditions is satisfi

Subject: Re: Saxon error: "If none of the conditions is satisfied, an empty sequence..."
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Tue, 24 May 2011 00:12:54 +0100
Re:  Saxon error: "If none of the conditions is satisfi
On 23/05/2011 23:47, tom a wrote:
Hello,

When attempting to compile a stylesheet containing the following variable
definition:

<xsl:variablename="seq_position"as="xs:integer*">
<xsl:choose>
<xsl:whentest="name() eq 'step1'">
<xsl:sequenceselect="count(preceding-sibling::step1) + 1"/>
</xsl:when>
<xsl:whentest="name() eq 'step2'">
<xsl:sequenceselect="count(preceding-sibling::step2) + 1"/>
</xsl:when>
<xsl:whentest="name() eq 'step3'">
<xsl:sequenceselect="count(preceding-sibling::step3) + 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:sequenceselect="99+1"/><!--trying to placate saxon->
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
I get the error:
"XTTE0570: Conditional expession: If none of the conditions is satisfied, an
empty sequence
will be returned, but this is not allowed as the value of variable
$seq_position"
I haven't the foggiest idea why this would be. Any help would be most greatly
appreciated.

I assume you only get the error when the xsl:otherwise branch is absent, and when the declared type really doesn't allow an empty sequence (for example, as="xs:integer+" rather than as="xs:integer*"). The reason for the error is that omitting the otherwise branch is equivalent to writing


<xsl:otherwise><xsl:sequence select="()"/></xsl:otherwise>

and this would give a type error on the grounds that () is not a legal value for the variable.

However, there have been a number of complaints about this interpretation of the spec, and I'm going to change it in the next release so you get a compile time warning, followed by a run-time error if the otherwise branch is actually selected.

Michael Kay
Saxonica

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.