This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: RE: Find a set of nodes and depending on element values
- From: Dimitre Novatchev <dnovatchev at yahoo dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Mon, 4 Mar 2002 13:37:58 -0800 (PST)
- Subject: [xsl] Re: RE: Find a set of nodes and depending on element values
- Reply-to: xsl-list at lists dot mulberrytech dot com
Michael Kay wrote:
> > Now I want to find all <action> elements with the element
> > <loadsize>1</loadsize> and then process the average time
> > (<time>xxx</time>)
> > for each set of action elements with the same time.
>
> You'll have to explain yourself more clearly. The average time of a
> set of elements with the same time is the average of a set of numbers
> that are allthe same.
>
> I suspect you're trying to do the equivalent of the classic "sum of
> price times quantity for all items". Solutions include:
>
> (a) write a recursive named template
> (b) (Saxon extension) saxon:sum(//item, saxon:expression("@price *
> @qty"))
> (c) (XSLT 2.0, Saxon 7.0) sum(for $i in //item return $i/@price *
> $i/@qty)
>
> Michael Kay
The easiest way to perform this, while not having to use extension
functions (xxx:node-set() excluded) is to use a foldl/foldr function
from the FXSL functional programming library.
The article "The functional programming language XSLT" at the end of
the section about list processing contains an example of finding the
sum of products, where every product can consist of different number of
terms.
Using a functional programming library eliminates almost completely the
need for vendor-supplied libraries of extension functions.
Nor have we to wait for XPath 2.0 to come (even when it comes there
would be very difficult/awkward tasks that have an elegant solution
with a functional programming library).
Cheers,
Dimitre Novatchev.
__________________________________________________
Do You Yahoo!?
Yahoo! Sports - sign up for Fantasy Baseball
http://sports.yahoo.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list