Subject: Re: [xsl] Infinite Loop when trying to use String-Replace From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Wed, 31 Oct 2001 18:52:38 +0000 |
Hi Jeff, > I'm trying to use a string-replace template in order to replace all > occurences of the character "é" in a string. However, when I > try to run it in Stylus, I keep getting an error that the XSL > processor has detected an infinite loop. I cannot determine why I'm > getting this. There isn't an infinite loop with the source that you sent, but perhaps Stylus is really clever and is detecting one anyway because contains($string, $from) returns true if $from is an empty string. The template is a bit strange anyway, because it always gives the value after the $from in the $string as well as than stepping on recursively. Try the following: <xsl:template name="string-replace"> <xsl:param name="string"/> <xsl:param name="from"/> <xsl:param name="to"/> <xsl:choose> <xsl:when test="string($from) and contains($string, $from)"> <xsl:value-of select="substring-before($string, $from)" /> <xsl:value-of select="$to"/> <xsl:call-template name="string-replace"> <xsl:with-param name="string" select="substring-after($string, $from)" /> <xsl:with-param name="from" select="$from"/> <xsl:with-param name="to" select="$to"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$string"/> </xsl:otherwise> </xsl:choose> </xsl:template> I hope that helps, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Infinite Loop when trying to , Mataczynski, Jeff | Thread | RE: [xsl] Infinite Loop when trying, Ivan Pedruzzi |
Re: [xsl] Position or Count, Jeni Tennison | Date | Re: [xsl] Question of performance, Jay Kline |
Month |