xsl-list
[Top] [All Lists]

RE: Infinite Recursion Looking for Whitespace.

2003-01-27 11:21:13
Andy,

I've amended the code below to show a "failsafe" I added to the if statement:

<xsl:template name="looper">
        <xsl:param name="leftStringLength"/>
        <xsl:param name="leftStringValue"/>
                
                <xsl:if 
test="substring($leftStringValue,number($leftStringLength),'-1') != 't' and 
$leftStringLength >0 ">

                String Length: <xsl:value-of select="$leftStringLength" /> <BR/>
                String Value: <xsl:value-of select="$leftStringValue" /> <BR/>
                String End: <xsl:value-of 
select="substring($leftStringValue,number($leftStringLength),'1')" /><BR/>
                
                <!-- recursive call -->
                        <xsl:call-template name="looper">
                                <xsl:with-param name="leftStringLength" 
select="$leftStringLength - 1"/>
                                <xsl:with-param name="leftStringValue" 
select="substring($leftStringValue,'1',number($leftStringLength)-'1')" />
                        </xsl:call-template> 
                </xsl:if>
        
</xsl:template>

I've put some debug code in there to write out the values of both the 
stringlength and the stringvalue. It's rifling through one character at a time, 
but it's ignoring the condition to test the value of the character... it stops 
on the "and" condition of >0 but not on the != condition of whatever character 
I supply...

heath deforrest allison
"Arrowed!"




-----Original Message-----
From: Andy J. Cupp [mailto:acupp(_at_)fmr-systems(_dot_)com]
Sent: Monday, January 27, 2003 11:51 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Infinite Recursion Looking for Whitespace.


Hi Allison.  From your remarks, it seems you may have worked on this already, 
but I think you need an additional test to end the recursion.  Currently, if 
the template never encounters a blank space, it will just keep looping, sending 
nothing as the $leftStringValue parameter and -1,-2,-3,... as the 
$leftStringLeft parameter.  Maybe if you just have a test in the form of 
<xsl:if test="$leftStringValue">, that would end your recursion when the string 
has been examined.

-----Original Message-----
From: HEATH ALLISON [mailto:HEATH(_dot_)ALLISON(_at_)morningstar(_dot_)com]
Sent: Monday, January 27, 2003 10:57 AM
To: XSL List
Subject: [xsl] Infinite Recursion Looking for Whitespace.


Hello again, I'm still trying to fix my line-break problem. I'm trying to get 
my recursion loop to rifle through the value of $leftStringValue from the end 
to the start, but stop when it encounters the first blank space. The xsl:if 
test works if I set it to the value of $stringLength with a test of "> 0". But 
the second I change it to look for a space at the last position in a substring 
of $stringValue it goes infinite and overflows the stack. Any suggestions?

<xsl:template name="loop">
        <xsl:param name="leftStringLength"/>
        <xsl:param name="leftStringValue"/>
                
                <xsl:if 
test="(normalize-space(substring($leftStringValue,number($leftStringLength),'1')))
 != ' ' ">

                String Length: <xsl:value-of select="$leftStringLength" /> <BR/>
                String Value: <xsl:value-of select="$leftStringValue" /> <BR/>
                String End: <xsl:value-of 
select="substring($leftStringValue,number($leftStringLength),'1')" /><BR/>
                
                <!-- recursive call -->
                        <xsl:call-template name="loop">
                                <xsl:with-param name="leftStringLength" 
select="$leftStringLength - 1"/>
                                <xsl:with-param name="leftStringValue" 
select="substring($leftStringValue,'1',number($leftStringLength)-'1')" />
                        </xsl:call-template> 
                </xsl:if>
        
</xsl:template>


heath deforrest allison
"Arrowed!"




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


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


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



<Prev in Thread] Current Thread [Next in Thread>