This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: sum of the evaluated values
- From: Dimitre Novatchev <dnovatchev at yahoo dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Thu, 22 Nov 2001 02:31:47 -0800 (PST)
- Subject: [xsl] Re: sum of the evaluated values
- Reply-to: xsl-list at lists dot mulberrytech dot com
> i have xml:
> <event type="1" time="3:00">
> <event type="0" time="2:00">
> <event type="1" time="4:00">
> <event type="1" time="5:00">
> and i need sum of the minutes: number(substring-before(@time,':'))
> only where @type=1.
>
> How it can be done?
Yet aother application for the transform-and-sum template
(see http://sources.redhat.com/ml/xsl-list/2001-11/msg00831.html )
Here's how you could use it:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:func-transform="f:func-transform"
exclude-result-prefixes="xsl func-transform"
>
<xsl:import href="transform-and-sum.xsl"/>
<xsl:output method="text"/>
<func-transform:func-transform/>
<xsl:template match="/">
<xsl:call-template name="transform-and-sum">
<xsl:with-param name="pFuncTransform"
select="document('')/*/func-transform:*[1]"/>
<xsl:with-param name="pList" select="/*/*/@time"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="func-transform:*">
<xsl:param name="arg" select="0"/>
<xsl:value-of select="substring-before($arg, ':')"/>
</xsl:template>
</xsl:stylesheet>
This when applied on your xml source (corrected to be weel-formed):
<events>
<event type="1" time="3:00"/>
<event type="0" time="2:00"/>
<event type="1" time="4:00"/>
<event type="1" time="5:00"/>
</events>
gives the following result:
14
Hope this helped.
Cheers,
Dimitre Novatchev.
__________________________________________________
Do You Yahoo!?
Yahoo! GeoCities - quick and easy web site hosting, just $8.95/month.
http://geocities.yahoo.com/ps/info1
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list