This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
general substring replacement (was Re: ENCODING QUESTION?)
- To: xsl-list at mulberrytech dot com
- Subject: general substring replacement (was Re: ENCODING QUESTION?)
- From: Mike Brown <mike at skew dot org>
- Date: Fri, 9 Jun 2000 19:46:23 -0600 (MDT)
- Reply-To: xsl-list at mulberrytech dot com
> 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="' '"/>
</xsl:call-template>
</xsl:variable>
<!-- $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:choose>
<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:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$stringIn"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
- Mike
____________________________________________________________________
Mike J. Brown, software engineer at My XML/XSL resources:
webb.net in Denver, Colorado, USA http://www.skew.org/xml/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list