Re: [xsl] getting the longest text node

Subject: Re: [xsl] getting the longest text node
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Tue, 11 Mar 2003 17:43:46 -0500
Florian,

There's an idiom for this kind of thing. It was first invented by ... someone who no doubt reads this list!

<xsl:template match="root">
  <xsl:for-each select="//apple">
    <xsl:sort select="string-length(.)" order="descending"/>
    <xsl:if test="position() = 1">
      <xsl:value-of select="."/>
    </xsl:if>
  </xsl:for-each>
</xsl:template>

It selects all the apple elements in the document and iterates over the set. The node list it selects is ordered by the string lengths of the apples selected. Only the first in this list is processed (hence you get the value of the first apple in the document whose length is longer than or equal to all the other apples' lengths).

As for "most performant and best" I'm rather doubt that I can guarantee that. :->

I hope that helps--
Wendell

At 04:35 PM 3/11/2003, you wrote:
i have a xml document like this:


<root> <foo> <apple>a</apple> <orange>oiasd</orange> </foo> <foo> <apple>hellooooo</apple> <orange>test</orange> </foo> </root>

what would be the most performant and best way to get
the longest text of a apple node, and the longest text
of a orange node?


======================================================================
Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================


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



Current Thread