[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Get an element with max. number of certain childre

Subject: Re: Get an element with max. number of certain children element
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Fri, 18 Jan 2002 10:07:55 +0000
xml max number
Hi Xiaocun,

> I have researched archive and been using Jeni's solution on getting
> the element with max. number of certain children element via
> xsl:sort.
> <xsl:variable name="maxAttachment">
>   <xsl:for-each select="LineItem">
>     <xsl:sort select="count(Attachment)" order="descending" />
>     <xsl:if test="position() = 1">
>       <xsl:value-of select="."/>
>     </xsl:if>
>   </xsl:for-each>
> </xsl:variable>
> Then I wish to use this variable later in:
> <xsl:for-each select="$maxAttachment/Attachment">
>   <xsl:text>,Name,URL,Description</xsl:text>
> </xsl:for-each>
> The problem seems that xsl:variable will not produce node-set, which
> I need. I am aware of the solutions (via recursion or temp node-set)
> that uses $maxAttachment as a number (count(Attachment)), but is
> there a more elegent solution that does not require
> processor-dependent extensions?

If by 'more elegant', you mean shorter, then I think that what you're
after is a way of finding the LineItem elements that contain the
$maxAttachment number of Attachment elements. You could do this with:

  <xsl:for-each select="LineItem[count(Attachment) = $maxAttachment][1]

[Note that if there's more than one LineItem with the same (maximum)
number of Attachment children, then you'll get the first one in
document order.]
It's short, but it is not very efficient - not only do you have to go
through all the LineItem elements in order to work out what the
$maxAttachment is, you have to go through them all again, doing
exactly the same calculation on them, to work out whether they're the
one with the maximum number of attachments. But you might not care
about performance, I guess...



Jeni Tennison

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

Current Thread


Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
First Name
Last Name
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.