This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Inserting a parent node.
- From: "bryan" <bry at itnisk dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Mon, 20 May 2002 13:32:35 +0200
- Subject: RE: [xsl] Inserting a parent node.
- Reply-to: xsl-list at lists dot mulberrytech dot com
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"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- 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>
<xsl:template match="group">
<xsl:apply-templates select="member|person"/>
</xsl:template>
<!-- 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>
<xsl:template match="person">
<xsl:choose>
<xsl:when test="parent::group">
<xsl:text>Yep</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Bummer</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
input.xml
<group>
<member url="other.xml"/>
</group>
other.xml
<person>Bub</person>
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.
Morten
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list