<xsl:template match="*" mode="print-ancestors">
<xsl:value-of select="concat(name(), ',')"/>
<xsl:apply-templates select=".." mode="print-ancestors"/>
</xsl:template>
<xsl:template match="/" mode="print-ancestors">root</xsl:template>
<xsl:template match="/">
<xsl:for-each select="//*">
<xsl:value-of select="name()"/>
<xsl:text> - </xsl:text>
<xsl:apply-templates select=".." mode="print-ancestors"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Mukul Gandhi [mailto:gandhi(_dot_)mukul(_at_)gmail(_dot_)com]
Sent: 03 August 2005 12:04
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Printing ancestor elements of all element nodes
I have this XML document -
<root>
<a>
<b>
<c/>
<d/>
<e>
<f>
<g/>
<h/>
</f>
</e>
</b>
</a>
</root>
The following output is desired -
root -
a - root
b - a,root
c - b,a,root
d - b,a,root
e - b,a,root
f - e,b,a,root
g - f,e,b,a,root
h - f,e,b,a,root
How to do this with XSLT?
I'll be testing this with both Xalan-J 2.6.0 and Saxon 8.4. I need a
XSLT 1.0 solution.
Regards,
Mukul
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--