Subject: Re: [xsl] backwards tree-traversal algorithm? From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Wed, 23 Oct 2002 15:38:45 +0100 |
Hi John, > hello, having some trouble making this work: within my stylesheet, i > have selected a node somewhere in the midst of the document tree, > several nested elements deep. what i would like to do is, given this > node N (at arbitrary depth), walk *back* up the document tree > hierarchy, element by element, printing the successive parent > elements (technically, printing each element's "name" @ribute). The easiest way to do this is to collect the ancestor elements using the ancestor attribute and iterate over them sorted in reverse document order: <xsl:for-each select="ancestor::*"> <xsl:sort select="position()" order="descending" data-type="number" /> <xsl:value-of select="@name" /> <xsl:if test="position() != last()">, </xsl:if> </xsl:for-each> [Note that I've done what you said (use the 'name' attribute) rather than what you showed in your examples (which used the name of the element).] But you can do it using recursion instead if you want: <xsl:template match="*" mode="name"> <xsl:if test="parent::*"> <xsl:apply-templates select="parent::*" mode="name" /> <xsl:text>, </xsl:text> </xsl:if> <xsl:value-of select="@name" /> </xsl:template> Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] backwards tree-traversal algo, jm3 | Thread | Re: [xsl] backwards tree-traversal , Stephen Cunliffe |
[xsl] Question about MS setProperty, Chuck White | Date | RE: [xsl] IE 5.5 - special characte, Chuck White |
Month |