XPath Nodes


XPath Terminology

Nodes

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

Please look at the following XML document:

<?xml version="1.0" encoding="UTF-8"?>

<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 (or atomic value, Atomic value)

A basic value is a node without a parent or children.

Examples of basic values:

J K. Rowling

"en"

Item

An item is a basic value or a node.


Node Relationships

Parent

Every 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

Element nodes may have zero, one, or more children.

In the following example, the title, author, year, and price elements are all 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 title, author, year, and price elements are all siblings:

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

Ancestor

A node's parent, parent's parent, etc.

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

A node's children, children's children, etc.

In the following example, the descendants of bookstore are the 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>
Other Extensions