xsl-list
[Top] [All Lists]

RE: comparisons between strings have changed since XPath 1.0 warning

2005-10-05 01:26:57

I receive the below error message when I try to compile the 
below XML. I 
am using saxon7 

Saoxn 7-point-what? Whatever the answer, you're way out of date: the current
release is Saxon 8.5.1. Since the 2.0 specs have actually been evolving over
several years, it's difficult to tell you what the spec was at the time your
particular version came out.

You haven't shown the <xsl:stylesheet> element. It may not make any
difference on older releases, but the current spec is that if xsl:stylesheet
specifies version="1.0" you get backwards compatible behavior in this area,
if it specifies version 2.0 then the new rules are followed.

Your expression here is comparing a result tree fragment (document node) to
a string. In 1.0 (or 1.0 mode) both values are converted to numbers and
compared numerically. In 2.0 mode, they are compared as strings. So in 1.0
mode '20'>'3', in 2.0 mode '20'<'3'.

To ensure a numeric comparison under either version, write test="$webs &gt;
3" (and use the current Saxon release).

Looking at it more carefully, what is this construct trying to achieve:

<xsl:variable name="webs">
     <xsl:number value="count(WebExtra)"/>
</xsl:variable>

This evaluates count(WebExtra) giving a number (say 5), it then formats it
using the default numeric format, which gives the string "5"; it then
creates a result tree fragment containing a text node whose string value is
"5" - all so that the value can be converted back to a number!

Just write <xsl:variable name="webs" select="count(WebExtra)"/>.

Michael Kay
http://www.saxonica.com/


and can trace my error to 
        <xsl:when test="$webs &gt; '3'">
but I am not sure how to fix this. I found some info on the 
oasis list 
site, but nothing in the mulberry archives.

Any help would be appreciated. Thanks in advance-troy


***********************Error********************************
  Less-than and greater-than comparisons between strings have changed 
since XPath 1.0


***********************XSL********************************

<xsl:if test="string-length(WebExtra) &gt; 1">
        <xsl:variable name="webs">
                <xsl:number value="count(WebExtra)"/>
        </xsl:variable>
        <xsl:choose>
                <xsl:when test="$webs &gt; '3'">
                        <xsl:result-document href="WebExtra.html">
                                <xsl:for-each select="WebExtra">
                                                
<p><xsl:copy-of select="
ABSTOC"/></p>
                                </xsl:for-each>
                        </xsl:result-document>
                                        <a href="WebExtra.html">
                                                <img src="
/common/images/doi_bookmark.gif" width="18" height="20" 
alt="Web Extra" 
class="hspace" border="0" align="absMiddle"/><xsl:value-of 
select="'Web 
Extras'"/>
                                        </a>
                </xsl:when>
                <xsl:otherwise>
                        <xsl:for-each select="WebExtra">
                                <p> <xsl:copy-of select="ABSTOC"/></p>
                        </xsl:for-each>
                </xsl:otherwise>
        </xsl:choose>
</xsl:if>

************************XML*******************************

<Article>
        <WebExtra>
                <TITLE>My first title here</TITLE>
                                <ABSTOC>Web extra: Part I</ABSTOC>
        </WebExtra>
        <WebExtra>
                <TITLE>My second title here</TITLE>
                                <ABSTOC>Web extra: Part II</ABSTOC>
        </WebExtra>
 
<!--Can have anywhere from 0 to 100 web extras listed-->

</Article>

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--