XPath Nodes

In XPath, there are seven types of nodes: element, attribute, text, namespace, processing instruction, comment, and document node (or root node).

XPath terminology

Node

In XPath, there are seven types of nodes: element, attribute, text, namespace, processing instruction, comment, and document (root) node. An XML document is treated as a node tree. The root of the tree is called the document node or root node.

See the following XML document:

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author> 
  <year>2005</year>
  <price>29.99</price>
</book>
</bookstore>

Examples of nodes in the above XML document:

<bookstore> (document node)
<author>J K. Rowling</author> (element node)
lang="en" (attribute node) 

Basic value (also known as atomic value)

A basic value is a node that has no parent or no children.

Example of a basic value:

J K. Rowling
"en"

Item

An item is a basic value or a node.

Node relationship

Parent

Each element and attribute has a parent.

In the following example, the book element is the parent of the elements title, author, year, and price:

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

Children

An element node can have zero, one, or more children.

In the following example, the elements title, author, year, and price are children of the book element:

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

Sibling

Nodes that have the same parent

In the following example, the elements title, author, year, and price are peers:

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

Ancestor

The parent, grandparent, and so on of a node.

In the following example, the ancestors of the title element are the elements book and bookstore:

<bookstore>
<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>
</bookstore>

Descendant

The child, grandchild, and so on of a node.

In the following example, the descendants of bookstore are the elements book, title, author, year, and price:

<bookstore>
<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>
</bookstore>