This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Addition/Subtraction of numbers.


Hi Raj,

>         I am trying to add numbers present in two variables like
>
> <xsl:variable name="temp1" select="$t1 + $t2" />
>
> if varaibles t1 , t2 have some numbers, it goes through fine. But if
> they are null NaN is comming in the output. is there a way I can
> convert these variables to numbers before adding them(null should be
> converted to zero) or Is there any other way to handle this
> condition.

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" />

---
  
XSLT 2.0 makes it easier because of the conditional expressions in
XPath 2.0. You can do:

  <xsl:variable name="n1"
    select="if (number($t1) = number($t1)) then $t1 else 0" />
  <xsl:variable name="n2"
    select="if (number($t2) = number($t2)) then $t2 else 0" />
  <xsl:variable name="temp1" select="$n1 + $n2" />

Depending on how you're getting the values of $t1 and $t2 (and the
final definition of if-absent()) it might also be possible to use the
if-absent() function:

  <xsl:variable name="temp1"
    select="if-absent($t1, 0) + if-absent($t2, 0)" />

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]