Subject: Re: [xsl] Get an element with max. number of certain children element From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Fri, 18 Jan 2002 10:07:55 +0000 |
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] /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 http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Get an element with max. numb, Xiaocun Xu | Thread | Re: [xsl] Get an element with max. , Xiaocun Xu |
Re: [xsl] Caching XML document as a, Jeni Tennison | Date | RE: [xsl] Quark IV, DPawson |
Month |