[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] xsl recursion


Subject: Re: [xsl] xsl recursion
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Thu, 24 Feb 2005 07:40:44 +1100

There's no need for recursion and therefore for DVC here:

  <xsl:template match="/">
    <xsl:for-each select="/*/*">
      <xsl:value-of select=
        "concat(col2 - col1, '&#xA;')"/>
    </xsl:for-each>
  </xsl:template>





On Wed, 23 Feb 2005 15:46:14 +0000, Norman Barker <normanb@xxxxxxxxxxxxx> wrote:
> Hi,
> I am using Xalan and Cocoon to doing try and implement a "divide and
> conquer" algorithm for processing very
> large XML files.  I have a row count of 8400, so I should only have a
> depth of log2(8400) (about 12), I keep getting
> stack overflow error, and setting -RL with Xalan fails too, I thought
> DVC algorithms were supposed to stop this!
> 
> Anyway,
> 
> <sql:rowset>
>    <sql:row>
>          <col1>..</col1>
>           <col2>..</col2>
>     </sql:row>
>            :
>            :
> </sql:rowset>
> 
> and the template looks like
> where rows are the collection of sql:row above
> Any help would be great, thanks,
> 
>  <xsl:template name="data">
>      <xsl:param name="rows"/>
>    <xsl:param name="rowcount" select="count($rows)"/>
>    <xsl:choose>
>        <xsl:when test="$rowcount = 1">
>            <xsl:for-each select="sql:row">
>                <xsl:for-each select="*">
>                    <xsl:choose>
>                        <xsl:when test="(local-name(.) = 'date') or
> (local-name(.) = 'lat') or (local-name(.) = 'lon')"></xsl:when>
>                        <xsl:otherwise>
>                            <xsl:value-of select="."/>
>                        </xsl:otherwise>
>                    </xsl:choose>
>                </xsl:for-each>
>            </xsl:for-each>
>        </xsl:when>
>        <xsl:otherwise>
>            <xsl:variable name="cntHalf"
>                      select="floor($rowcount div 2)"/>
> 
>            <xsl:variable name="vValue1">
>              <xsl:call-template name="data">
>                <xsl:with-param name="rows"
>                       select="$rows[position() &lt;= $cntHalf]"/>
>              </xsl:call-template>
>            </xsl:variable>
> 
>            <xsl:variable name="vValue2">
>              <xsl:call-template name="data">
>                <xsl:with-param name="rows"
>                       select="$rows[position() > $cntHalf]"/>
>              </xsl:call-template>
>            </xsl:variable>
>        </xsl:otherwise>
>    </xsl:choose>
>  </xsl:template>


Current Thread
Keywords
xml