Easy Tutorial
❮ Xpath Axes Xpath Summary ❯

XPath Syntax


XPath uses path expressions to select nodes or node sets in an XML document. Nodes are selected by following a path or steps.


XML Example Document

We will use this XML document in the following examples.

Example

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

<bookstore>

<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>

</bookstore>

Selecting Nodes

XPath uses path expressions to select nodes in an XML document. Nodes are selected by following a path or steps. Here are the most useful path expressions:

Expression Description
nodename Selects all child nodes of this node.
/ Selects from the root node (child node).
// Selects nodes in the document from the current node that match the selection, regardless of their position (descendant nodes).
. Selects the current node.
.. Selects the parent of the current node.
@ Selects attributes.

In the table below, we have listed some path expressions and the results of those expressions:

Path Expression Result
bookstore Selects all child nodes of the bookstore element.
/bookstore Selects the root element bookstore. Note: If the path starts with a forward slash ( / ), this path always represents an absolute path to an element!
bookstore/book Selects all book elements that are children of bookstore.
//book Selects all book child elements, regardless of their position in the document.
bookstore//book Selects all book elements that are descendants of the bookstore element, regardless of their position under bookstore.
//@lang Selects all attributes named lang.

Predicates

Predicates are used to find a specific node or a node that contains a specified value.

Predicates are embedded in square brackets.

In the table below, we list some path expressions with predicates, and the results of those expressions:

Path Expression Result
/bookstore/book[1] Selects the first book element that is a child of the bookstore element.
/bookstore/book[last()] Selects the last book element that is a child of the bookstore element.
/bookstore/book[last()-1] Selects the second-to-last book element that is a child of the bookstore element.
/bookstore/book[position()<3] Selects the first two book elements that are children of the bookstore element.
//title[@lang] Selects all title elements that have an attribute named lang.
//title[@lang='eng'] Selects all title elements that have a lang attribute with the value eng.
/bookstore/book[price>35.00] Selects all book elements of the bookstore element where the price element's value is greater than 35.00.
/bookstore/book[price>35.00]//title Selects all title elements of the book elements in the bookstore element where the price element's value is greater than 35.00.

Selecting Unknown Nodes

XPath wildcards can be used to select unknown XML elements.

Wildcard Description
* Matches any element node.
@* Matches any attribute node.
node() Matches any type of node.

In the table below, we list some path expressions and the results of those expressions:

Path Expression Result
/bookstore/* Selects all child elements of the bookstore element.
//* Selects all elements in the document.
//title[@*] Selects all title elements with any attribute.

Selecting Multiple Paths

You can select multiple paths by using the "|" operator in the path expression.

In the table below, we list some path expressions and the results of those expressions:

| Path Expression | Result | | //book/title | //book/price | Select all title and price elements of the book element. | | //title | //price | Select all title and price elements in the document. | | /bookstore/book/title | //price | Select all title elements of the book element that belong to the bookstore element, and all price elements in the document. |

❮ Xpath Axes Xpath Summary ❯