[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Infinite Loop when trying to use String-Replace
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|