EDN Admin
Well-known member
I have the following xsl code to iterate through a node-set recursively.
<pre lang="x-xml <xsl:template name="ExtractGlobalWeekDayRecursive
<xslaram name="node-set"/>
<xslaram name="done"/>
<xslaram name="result"/>
<xsl:choose>
<xsl:when test="string($done) = false
<xsl:if test="string(node-set[1]/Period/text()) = 1W
<xsl:variable name="WeekDayString" select="XsltHelper:WeekDayToString(string($node-set[1]/ArrivalDate/text()))"/>
<xsl:if test="$WeekDayString !=
<xsl:call-template name="ExtractGlobalWeekDayRecursive
<xsl:with-param name="node-set" select="$node-set[position() > 1]"/>
<xsl:with-param name="done" select="true"/>
<xsl:with-param name="result" select="$WeekDayString"/>
</xsl:call-template>
</xsl:if>
</xsl:if>
<xsl:call-template name="ExtractGlobalWeekDayRecursive
<xsl:with-param name="node-set" select="$node-set[position() > 1]"/>
<xsl:with-param name="done" select="false"/>
</xsl:call-template>
</xsl:when>
<xsltherwise>
<xsl:value-of select="$result"/>
</xsltherwise>
</xsl:choose>
</xsl:template>[/code]
I get a StackOverflow Exception when runnig this template rule! How could I avoid it, when the node-set holds 500-1000 nodes?
View the full article
<pre lang="x-xml <xsl:template name="ExtractGlobalWeekDayRecursive
<xslaram name="node-set"/>
<xslaram name="done"/>
<xslaram name="result"/>
<xsl:choose>
<xsl:when test="string($done) = false
<xsl:if test="string(node-set[1]/Period/text()) = 1W
<xsl:variable name="WeekDayString" select="XsltHelper:WeekDayToString(string($node-set[1]/ArrivalDate/text()))"/>
<xsl:if test="$WeekDayString !=
<xsl:call-template name="ExtractGlobalWeekDayRecursive
<xsl:with-param name="node-set" select="$node-set[position() > 1]"/>
<xsl:with-param name="done" select="true"/>
<xsl:with-param name="result" select="$WeekDayString"/>
</xsl:call-template>
</xsl:if>
</xsl:if>
<xsl:call-template name="ExtractGlobalWeekDayRecursive
<xsl:with-param name="node-set" select="$node-set[position() > 1]"/>
<xsl:with-param name="done" select="false"/>
</xsl:call-template>
</xsl:when>
<xsltherwise>
<xsl:value-of select="$result"/>
</xsltherwise>
</xsl:choose>
</xsl:template>[/code]
I get a StackOverflow Exception when runnig this template rule! How could I avoid it, when the node-set holds 500-1000 nodes?
View the full article