[xsl] Sum produces NaN

Subject: [xsl] Sum produces NaN
From: "James Steven" <JSteven@xxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 13 Sep 2004 16:00:38 +0100
Hello
To add a column of numbers I am using the xsl below.  However if there is
one value missing in the column then the xsl produces NaN.

eg. Below is xml with a value missing in last <data>.  I then use the xsl
below to add all <data> values but receive NaN because of the missing value.
If all <data> tags have value then the sum works.  Please could anyone show
how to resolve this.  Any help greatly appreciated.

<a>
  <b>
	<data>1</data>
  </b>
  <b>
      <data>2</data>
  </b>
  <b>
      <data>5</data>
  </b>
  <b>
      <data></data>
  </b>
</a>


<xsl:template name="orderlist.sum.edit">
	<xsl:param name="set-of-order"/>
		 <xsl:variable name="sumorg">
		  	<xsl:call-template name="orderlist.sum">
		  	    <xsl:with-param name="set-of-order" select="$set-of-order"/>
		  	</xsl:call-template>
		  </xsl:variable>
	<xsl:value-of select='format-number($sumorg, "####,###,##0.00")'/>
</xsl:template>

<xsl:template name="orderlist.sum">
	<xsl:param name="set-of-order"/>
		<xsl:choose>
		  	 <xsl:when test="$set-of-order">
		  			<xsl:variable name="first">
		  				<xsl:apply-templates select="$set-of-order[1]/data"/>
		  			</xsl:variable>
		  			<xsl:variable name="rest">
		  		<xsl:call-template name="orderlist.sum">
		  			 <xsl:with-param name="set-of-order" select="$set-of-order[position()
!= 1]"/>
		  				</xsl:call-template>
		  			</xsl:variable>
		  				<xsl:value-of select="$first + $rest"/>
		  			</xsl:when>
		  			<xsl:otherwise>0</xsl:otherwise>
		  	 </xsl:choose>
		  </xsl:template>

Current Thread