Subject: RE: [xsl] Sum produces NaN From: "Michael Kay" <mhk@xxxxxxxxx> Date: Mon, 13 Sep 2004 19:41:56 +0100 |
Firstly, why are you doing this with a recursive template rather than by using the sum() function? Secondly, why are you doing this: <xsl:variable name="first"> <xsl:apply-templates select="$set-of-order[1]/data"/> </xsl:variable> rather than <xsl:variable name="first" select="$set-of-order[1]/data"/> However, whichever way you do it, it's easy enough to include conditional logic to exclude the empty data elements. For example, you can write: sum(b/data[.!='']) Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: James Steven [mailto:JSteven@xxxxxxxxxxxxxxxxxxxxx] > Sent: 13 September 2004 16:01 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Sum produces NaN > > 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Sum produces NaN, cking | Thread | Re: [xsl] Sum produces NaN, David Carlisle |
Re: [xsl] XSLT, XHTML, and default , Joseph Dane | Date | Re: [xsl] XSLT, XHTML, and default , Joseph Dane |
Month |