Re: [xsl] Printing ancestor elements of all element nodes

Subject: Re: [xsl] 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>&#xa;</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: [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

Current Thread