A couple little corrections:  The example makes more sense if you reverse
the numeric values in the HighestNumber and Number nodes in the XML.  This
way, the relevant xsl:when test doesn't get triggered when it should.  The
other thing is that in my final example, I should have said <xsl:when
test="//Number &lt; '2'"> rather than <xsl:when test="//Number<'2'">.

Dave

-----Original Message-----
From: Dave [mailto:[EMAIL PROTECTED]]
Sent: Monday, July 09, 2001 7:01 PM
To: [EMAIL PROTECTED]
Subject: RE: RelationalExpr doing alpha comparisons?


Gary,

Thanks for your response.  I'm using Xalan 2.1.0.  I'm invoking xalan
through the JAXP interface in my Java code.  Here's the XML and XSLT I'm
working with.  The XSLT is in the simplified stylesheet format:

XML:
<PrimePowerFactorizations>
<HighestNumber>100</HighestNumber>
<Factorization>
<Number>5</Number>
</Factorization>
</PrimePowerFactorizations>

XSLT:
<html xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; xsl:version="1.0">
<head>
        <title>Prime Power Factorizations</title>
</head>
<body>
        <xsl:choose>
                <xsl:when test="//Factor">
                        <p><xsl:value-of select="//Number"/> =
                        <xsl:for-each select="//Factor">
                                <xsl:value-of select="Base"/>^<xsl:value-of 
select="Exponent"/>
                                <xsl:if test="position()!=last()">*</xsl:if>
                        </xsl:for-each></p>
                </xsl:when>
                <xsl:when test="//Number=0">
                </xsl:when>
                <xsl:when test="//Number=1">
                        <p>Please enter a positive integer greater than one.</p>
                </xsl:when>
                <xsl:when test="//Number &gt; //HighestNumber">
                        <p>This program is currently generating the numbers from
                        <xsl:value-of select="//HighestNumber + 1"/> to
                        <xsl:value-of select="//Number"/>.  Return to this
                        page to see the highest number factored.</p>
                </xsl:when>
        </xsl:choose>

        <p>The highest number factored by this program so far is <xsl:value-of
select="//HighestNumber"/>.</p>

        <form method="POST"
action="http://localhost:8080/primes/servlet/PrimeServlet";>
                <p>Enter a number you would like a prime power factorization for:
                        <input type="text" name="Number" size="29"/>
                        <input type="submit" value="Submit/Refresh" name="Submit"/>
                </p>
        </form>
</body>
</html>

Again, the element that shows this issue is:
<xsl:when test="//Number &gt; //HighestNumber">,
whereas <xsl:when test="number(//Number) &gt; //HighestNumber">
produces the correct result.

The same result can be produced when specifying a number as a string as in:
<xsl:when test="//Number<'2'">

Please let me know what you figure out.
Dave


-----Original Message-----
From: Gary L Peskin [mailto:[EMAIL PROTECTED]]
Sent: Monday, July 09, 2001 5:25 PM
To: [EMAIL PROTECTED]
Subject: Re: RelationalExpr doing alpha comparisons?


Dave --

I think that Michael Kay is correct on this.  It may be a bug in Xalan.
What version of Xalan are you using and can you supply working XML and
XSLT examples that will allow us to reproduce the problem?

Gary

Dave wrote:
>
> According to Michael Kay, a relational comparison doesn't compare strings,
> but converts strings to numbers if possible and compares numeric values.
>
> When for example this element is evaluated by Xalan in my stylesheet:
>
> <xsl:when test="//Number &gt; //HighestNumber">
>
> where number and highest number contain numbers.
>
> It seems to compare the two nodes as strings, so for example, 5 is
> considered greater than 100.  This seems contradictory to Kay's
statements.
>
> It worked when I replaced the previous element with:
>
> <xsl:when test="number(//Number) &gt; //HighestNumber">.
>
> I'm just bothered that it didn't behave the way I thought it should.  Of
> course I'm just a beginner at all this.  Is this a problem with Xalan,
> Michael Kay, or me?
>
> Thanks,
> Dave Kaplan

Reply via email to