xsl-list
[Top] [All Lists]

Re: [xsl] Parent Node recursion template fails

2012-02-08 17:07:23
Hi again,

On 2/8/2012 6:05 PM, David Carlisle wrote:
<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>

because you have used parent::node() (which could more simply be written
as ..) rather than parent::* then if it doesn't find the $node-id it
will reach / and then (because your template only matches * not /) it
will apply the default template to / which will apply templates to its
element child, hitting this template again and looping forever.
cahanging the match to "*|/" should fix it.

As I thought immediately after hitting "send" ... a slightly neater solution.

Or apply-templates select="parent::*", as David also almost says.

Cheers,
Wendell

======================================================================
Wendell Piez                            
mailto:wapiez(_at_)mulberrytech(_dot_)com
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--