Re: [xsl] XSL is NOT a string processing language!

Subject: Re: [xsl] XSL is NOT a string processing language!
From: "Remco Bouckaert" <rrb@xxxxxxxx>
Date: Thu, 23 May 2002 13:06:25 +1200
How about this:

<xsl:stylesheet xmlns:xsl="";

<xsl:template match="/">
 <xsl:call-template name="replace-string"><xsl:with-param

<xsl:template name="replace-char">
 <xsl:param name="char"></xsl:param>
  <xsl:when test="$char='a'">bY</xsl:when>
  <xsl:when test="$char='b'">aY</xsl:when>
  <xsl:otherwise><xsl:value-of select="$char"/></xsl:otherwise>

<xsl:template name="replace-string">
 <xsl:param name="str"></xsl:param>
 <xsl:if test="string-length($str)&gt;0">
  <xsl:variable name="first" select="substring($str,1,1)"></xsl:variable>
  <xsl:variable name="rest" select="substring($str,2,32786)"></xsl:variable>
  <xsl:call-template name="replace-char"><xsl:with-param name="char"
  <xsl:call-template name="replace-string"><xsl:with-param name="str"


Update the template "replace-char" to get the replacement for each of the
characters you want



----- Original Message -----
From: "Philippe Figon" <philippe.figon@xxxxxxxxxxxx>
To: <XSL-List@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Thursday, May 23, 2002 1:46 PM
Subject: [xsl] XSL is NOT a string processing language!

> Hello,
> First I'd like to say that I _know_ XSL is not a string processing
> but I am facing a problem I wish I could solve inside XSL itself.
> Here it is : writing style sheets to convert XML in LaTeX I have to make
> some characters substitutions due to the "escape chars".
> I'm heavily using David Carlisle string-replace template, it works fine
> because of its "recursiveness" I can't obtain sequential replacement :
> If I want to replace 'a' by 'bX' and 'b' by 'aY' (which really happens
> \ and { for example), within the string 'bias' I will _never_ obtain
> 'aYibXs' which is what I want, but aYiaYXs or bXYibXs dependind on the
> of the calls to the string-replace template.
> Due to the lack of "real" variables I can't find a way of doing this, I've
> tried out many different ways but it's always endind with a "oh no, you
> can't change the value of a variable and pass it to another template". One
> solution could have been the use of global variables, but if you change
> them, the change will be available only in the template where you made it
> (kind of local global variable ;-)), no way to escape this circle.
> Does anyone think it's possible to do such sequential substitution ?
> Philippe
>  XSL-List info and archive:

 XSL-List info and archive:

Current Thread