XPath Nodes

In XPath, there are seven types of nodes: elements, attributes, text, namespaces, processing instructions, comments, and document nodes (or called root nodes).

XPath Terminology

Node (Node)

In XPath, there are seven types of nodes: elements, attributes, text, namespaces, processing instructions, comments, and document (root) nodes. The XML document is treated as a node tree. The root of the tree is known as the document node or root node.

Please see the following XML document below:

<?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>

Example of nodes in the above XML document:

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

Basic values (also known as atomic values, Atomic value)

Basic values are nodes without parent or children.

Example of basic values:

J K. Rowling
"en"

Item

Items are basic values or nodes.

Node Relationships

Parent

Each element and attribute has a parent.

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

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

Children

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

In the following example, the title, author, year, and price elements 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 with the same parent

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

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

Ancestor

Parent, grandparent, and so on of a node.

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

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

Descendant

Child, grandchild, and so on of a node.

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

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