RE: [xsl] Axis order and variables

Subject: RE: [xsl] Axis order and variables
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Fri, 23 May 2003 10:40:30 -0400
At 2003-05-23 16:24 +0200, David Neary wrote:
So if I understand correctly, ancestor::x[1]
is the same as ..,

Only if your parent is named "x". ".." will get your parent regardless of its name.

but if I first get the nodeset ancestor::x, and on
the nodeset object request element [1], I get the fors ancestor::x in
document order?


I don't get it. I understood that a nodeset had an inherent ordering
which was established at the time we do the select on the nodeset... Ah.
penny drops. If we then select nodes from within that nodeset using
another axis, we go back to the document ordering associated with that


When evaluating XPath, all axes are in proximity order, working their way away from the context node (which is the current node in XSLT). At the end of the evaluation the resulting nodes are unordered.

XSLT looks at the resulting nodes in document order.

A parenthesized expression looks at the resulting nodes of the expression in document order.


ancestor::x[1] returns the closest ancestor named "x"

  <xsl:variable name="xvariable" select="ancestor::x"/>
  $xvariable[1] returns the farthest ancestor named "x"

(ancestor::x)[1] returns the farthest ancestor named "x"

I hope this helps.

.................... Ken

-- Upcoming hands-on courses: (registration still open!) - (XSLT/XPath and/or XSL-FO) North America: June 16-20, 2003

G. Ken Holman                mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.
Box 266, Kars, Ontario CANADA K0A-2E0   +1(613)489-0999 (F:-0995)
ISBN 0-13-065196-6                      Definitive XSLT and XPath
ISBN 0-13-140374-5                              Definitive XSL-FO
ISBN 1-894049-08-X  Practical Transformation Using XSLT and XPath
ISBN 1-894049-11-X              Practical Formatting Using XSL-FO
Member of the XML Guild of Practitioners:
Male Breast Cancer Awareness

XSL-List info and archive:

Current Thread