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

RE: [xsl] replacing parts of a string

Subject: RE: [xsl] replacing parts of a string
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Thu, 15 Jan 2004 06:02:05 -0800 (PST)

> >  Is there a (string)-replace function in xsl. Couldn't find one.
> Other than translate(), no.
> >  My problem: I get something like this in xml:
> >  <LongString>wert,dsfg,dsfg,ewrt,wert,xcvbs,rwete,ehgfh,xxxxxas
> >  d,awersdf,dfgxvxcv</LongString>
> >  
> >  I want to have a whitespace between the "," and the text.
> See the FAQ-you need to write a recursive template.

Or you will not have to write a recursive template (already written for
you) if you use the "str-map" template from FXSL.

This transformation:

<xsl:stylesheet version="1.0" 
exclude-result-prefixes="xsl testmap"
   <xsl:import href="str-map.xsl"/>
   <xsl:output omit-xml-declaration="yes" indent="yes"/>
   <xsl:template match="LongString">
     <xsl:variable name="vTestMap" 
       <xsl:call-template name="str-map">
         <xsl:with-param name="pFun" select="$vTestMap"/>
         <xsl:with-param name="pStr" select="."/>

    <xsl:template match="testmap:*">
      <xsl:param name="arg1"/>
      <xsl:value-of select="$arg1"/>
      <xsl:if test="$arg1 = ','">
      <xsl:text> </xsl:text>


When applied on your source.xml:


produces the desired output:

<LongString>wert, dsfg, dsfg, ewrt, wert, xcvbs, rwete, ehgfh, xxxxxasd,
awersdf, dfgxvxcv</LongString>

Dimitre Novatchev.
FXSL developer,

http://fxsl.sourceforge.net/ -- the home of FXSL
Resume: http://fxsl.sf.net/DNovatchev/Resume/Res.html

Do you Yahoo!?
Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

Current Thread