XPath axe
ancestor:: and ancestor-or-self::
Every node above the context, up to the root. Returned in reverse document order.
ancestor:: selects all containing elements up to and including the root node; ancestor-or-self:: adds the context node itself. It is the general form of parent::.
The axis is a reverse axis, which changes what positional predicates mean: ancestor::*[1] is the nearest ancestor, not the outermost.
- Syntax
ancestor::name- Returns
- node-set
- Kind
- Axe
- Version
- XPath 1.0 (libxml2)
Worked examples
Each result below is what the evaluator returned, asserted on every test run. An empty result means an empty node-set — which is an answer, not an error.
count(//price/ancestor::*)on order.xmlRun5Five, not nine. Three prices have three ancestors each, but a node-set holds no duplicates: the three <line> elements are distinct, <lines> and <order> are shared.
name(//price[1]/ancestor::*[1])on order.xmlRunline[1] on a reverse axis is the nearest, not the outermost.
count(//price[1]/ancestor::lines)on order.xmlRun1
The sample documents
Every example on this page runs against this document. The sitemap one is namespaced on purpose — almost every real XML document is, and that changes which expressions match.
<?xml version="1.0" encoding="UTF-8"?>
<order id="A-1001" tier="gold">
<customer country="NO">Ada Lovelace</customer>
<lines>
<line sku="WIDGET-1" qty="2"><price>14.50</price></line>
<line sku="WIDGET-2" qty="1"><price>39.00</price></line>
<line sku="GIFT-WRAP" qty="1"><price>0.00</price></line>
</lines>
<note> Deliver after 09:00 </note>
</order>Related
- parent:: axisThe node directly above. Abbreviated .., and the way to select a node by what it contains.
- descendant:: and descendant-or-self::Everything below a node, at any depth. // is shorthand for descendant-or-self, which is why //a//b can be expensive.
- self:: axisThe context node itself. Abbreviated as a dot, and used to test what the current node is.
Get started
Bring order to the XML your team can't afford to ignore.
Create a free account and get a private workspace to search, validate, diff, and monitor your XML feeds, sitemaps, schemas, and vendor integrations.