XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
(Deleted User) Subject: Verion 1.0 XPATH for testing "between"
Author: (Deleted User)
Date: 02 Nov 2006 04:58 PM
I am probably missing something basic.
I have a string in a souce document that represents Version.
<xs:appinfo>
<gfs:Version StartVersion="2.4.26" EndVersion="2.4.26"/>
</xs:appinfo>

I have a parameter myVersion that contains a value. I want to test if myVersion is lexically between ( inclusive) the two end points.


<xsl:param name="myVersion" select="'2.4.26'"/>
<xsl:template match="xs:element | xs:complexType | xs:simpleType" mode="pass">
<xsl:variable name="myStart" select="xs:annotation/xs:appinfo/gfs:Version/@StartVersion"/>
<xsl:variable name="myEnd" select="xs:annotation/xs:appinfo/gfs:Version/@EndVersion"/>
<xsl:variable name="huh" select="$myStart = $myVersion or $myStart &lt; $myVersion"/>

Value of $huh is false
<xsl:variable name="huh" select="$myStart &lt;= $myVersion/>

They both should be true.

Greg


This also runs, but is not what I need
<xsl:when test="$myStart &lt;= $myVersion and $myEnd &gt; $myVersion">

When I code what I want in the last line there is an unspeified error in the syntax.
<xsl:when test="$myStart &lt;= $myVersion and $myEnd =&gt; $myVersion">

Also an unspecified error in this.

Postnext
Ivan PedruzziSubject: Verion 1.0 XPATH for testing
Author: Ivan Pedruzzi
Date: 02 Nov 2006 09:02 PM
Hi Greg,

Are you sure tha $myStart and $myEnd are assigned to the right value?
Which XSLT processor are you using?
I suggest to post complete example XSLT + XML

Hope this helps
Ivan Pedruzzi
Stylus Studio Team

Postnext
Tony LavinioSubject: Verion 1.0 XPATH for testing
Author: Tony Lavinio
Date: 03 Nov 2006 09:26 AM
With this line, you have =<
<xsl:when test="$myStart &lt;= $myVersion and $myEnd =&gt; $myVersion">

Try instead flipping the second comparison to get <=
<xsl:when test="$myStart &lt;= $myVersion and $myEnd &gt;= $myVersion">

Postnext
(Deleted User) Subject: Verion 1.0 XPATH for testing
Author: (Deleted User)
Date: 03 Nov 2006 12:52 PM
Run this in debug in the builtin engine

$t1 and $t2 should be both true as I see it.
They are not. $t1 = false $t2= true

It may have something to do with use of comparison operattors on strings

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<xsl:variable name="start" select="'A'"/>
<xsl:variable name="end" select="'C'"/>
<xsl:variable name="my1" select="'B'"/>
<xsl:variable name="my2" select="'A'"/>
<xsl:variable name="t1">
<xsl:value-of select="$start &lt;= $my2"/>
</xsl:variable>
<xsl:variable name="t2">
<xsl:value-of select="$start &lt; $my2 or $start = $my2"/>
</xsl:variable>
</xsl:template>
</xsl:stylesheet>

Posttop
Alberto MassariSubject: Verion 1.0 XPATH for testing
Author: Alberto Massari
Date: 06 Nov 2006 08:22 AM
Hi Greg,
the problem here is that <, <=, > and >= are not defined as you would expect. As stated in the XPath 1.0 specs, "when neither object to be compared is a node-set and the operator is <=, <, >= or >, then the objects are compared by converting both objects to numbers and comparing the numbers according to IEEE 754".
In your case, neither 'A' or 'B' or '2.4.64' can be converted into a number, so the comparison is performed between NaN values (that by definition cannot be compared).
If you want to check if a version number falls in between two version numbers, you will have to write a named template that splits the version numbers into single numbers (e.g. 2, 4 and 64) and compares the single numbers.

Hope this helps,
Alberto

 
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.