[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[xml-dev] calculating list of values using variables
- From: Ian Rogers <ian.rogers@net800.co.uk>
- To: 'Xml-Dev <xml-dev@lists.xml.org>
- Date: Wed, 19 Sep 2001 12:02:06 +0100
can anyone help.
I sent a post out before about trying to use variables, and have been trying
some code but it comes up with the error "Keyword xsl:stylesheet may not
contain PCDATA nodes."
I have a set of details which contain an amount and a quantity and i want to
calculate the total amount for each set of details. I can calculate that and
place it in a variable, but i now want to calculate the total for all the
sets of details, giving an overall amount for all the sets of details
<xsl:variable name="Items" select="//details"/>
<xsl:variable name="TotalValue">
<xsl:call-template name="Total">
<xsl:with-param name="Items" select="$Items"/>
<xsl:with-param name="RunningTotal" select="0"/>
</xsl:call-template>
</xsl:variable>
Total = <xsl:value-of
select="format-number($TotalValue, '####0.0#')"/>
<xsl:template name="Total">
<xsl:param name="Items"/>
<xsl:param name="RunningTotal"/>
<xsl:choose>
<xsl:when test="not($Items)">
<xsl:copy-of select="$RunningTotal"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="CurrentTotal"
select="$RunningTotal + ($Items[1]/amount * $Items[1]/quantity)"/>
<xsl:call-template name="Total">
<xsl:with-param name="Items" select="$Items[position()>1]"/>
<xsl:with-param name="RunningTotal" select="$CurrentTotal"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
"then i am calling the rest of my code to generate the table by using a
template and matching on the root node. I don't know if this could be
causing a problem?
<xsl:template match="/">
i would be very grateful if anyone could see what i am doing wrong or if
there is another way to calculate the total amount
thanks
Ian