This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: grabbing the path to a particular node


At 10:08 AM 8/8/00 +0100, Jeni wrote:
>It is actually possible to do this without recursion because the
>ancestor-or-self axis gives you a list of the nodes that are ancestors of
>the current node (or the current node itself).  You can *iterate* over this
>list instead:
>
><xsl:for-each select="ancestor-or-self::*">
>  <xsl:text>/</xsl:text>
>  <xsl:value-of select="name()" />
></xsl:for-each>

It works this way because xsl:for-each, by default, processes the selected
nodes in document order, which is down from the root, even though the axis
itself goes in reverse. This is pretty subtle.

You can change the order of its processing by using a sort. So (again,
without the recursion) to get them in reverse order, we could use

  <xsl:for-each select="ancestor-or-self::*">
    <xsl:sort select="count(ancestor::*)" order="descending"/>
    <xsl:value-of select="concat('/', name())"/>
  </xsl:for-each>

Cheers,
Wendell


======================================================================
Wendell Piez                            mailto:wapiez@mulberrytech.com
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]