This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: newbie: xsl:key and summation of substrings
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Sun, 9 Dec 2001 18:07:54 -0000
- Subject: RE: [xsl] newbie: xsl:key and summation of substrings
- Reply-to: xsl-list at lists dot mulberrytech dot com
Here are three ways to sum over a computed quantity:
* Create a result tree fragment containing nodes whose value is the computed
number, and use sum(xx:node-set($rtf//value)) to do the summation, where
xx:node-set() is your vendor's extension function for converting an RTF to a
node-set
* Use a recursive named template [this is the only standard XSLT 1.0
solution]
* Use the saxon extension function saxon:sum($nodes, saxon:expression(...))
Mike Kay
> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of Christopher
> Giblin
> Sent: 09 December 2001 17:00
> To: XSL-List@lists.mulberrytech.com
> Subject: [xsl] newbie: xsl:key and summation of substrings
>
>
> hi
>
> Despite reading the faqs, I am still banging my head on basic
> summation and
> would appreciate help.
>
> I have a repeating element that looks something like this:
> <disk>
> <freespace>1235 MB</freespace>
> </disk>
> <disk>
> <freespace>40 MB</freespace>
> </disk>
> <disk>
> <freespace>75 MB</freespace>
> </disk>
>
>
> I want to sum the "freespace", but sum(//disk/freespace)
> won't work because
> freespace is not a number due to the trailing "MB".
> Of course, sum(substring-before(//disk/freespace, ' ')) does
> not work...
>
> So I thought the solution lies in building an index of
> freespace values:
>
> <xsl:key name="freespace" match="//disk" use
> ="substring-before(freespace,' ')"/>
>
> <!-- output sum of freespace values: -->
> <total>
> <xsl:value-of select="sum(key('freespace',.))"/>
> </total>
>
> .. but it doesn't.
>
> I can not influence the content of this source document.
> How do I best sum over elements which need to be substring-parsed?
>
> I realize this is basic. I'm just not getting the examples in the faq.
>
> Thanks, chris
>
>
>
>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list