[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: RE: Find a set of nodes and depending on element v
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|