Subject: Re: [xsl] Printing ancestor elements of all element nodes From: Mukul Gandhi <gandhi.mukul@xxxxxxxxx> Date: Thu, 4 Aug 2005 13:11:53 +0530 |
This is also working (I corrected my original approach). I am happy with the responses so far.. <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" indent="yes"/> <xsl:template match="/"> <xsl:for-each select="//*"> Element <xsl:value-of select="name()" /><xsl:text> - 

</xsl:text> Ancestors of the element are <xsl:text>
</xsl:text> <xsl:call-template name="printAncestors"> <xsl:with-param name="node" select="." /> </xsl:call-template> </xsl:for-each> </xsl:template> <xsl:template name="printAncestors"> <xsl:param name="node" /> <xsl:choose> <xsl:when test="($node/parent::*[1] or $node/parent::*[1]/parent::*[1])"> <xsl:value-of select="name($node/parent::*[1])" /><xsl:text>,</xsl:text> <xsl:call-template name="printAncestors"> <xsl:with-param name="node" select="$node/parent::*[1]" /> </xsl:call-template> </xsl:when> </xsl:choose> </xsl:template> </xsl:stylesheet> Regards, Mukul On 8/3/05, Mukul Gandhi <gandhi.mukul@xxxxxxxxx> wrote: > Thank you David! This is marvellous.. My attempt was - > > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:output method="text" /> > > <xsl:template match="/"> > <xsl:for-each select="//*"> > Element name <xsl:value-of select="name()" > /><xsl:text>
</xsl:text> > Ancestor elements of this element > <xsl:text>
</xsl:text> > <xsl:text>
</xsl:text> > <xsl:call-template name="printAncestors"> > <xsl:with-param name="node" select="." /> > </xsl:call-template> > </xsl:for-each> > </xsl:template> > > <xsl:template name="printAncestors"> > <xsl:param name="node" /> > > <xsl:choose> > <xsl:when test="$node/parent::*"> > <xsl:value-of select="name($node)" />, > <xsl:call-template name="printAncestors"> > <xsl:with-param name="node" > select="$node/ancestor::*"/> > </xsl:call-template> > </xsl:when> > <xsl:otherwise> > <xsl:value-of select="name($node)" />, > </xsl:otherwise> > </xsl:choose> > </xsl:template> > > </xsl:stylesheet> > > But this did'nt work.. ;) > > THANK YOU. > > Regards, > Mukul > > On 8/3/05, David Carlisle <davidc@xxxxxxxxx> wrote: > > > > <xsl:for-each select="//*"> > > <xsl:text> </xsl:text> > > <xsl:value-of select="name()"/> > > <xsl:text> - </xsl:text> > > <xsl:for-each select="ancestor::*"> > > <xsl:sort select="-count(ancestor::*)"/> > > <xsl:value-of select="name()"/> > > <xsl:if tets="position()!=last()">,</xsl:if> > > </xsl:for-each> > > </xsl:for-each> > > > > ________________________________________________________________________ > > This e-mail has been scanned for all viruses by Star. The > > service is powered by MessageLabs. For more information on a proactive > > anti-virus service working around the clock, around the globe, visit: > > http://www.star.net.uk > > ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Printing ancestor element, Mukul Gandhi | Thread | RE: [xsl] Printing ancestor element, Michael Kay |
Re: AW: [xsl] xsl:key function help, Joris Gillis | Date | Re: [xsl] xsl:key function help, David Preuss |
Month |