RE: [xsl] Addition/Subtraction of numbers.

Subject: RE: [xsl] Addition/Subtraction of numbers.
From: david_n_bertoni@xxxxxxxxxx
Date: Wed, 23 Jan 2002 15:55:36 -0800

The XPath function number() does not return a string. It returns the number which is the result of converting the argument according to a specified set of rules. See:


The only time "number($t1) = number($t1)" will be false is when the result of converting the value bound to $t1 is NaN, since NaN is never equal to anything, _including itself_. In fact, any comparison of NaN with any other value will always be false.

It's one of those exceedingly clever, but not always obvious idioms.

Dave


Joshua.Kuswadi@xxxxxxxxxxxxxxxxxxxx




          Joshua.Kuswadi@xxxxxxxxxxxxxxxxxxxx
          Sent by: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx

          01/23/2002 03:24 PM
          Please respond to xsl-list



To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
cc:
Subject: RE: [xsl] Addition/Subtraction of numbers.


Hi Jeni,

I'm curious about your solution:
> In XSLT 1.0 you need something like:
>
>   <xsl:variable name="n1">
>     <xsl:choose>
>       <xsl:when test="number($t1) = number($t1)">
>         <xsl:value-of select="$t1" />
>       </xsl:when>
>       <xsl:otherwise>0</xsl:otherwise>
>     </xsl:choose>
>   </xsl:variable>
>   <xsl:variable name="n2">
>     <xsl:choose>
>       <xsl:when test="number($t2) = number($t2)">
>         <xsl:value-of select="$t2" />
>       </xsl:when>
>       <xsl:otherwise>0</xsl:otherwise>
>     </xsl:choose>
>   </xsl:variable>
>   <xsl:variable name="temp1" select="$n1 + $n2" />

I have the understanding that the XPath number() function will return the string 'NaN' if the parameter passed in is not a number. Though, at a lower level, won't the same function called twice with identical parameter(s) return the same thing? So, when would your test of "number($t1) = number($t1)" fail?

Confusedly,
Joshua

GIF image

GIF image

Current Thread