Re: [xsl] Parent Node recursion template fails

Subject: Re: [xsl] Parent Node recursion template fails
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Wed, 08 Feb 2012 23:58:41 +0000
You don't have a template rule that matches the document node (/) in mode navigation-special_paint-selected, so when the recursion reaches the root, the built-in template for document nodes is invoked. The built-in template rule applies-templates to its children, so you oscillate infinitely between the root document node and its element child. The solution is to add a rule for match="/" that does nothing.

Michael Kay
Saxonica

On 08/02/2012 22:50, Karl Stubsjoen wrote:
This recursion template is failing.  I'm getting the error, too many
recursions...  I would expect that when I get to the root element it
would stop recursing.  I guess I need a test for root element.
Karl..

     <xsl:template match="*" mode="navigation-special_paint-selected">
         <xsl:param name="node-id"/>
         <xsl:choose>
             <xsl:when test="generate-id() = $node-id">
                 <xsl:attribute name="background">#eee</xsl:attribute>
             </xsl:when>
             <xsl:otherwise>
                 <xsl:apply-templates select="parent::node()"
mode="navigation-special_paint-selected">
                     <xsl:with-param name="node-id" select="$node-id"/>
                 </xsl:apply-templates>
             </xsl:otherwise>
         </xsl:choose>
     </xsl:template>

Current Thread