Subject: RE: [xsl] Infinite Loop when trying to use String-Replace From: Christopher_Dant@xxxxxxxxxxxxxx Date: Wed, 31 Oct 2001 14:48:52 -0500 |
I 'd suggest that you try Saxon instead either from the command line or from with Stylus. You can use Saxon in Stylus: - Tools > Options > External XSLT - In "Default custom processor command line put something like: c:\xsltproc\oraxml\saxon.exe %1 %2 %3 You can download the compiled version of Instant Saxon (for Windows platform) from its SourceForge project page at http://sourceforge.net/projects/saxon. Note that Stylus just won't do everything you'll need it to, though it's getting better. One last thought - I've found it helpful to have several XSLT processors on hand for debugging and experimentation. More than once I gained a crucial insight from an a processor that I wasn't using regularly. HTH, Chris Christopher Dant Technology Director Jack Morton Worldwide Christopher_Dant@xxxxxxxxxxxxxx Voice (973) 581-1700 x141 Fax (973) 581-1701 -- NEW PHONE NUMBERS -- "Mataczynski, Jeff" <Jeff.Mataczynski@westgroup To: "'Jeni Tennison'" .com> <jeni@xxxxxxxxxxxxxxxx> Sent by: cc: "'XSL-List@xxxxxxxxxxxxxxxxxxxxxx'" owner-xsl-list@xxxxxxxxxxxx <XSL-List@xxxxxxxxxxxxxxxxxxxxxx> rytech.com Subject: RE: [xsl] Infinite Loop when trying to use String-Replace 10/31/2001 02:08 PM Please respond to xsl-list I tried using your template, but Stylus is still detecting an infinite loop. Any other suggestions? Jeff -----Original Message----- From: Jeni Tennison [mailto:jeni@xxxxxxxxxxxxxxxx] Sent: Wednesday, October 31, 2001 12:53 PM To: Mataczynski, Jeff Cc: 'XSL-List@xxxxxxxxxxxxxxxxxxxxxx' Subject: Re: [xsl] 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 XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: Re: [xsl] Infinite Loop when tr, Dimitre Novatchev | Thread | Re: [xsl] Infinite Loop when trying, Thomas B. Passin |
Re: Re: [xsl] Infinite Loop when tr, Dimitre Novatchev | Date | Re: [xsl] Position or Count, Kevin_Gutch |
Month |