[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] split string to whole words based on length


Subject: RE: [xsl] split string to whole words based on length
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 26 Apr 2006 16:57:02 +0100

I think this kind of problem requires recursion even in 2.0: at least, if
you want it to be remotely efficient.

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: andrew welch [mailto:andrew.j.welch@xxxxxxxxx] 
> Sent: 26 April 2006 16:06
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] split string to whole words based on length
> 
> 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
Keywords