Re: [xsl] Get an element with max. number of certain children element

Subject: Re: [xsl] Get an element with max. number of certain children element
From: Xiaocun Xu <xiaocunxu@xxxxxxxxx>
Date: Fri, 18 Jan 2002 12:04:45 -0800 (PST)
Hi, Jeni:

Yeah, you are right, I meant "shorter" :)
Looks like shorter solution is less efficient; while
more efficient solution is longer.  I eventually went
with the recusrive template solution you have
suggested to accomplish what I needed.

Much thanks,

> > 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]
>                           /Attachment">
>     <xsl:text>,Name,URL,Description</xsl:text>
>   </xsl:for-each>
> [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...
> Cheers,
> Jeni
> ---
> Jeni Tennison

Do You Yahoo!?
Send FREE video emails in Yahoo! Mail!

 XSL-List info and archive:

Current Thread