|
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 |