RE: [xsl] Inserting a parent node.

Subject: RE: [xsl] Inserting a parent node.
From: "bryan" <bry@xxxxxxxxxx>
Date: Mon, 20 May 2002 13:32:35 +0200
Well I think there's probably more going on here than I first can see,
but the infinite loop comes in when you say parent::node(), since member
is a child of group when you match member and have an apply-templates
pointing at parent::node() (group which has an apply-templates selecting
member) there is going to be a infinite recursive loop, unless of course
you had some parameter you could update with each apply-templates that
when it reached a certain value stopped applying-templates.

Morten wrote:

Seemed from the FAQ that the union operator was what I needed, but when
I apply that, I get an infinite loop.

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"

<!-- Output parameters -->
<xsl:output encoding="iso-8859-1"/>
<xsl:output omit-xml-declaration="yes"/>
<xsl:output method="text"/>

<xsl:template match="/">
   <xsl:apply-templates select="group"/>

<xsl:template match="group">
   <xsl:apply-templates select="member|person"/>

<!-- I expected the select="parent::node() | $content/*"
      to return what corresponds to
      <group><person>Bub</person></group> so the person
      match would have parent::group resolve to true -->
<xsl:template match="member">
   <xsl:variable name="content" select="document(@url)"/>
   <xsl:text> Inifinite loop </xsl:text>
   <xsl:apply-templates select="parent::node() | $content/*"/>

<xsl:template match="person">
     <xsl:when test="parent::group">


   <member url="other.xml"/>


I think I can solve this with some parameters here and there, eg.
by passing the parent node of the member element as parameter
to the subsequent <apply-templates select="$content/*"/>. Just
wondering if that is the appropriate way.


 XSL-List info and archive:

 XSL-List info and archive:

Current Thread