This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: string-length
- To: xsl-list at mulberrytech dot com
- Subject: Re: string-length
- From: Steve Tinney <stinney at sas dot upenn dot edu>
- Date: Sun, 02 Apr 2000 11:41:19 -0400
- References: <NDBBINMGCKGKJDPJOIIHCEIACAAA.bsorek@surfnotes.com>
- Reply-To: xsl-list at mulberrytech dot com
> I want to select all nodes (in order) as long as the additive
> string length is less then 915
> <CATEGORY>
> <DATA>
> ....
> </DATA>
> <DATA>
> ....
> </DATA>
Use recursion, and pass the length of cumulative length of your string
as a parameter. Wrap the whole thing inside a variable.
<xsl:variable name="str">
<xsl:call-template name="add-data"/>
</xsl:variable>
<xsl:template name="add-data">
<xsl:param name="strlen" select="0"/>
<xsl:param name="index" select="1"/>
<xsl:if test="strlen < 915">
<xsl:value-of select="DATA[$index]"/>
</xsl:if>
<xsl:if test="$index <= count(DATA)">
<xsl:call-template name="add-data">
<xsl:with-param name="strlen"
select="$strlen+string-length(DATA[$index])"/>
<xsl:with-param name="index"
select="$index+1"/>
</xsl:call-template>
<xsl:if>
</xsl:template>
(Untested, and probably not exactly what you want when, e.g., the first
DATA node has more than 915 characters, but you get the idea)
Steve
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list