general substring replacement (was Re: ENCODING QUESTION?)

Subject: general substring replacement (was Re: ENCODING QUESTION?)
From: Mike Brown <mike@xxxxxxxx>
Date: Fri, 9 Jun 2000 19:46:23 -0600 (MDT)
> I am getting a String somehow which contains %20 or space characters.
> like 'This%20is%20Test' and I want to convert it to 'This is Test'

General purpose substring replacement should be in the FAQ, but I couldn't
find it. The closest I found was an answer by Michael Kay to a similar
question, and which I just posted a modified version of yesterday for
someone else. Here is yet another version.

  <!-- pretend this is in a template -->
  <xsl:variable name="myString" select="'This%20is%20Test'"/>
  <xsl:variable name="myNewString">
    <xsl:call-template name="replaceCharsInString">
      <xsl:with-param name="stringIn" select="string($myString)"/>
      <xsl:with-param name="charsIn" select="'%20'"/>
      <xsl:with-param name="charsOut" select="' '"/>
  <!-- $myNewString is a result tree fragment, which should be OK. -->
  <!-- If you really need a string object, do this: -->
  <xsl:variable name="myNewRealString" select="string($myNewString)"/>

<!-- here is the template that does the replacement -->
<xsl:template name="replaceCharsInString">
  <xsl:param name="stringIn"/>
  <xsl:param name="charsIn"/>
  <xsl:param name="charsOut"/>
    <xsl:when test="contains($stringIn,$charsIn)">
      <xsl:value-of select="concat(substring-before($stringIn,$charsIn),$charsOut)"/>
      <xsl:call-template name="replaceCharsInString">
        <xsl:with-param name="stringIn" select="substring-after($stringIn,$charsIn)"/>
        <xsl:with-param name="charsIn" select="$charsIn"/>
        <xsl:with-param name="charsOut" select="$charsOut"/>
      <xsl:value-of select="$stringIn"/>

   - Mike
Mike J. Brown, software engineer at         My XML/XSL resources: in Denver, Colorado, USA 

 XSL-List info and archive:

Current Thread