xsl-list
[Top] [All Lists]

tail recursion and NaN

2004-05-03 09:15:47
Greetings,
I was using a simple recursion I found on this list and I testing for values 
that were NaN.  Everything was fine. But I began working with larger files and 
found that simple recursion would not handle the larger files.  I found an 
article about tail recursion and switched to that.  The files now get 
processed, but I do not know where to put the test for empty nodes.

Thank you for any help you can give me.
Susan Campbell


<!--this passes the price and gets the value for output-->
<xsl:variable name="sum">
        <xsl:call-template name="total-value">
              <xsl:with-param name="price"
                                select="//z30-price"/>
        </xsl:call-template>
</xsl:variable>



<!--This is the template with recursion to add the prices, needs test for NaN-->
<xsl:template name="total-value">
   <xsl:param name="price"/>
   <xsl:param name="result" select="0"/>
           <xsl:choose>
             <xsl:when test="$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:otherwise><xsl:value-of select="$result"/></xsl:otherwise>
             </xsl:choose>

</xsl:template>



<xsl:template name="section-01">
        <xsl:call-template name="table-open"/>
        <xsl:call-template name="display-gen">
                <!--Here's where the total is used-->
                 <xsl:with-param name="width" select="'70'"/>
                 <xsl:with-param name="label" select="'Prices total:'"/>
                 <xsl:with-param name="value" 
select="format-number(sum($sum),'$###,###.##')"/>
        </xsl:call-template>
         <xsl:call-template name="display-gen">
                <!--Here's where the count is used-->
                <xsl:with-param name="width" select="'70'"/>
                <xsl:with-param name="label" select="'No. of items:'"/>
                <xsl:with-param name="value" 
select="format-number(count(//z30-doc-number), '###,###,###')"/>
         </xsl:call-template>
          <xsl:call-template name="table-close"/>
</xsl:template>

  </xsl:template>
</xsl:stylesheet>




<Prev in Thread] Current Thread [Next in Thread>