Subject: Re: [xsl] Inserting a parent node. From: Morten Primdahl <morten@xxxxxxx> Date: Mon, 20 May 2002 00:20:06 +0200 |
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>
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.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Inserting a parent node., Chuck White | Thread | Re: [xsl] Inserting a parent node., Chuck White |
Re: [xsl] how to access values of d, Mike Brown | Date | [xsl] URL encoding, Zack Angelo |
Month |