RE: [xsl] tail recursion and NaN

Subject: RE: [xsl] tail recursion and NaN
From: "Susan Campbell" <SCampbell@xxxxxxxxxxxxxx>
Date: Fri, 7 May 2004 08:59:19 -0400
Thanks for the help.  I later learned I also had to test for a dollar sign as well as empty cells.  This is what I'm using.  It works, but there may be a more compact/elegant way to do it.
sc

<xsl:template name="total-value">
   <xsl:param name="price"/>
 	 <xsl:param name="result" select="0"/>
 	 <xsl:param name="nodollarsign" select="translate($price,'$','')"/>
	   <xsl:choose>
		<xsl:when test="$price and number($price) = number($price)">			
			 <xsl:call-template name="total-value">
  			<xsl:with-param name="price" select="$price[position() &gt; 1]"/>
  			<xsl:with-param name="result" select="$result + $price"/>
  			</xsl:call-template>
  		</xsl:when>
		<xsl:when test="$nodollarsign">			
			<xsl:call-template name="total-value">
  			<xsl:with-param name="price" select="$price[position() &gt; 1]"/>
  			<xsl:with-param name="result" select="$result + $nodollarsign"/>
  		            </xsl:call-template>
  	           </xsl:when>				
  		<xsl:when test="$price and number($price) != number($price)">			
			<xsl:call-template name="total-value">
  			<xsl:with-param name="price" select="$price[position() &gt; 1]"/>
  			<xsl:with-param name="result" select="$result"/>
  			</xsl:call-template>
  		</xsl:when>
		<xsl:otherwise><xsl:value-of select="$result"/></xsl:otherwise>
	 </xsl:choose>
</xsl:template>

Current Thread