XPath axe
self:: axis
The context node itself, abbreviated as a dot. Useful as a test: self::line is true only when the context node is a line, which filters a mixed node-set.
self:: selects the context node, which sounds useless until you use it as a test: self::line is true only when the context node is a <line>. That makes it the way to filter a mixed node-set by name.
The abbreviation . is the same axis with a node() test, and is what you compare against inside a predicate: [. > 20] tests the context node's value.
- Syntax
self::name — or .- 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.
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>
<!-- priority customer -->
<?audit retained?>
<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
- child:: axisImmediate children: the default axis, which is why it is almost never written out. It does not reach grandchildren, and never selects attributes.
- position()The one-based index of the context node, so [n] is shorthand for [position() = n]. [1] is the first in each context, not the first in the document.
- boolean() and not()Converts to true or false. A node-set is true when it is non-empty, which is why [not(x)] means 'has no x' — and why boolean('false') is true.
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.