Subject: Re: Printing ancestor elements of all element nodes
From: Mukul Gandhi <gandhi.mukul@xxxxxxxxx>
Date: Thu, 4 Aug 2005 09:04:00 +0530
|
Thanks Mike..
Regards,
Mukul
On 8/3/05, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> <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.mukul@xxxxxxxxx]
> > Sent: 03 August 2005 12:04
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject: 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
|