Subject: Re: [xsl] Summing computed values From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx> Date: Wed, 10 Jan 2001 18:33:28 +0000 |
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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Summing computed values, Kay Michael | Thread | [xsl] alternative to msxsl:node-set, Paul Thomas |
Re: [xsl] Character encoding in MSX, Christopher R. Maden | Date | [xsl] Passing text() or element nod, Jeni Tennison |
Month |