xsl-list
[Top] [All Lists]

RE: getting the longest text node

2003-03-11 16:39:32
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?


Searching for it using head/tail recursion will take linear time, but
may use a lot of memory depending whether the processor implements tail
recursion. Sorting and taking the first will take (n log n) time, which
is almost as good - it may in fact be faster in many cases. A divide and
conquer recursion will also take linear time without the memory
problems.

I would probably go for the sort, as it's easiest to code:

<xsl:for-each select="foo/apple">
  <xsl:sort select="string-length(.)" data-type="number"
order="descending"/>
  <xsl:if test="position()=1"><xsl:value-of select="."/></xsl:if>
</xsl:for-each>

Michael Kay
Software AG
home: Michael(_dot_)H(_dot_)Kay(_at_)ntlworld(_dot_)com
work: Michael(_dot_)Kay(_at_)softwareag(_dot_)com 


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



<Prev in Thread] Current Thread [Next in Thread>