RE: [xsl] Interpretation of preceding axis (preceding-sibling in particular)

Subject: RE: [xsl] Interpretation of preceding axis (preceding-sibling in particular)
From: "Michael Kay" <mhkay@xxxxxxxxxxxx>
Date: Fri, 3 Aug 2001 18:18:04 +0100
When you process a reverse axis in XSLT, as with any other node-set, the
nodes are processed in document order, and the position() increases from 1
to last().

The only difference with a reverse axis is that preceding-sibling::*[3]
selects the third-from-end element (counting in document order) rather than
the third-from-start.

Mike Kay
Software AG

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of John-Paul
> Sicotte
> Sent: 03 August 2001 18:00
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Interpretation of preceding axis (preceding-sibling in
> particular)
>
>
>
> Hi,
>
>    I have read several of the threads on the preceding axes
> and looked
> at the FAQ but I am still not 100% sure what should be returned.  I
> have built a stylesheet and an input file to illustrate the issue. It
> tests the actual node set returned as well as the position of those
> nodes.
>
> xslt file
> ==========
>
> <?xml version="1.0" encoding="ISO-8859-1"?>
>
> <xsl:stylesheet version = "1.0"
>   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>
> <xsl:template match = "/document" >
>   <xsl:apply-templates select="element[1]"  mode = "siblings"/>
>   <xsl:apply-templates select="element[5]"  mode = "siblings"/>
>   <xsl:apply-templates select="element[10]" mode = "siblings"/>
> </xsl:template>
>
> <xsl:template match = "element" mode = "siblings">
>   <xsl:call-template name = "siblings"/>
> </xsl:template>
>
>
> <xsl:template match = "element" mode =
> "position"><xsl:value-of select = "position()"/></xsl:template>
>
> <xsl:template name = "siblings">
> Context Node:         <xsl:value-of select = "."/>
> Preceeding Siblings:  <xsl:apply-templates
> select="preceding-sibling::element"/>
> Preceeding Position:  <xsl:apply-templates
> select="preceding-sibling::element" mode = "position"/>
> Following Siblings:   <xsl:apply-templates
> select="following-sibling::element"/>
> Following Position:   <xsl:apply-templates
> select="following-sibling::element" mode = "position"/>
> </xsl:template>
>
> </xsl:stylesheet>
> --------------------
>
> xml file
>
> <?xml version = "1.0" standalone = "yes" ?>
> <document>
>   <element pos = "1">1</element>
>   <element pos = "2">2</element>
>   <element pos = "3">3</element>
>   <element pos = "4">4</element>
>   <element pos = "5">5</element>
>   <element pos = "6">6</element>
>   <element pos = "7">7</element>
>   <element pos = "8">8</element>
>   <element pos = "9">9</element>
>   <element pos = "10">0</element>
> </document>
>
> --------------------------------------
>
> I got the following output from XT
>
> Context Node:         1
> Preceeding Siblings:
> Preceeding Position:
> Following Siblings:   234567890
> Following Position:   123456789
>
> Context Node:         5
> Preceeding Siblings:  1234
> Preceeding Position:  1234
> Following Siblings:   67890
> Following Position:   12345
>
> Context Node:         0
> Preceeding Siblings:  123456789
> Preceeding Position:  123456789
> Following Siblings:
> Following Position:
>
> This position values seem incorrect to me.  I would have expected the
> positions to be reversed (ie 4321 and 987654321).  It seems
> clear to me
> that the reverse axes are counted from the context node
> backwards.  The
> immediately previous node should be 1.
>
> The actual node ordering appears to be correct.  Regardless of the
> axis the nodes are returned in document order, only the position
> changes.  Is this interpretation correct?
>
> 						John-Paul
>
> ----------------------
> John-Paul Sicotte
> Software Composer
> MessagingDirect
> mailto:John-Paul.Sicotte@xxxxxxxxxxxxxxxxxxx
>
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>


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


Current Thread