[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
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
|
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
|