This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Inserting a parent node.
Chuck White wrote:
> It sounds like you want access to other nodes in the tree brought in via the
> document function, which of course is possible. Check out the FAQ for this
> at:
>
> http://www.dpawson.co.uk/xsl/sect2/N2602.html
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