Getting a longest node

Subject: Getting a longest node
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Mon, 17 Jan 2000 10:38:21 +0000
Esteemed XSLers:

Does anyone know a way I could define a variable that would contain the
number of characters in the longest node in a node-set? Let the node set in
question be //DIV[@type='Chapter']: if I have three, with string lengths
88888, 99999, and 111110, I want my variable to be 111110.

I tried iterating over the node set and resetting a variable if it passes
the greater-than test --

<xsl:template name="getlongest">
  <xsl:param name="nodeset"/>
  <xsl:param name="longest" select="0">
  <xsl:for-each select="$nodeset">
    <xsl:if test="string-length(.) &gt; $longest">
      <xsl:variable name="longest" select="string-length(.)">
    </xsl:if>
  </xsl:for-each>
  <xsl:value-of select="$longest"/>
</xsl:template>

But of course since the reset variable is only scoped within the
xsl:for-each, all I get back is zero. :->

I think I know I have to do this with some kind of recursion, but I can't
get my head around how. Can anyone with a fresh mind think of the solution?

A good way to warm up on a Monday? I'll give you credit in my stylesheet....

TIA!
Wendell Piez


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