This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Summing computed values


Mike Kay wrote:
>> Is anyone able to figure a way to sum computed values?
>
> In standard XSLT, it needs a recursive template. See the example on
> page 502 of my XSLT Programmer's Reference.

In XSLT 1.1, you can do it by creating a node set with the calculated
values in it, and then summing that:

  <xsl:variable name="subtotals">
    <xsl:for-each select="item">
       <subtotal><xsl:value-of select="price * qty" /></subtotal>
    </xsl:for-each>
  </xsl:variable>
  Total: <xsl:value-of select="sum($subtotals/subtotal)" />

You can do this now using the node-set extension function in most XSLT
processors.  For example in MSXML you can do:

  <xsl:variable name="subtotals">
    <xsl:for-each select="item">
       <subtotal><xsl:value-of select="price * qty" /></subtotal>
    </xsl:for-each>
  </xsl:variable>
  Total: <xsl:value-of select="sum(msxsl:node-set($subtotals)/subtotal)" />

Both of these methods require you to run through the entire set of
items twice, but they won't respond too terribly when you add lots
more items and they're possibly a little easier to grasp than a
recursive template.

I hope that helps,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]