xsl-list
[Top] [All Lists]

RE: Infinite Recursion Looking for Whitespace.

2003-01-27 10:51:01
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



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