xsl-list
[Top] [All Lists]

RE: tail recursion optimization (was How efficient is DVC?)

2003-03-23 16:44:17
The problem that when the recursive template is a matching 
template instead of a named template, it is hard for the 
processor to recognize that the apply-templates at the end of 
the template will result in the same template being applied. 
For example, Robert's second example has this:

  <xsl:template match="group">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
      <xsl:copy-of select="./city"/>
    </xsl:copy>
    <xsl:apply-templates select="./group"/>
  </xsl:template>

I don't know if any processors can optimize this. 

It's true that Saxon today only does tail-recursion optimization on a
self-recursive call-template instruction. In principle, however, any
call done as the last thing in a routine can be optimized in this way,
it doesn't have to be a self-recursive call. So it's quite possible in
principle to optimize this one even if you can't recognize it as being
self-recursive.

Michael Kay


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