jaxp/test/javax/xml/jaxp/unittest/transform/Bug8150704-1.xsl
author joehw
Wed, 09 Mar 2016 16:09:55 -0800
changeset 36486 b84e564d2358
permissions -rw-r--r--
8150704: XALAN: ERROR: 'No more DTM IDs are available' when transforming with lots of temporary result trees Reviewed-by: joehw Contributed-by: christoph.langer@sap.com

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="text"/>

  <xsl:template match="/">
    <xsl:call-template name="recurse1">
      <xsl:with-param name="num">
        <xsl:value-of select="0"/>
      </xsl:with-param>
    </xsl:call-template>
    <xsl:text>&#xa;</xsl:text>
  </xsl:template>

  <xsl:template name="recurse1">
    <xsl:param name="num"/>
    <xsl:call-template name="recurse2">
      <xsl:with-param name="num" select="0"/>
    </xsl:call-template>
    <xsl:if test="not($num = 19)">
      <xsl:variable name="tmpnumber"><xsl:value-of select="$num + 1"/></xsl:variable>
      <xsl:call-template name="recurse1">
        <xsl:with-param name="num">
          <xsl:value-of select="$tmpnumber"/>
        </xsl:with-param>
      </xsl:call-template>
    </xsl:if>
  </xsl:template>

  <xsl:template name="recurse2">
    <xsl:param name="num"/>
    <xsl:call-template name="recursefinal">
      <xsl:with-param name="num" select="0"/>
    </xsl:call-template>
    <xsl:if test="not($num = 19)">
      <xsl:variable name="tmpnumber"><xsl:value-of select="$num + 1"/></xsl:variable>
      <xsl:call-template name="recurse2">
        <xsl:with-param name="num" select="$tmpnumber"/>
      </xsl:call-template>
    </xsl:if>
  </xsl:template>

  <xsl:template name="recursefinal">
    <xsl:param name="num"/>
    <xsl:call-template name="dodot"/>
    <xsl:call-template name="dodot"/>
    <xsl:call-template name="dodot"/>
    <xsl:call-template name="dodot"/>
    <xsl:call-template name="dodot"/>
    <xsl:call-template name="dodot"/>
    <xsl:call-template name="dodot"/>
    <xsl:call-template name="dodot"/>
    <xsl:call-template name="dodot"/>
    <xsl:call-template name="dodot"/>
    <xsl:call-template name="dodot"/>
    <xsl:call-template name="dodot"/>
    <xsl:call-template name="dodot"/>
    <xsl:call-template name="dodot"/>
    <xsl:call-template name="dodot"/>
    <xsl:if test="not($num = 10)">
      <xsl:variable name="tmpnumber"><xsl:value-of select="$num + 1"/></xsl:variable>
      <xsl:call-template name="recursefinal">
        <xsl:with-param name="num" select="$tmpnumber"/>
      </xsl:call-template>
    </xsl:if>
  </xsl:template>

  <xsl:template name="dodot">
    <xsl:variable name="ElementTexts">
      <xsl:for-each select="element">
        <xsl:value-of select="text"/>
      </xsl:for-each>
    </xsl:variable>
    <xsl:value-of select="$ElementTexts"/>
  </xsl:template>
</xsl:stylesheet>