|
Subject: Re: Getting a longest node From: Phil Lanch <phil@xxxxxxxxxxxxxxx> Date: Mon, 17 Jan 2000 17:02:58 +0000 |
Wendell Piez wrote:
>
> 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(.) > $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
Yeah, that's it.
<xsl:template name="getlongest">
<xsl:param name="nodeset"/>
<xsl:param name="longest" select="0">
<xsl:choose>
<xsl:when test="$nodeset">
<xsl:choose>
<xsl:when test="string-length($nodeset[1]) > $longest">
<xsl:call-template name="getlongest">
<xsl:with-param name="nodeset" select="$nodeset[position()
> 1]"/>
<xsl:with-param name="longest"
select="string-length($nodeset[1])"/>
</xsl:call-template>
<xsl:when>
<xsl:otherwise>
<xsl:call-template name="getlongest">
<xsl:with-param name="nodeset" select="$nodeset[position()
> 1]"/>
<xsl:with-param name="longest" select="$longest"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$longest"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
--
cheers
phil
"When they bring me fear soup to eat,
I try not to eat it, I try to send it back.
But sometimes I'm too afraid to and have to eat it anyway."
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: Getting a longest node, Sebastian Rahtz | Thread | Re: Getting a longest node, Wendell Piez |
| RE: sorting and parameters, Kay Michael | Date | Re: No more 1957, Duane Nickull |
| Month |