Subject: Re: Using node-sets in reverse document order? From: Tony Graham <tgraham@xxxxxxxxxxxxxxxx> Date: Sat, 10 Jul 1999 16:32:59 -0400 (EST) |
At 10 Jul 1999 11:23 -0700, G. Ken Holman wrote: > At 99/07/10 13:44 -0400, Tony Graham wrote: > >The ancestor, ancestor-or-self, preceding, and preceding-sibling axes > >contain nodes in reverse document order. How is it possible to > >iterate over the nodes in that order when xsl:for-each processes nodes > >in document order and xsl:sort sorts on string value, not document > >order? > > By "walking" the source tree along the axis in the direction of the first > member of the context node list, rather than dealing with the context node > list as a whole. > > >How can I do something like the following that will order the selected > >nodes in reverse document order? > > > > <xsl:for-each select="from-ancestors(node())"> > > <p>Element: <xsl:value-of select="qname()"/></p> > > </xsl:for-each> > > My example below illustrates how. > > I hope this helps. It did, but since I simplified my example, you weren't to know that I wanted to iterate over all the ancestors, including the root node. The modified stylesheet included below does that. I was looking for a generalised technique since the tutorial stylesheet for which which I want nodes in reverse document order illustrates all of the axes, and I didn't want to have to do something special for the four axes that are in reverse document order when I could just use the built-in facilities for the axes that happened to be in document order. Regards, Tony Graham ====================================================================== Tony Graham mailto:tgraham@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9632 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ====================================================================== <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"> <xsl:template match="/"> <!--root rule--> <xsl:apply-templates mode="start" select="//e"/> </xsl:template> <xsl:template mode="start" match="*"> <xsl:text>
Document Order:</xsl:text> <xsl:for-each select="from-ancestors(*)"> <xsl:text>
Element: </xsl:text> <xsl:value-of select="qname()"/> </xsl:for-each> <xsl:text>

Axis Order:</xsl:text> <xsl:apply-templates select="from-ancestors(node()[1])" mode="ancestors"/> </xsl:template> <xsl:template match="/" mode="ancestors"> <xsl:text>
Root</xsl:text> </xsl:template> <xsl:template match="*" mode="ancestors"> <xsl:text>
Element: </xsl:text> <xsl:value-of select="qname()"/> <xsl:apply-templates select="from-ancestors(node()[1])" mode="ancestors"/> </xsl:template> </xsl:stylesheet> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: Using node-sets in reverse docu, G. Ken Holman | Thread | RE: Using node-sets in reverse docu, Kay Michael |
Re: Using node-sets in reverse docu, G. Ken Holman | Date | Re: New XSLT draft, Denys Duchier |
Month |