RE: [xsl] Reverse Tokens Template

Subject: RE: [xsl] Reverse Tokens Template
From: Américo Albuquerque <aalbuquerque@xxxxxxxxxxxxxxxx>
Date: Fri, 16 May 2003 19:13:12 +0100
Try this template:

 <xsl:template name="reverse">
  <xsl:param name="str" select="string(.)"/>
  <xsl:param name="res" select="''"/>
  <xsl:param name="sep" select="''"/>
   <xsl:when test="contains($str,' ')">
    <xsl:call-template name="reverse">
     <xsl:with-param name="str" select="substring-after($str,' ')"/>
     <xsl:with-param name="sep" select="' '"/>
     <xsl:with-param name="res" select="concat(substring-before($str,'
   <xsl:value-of select="concat($str,$sep,$res)"/>

It recursively breaks the string on the space char and concat each peace

Hope that this helps you

  Américo Albuquerque

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Greene, Stephen
> Sent: Thursday, May 15, 2003 3:39 PM
> To: XSL List (E-mail)
> Subject: [xsl] Reverse Tokens Template
> Hi,
> I have been trying to modify (un-sucessfully) Dimitre 
> Novatchev's template to reverse the order of "words" in a 
> string (words being character substrings seperated by a space 
> character). Such that the string "hello world" would become 
> "world hello". I was wondering if anyone would be able to 
> offer any hints on how to accomplish this.
> I have tried modifying the template but as the word length is 
> variable, (and the words need to go back into a string, and 
> not be output) I have been unsuccessful in concatenating the 
> string after removing one word at a time.
> If this is not possible, is there a way in which I could 
> remove one word at a time from the end of the string? (in a 
> substring-before($theString, ' ') like way) Instead of the beginning?
> I thank you for your time and for your help,
> Regards,
> Stephen Greene
> National Research Council of Canada
>  XSL-List info and archive:

 XSL-List info and archive:

Current Thread