xsl-list
[Top] [All Lists]

RE: Printing ancestor elements of all element nodes

2005-08-03 04:35:05
<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(_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>
--~--