[xsl] split string to whole words based on length

Subject: [xsl] split string to whole words based on length
From: "andrew welch" <andrew.j.welch@xxxxxxxxx>
Date: Wed, 26 Apr 2006 16:06:29 +0100
I'm sure there's a good xslt 2.0 way of doing this that doesn't
involve a recursive named template or function.  In fact I'm sure it's
come up a few times but I can't find it in the archives.

Given a string of comma delimeted words and a length, split the string
into substrings so that whole words are kept intact with proper use of
the delimiter, where no string exceeds the length.

So, given the following:

<xsl:variable name="str" select="'one,two,three,four,five'" as="xs:string"/>
<xsl:variable name="length" select="10" as="xs:integer"/>

Should be output as:

<words>one,two</words>
<words>three,four</words>
<words>five</words>

As I say, I'm sure there's a quality solution to this, rather than the
long winded recursive approach.

Any takers?

Current Thread