XPath Syntax

To select nodes or node-sets in an XML document, the path expressions are used by XPath, i.e., by following a path or steps, a node is selected.

Example:

<?xml version="1.0" encoding="UTF-8"?>
 
<bookstore>
 
<book>
  <title lang="en">ABC</title>
  <price>100</price>
</book>
 
<book>
  <title lang="en">XML Basics</title>
  <price>300</price>
</book>
 
</bookstore>

Selecting Nodes:

To select nodes or node-sets in an XML document, the path expressions are used by XPath, i.e., by following a path or steps, a node is selected. The most useful path expressions are:

Expression Uses
nodename To select all the nodes with the name “nodename”.
/ To select from the root node.
// To select nodes in the document from the current node that match the selection no matter where they are.
. To select the current node.
.. To select the parent of the current node.
@ To select the attributes.

Some path expressions and the result of these expressions:

Path Expression Uses
bookstore To select all the nodes with the name “bookstore”.
/bookstore To select the root element bookstore.
bookstore/book To select all the book elements that are children of the bookstore.
//book To select all the book elements no matter where they are in the document.
bookstore//book To select all the book elements that are descendants of the bookstore element, no matter where they are under the bookstore element.
//@lang To select all the attributes that are named lang.

The path starting with a slash ( / ) always represents an absolute path to an element.

Predicates:

To find a specific node or a node with a specific value, the predicates are used. They are always embedded in square brackets.

Some path expressions with predicates and the result of the expressions:

Path Expression Uses
/bookstore/book[1] To select the first book element which is the child of the bookstore element.
/bookstore/book[last()] To select the last book element which is the child of the bookstore element.
/bookstore/book[last()-1] To select the last but one book element which is the child of the bookstore element.
/bookstore/book[position()<3] To select the first two book elements that are children of the bookstore element.
//title[@lang] To select all the title elements with an attribute named lang.
//title[@lang=’en’] To select all the title elements with the “lang” attribute with a value of “en”.
/bookstore/book[price>100.00] To select all the book elements of the bookstore element that have a price element with a value greater than 100.00.
/bookstore/book[price>100.00]/title To select all the title elements of the book elements of the bookstore element that have a price element with a value greater than 100.00.

The first node In IE 5,6,7,8,9 is [0], but it is [1] according to W3C. Thus we need to set the SelectionLanguage to XPath. For example, in JavaScript: xml.setProperty(“SelectionLanguage”,”XPath”);

Selecting Unknown Nodes:

To select unknown XML nodes, the XPath wildcards are used.

Wildcard Uses
* To match an element node.
@* To match an attribute node.
node() To match a node of any kind.

Some path expressions and the result of the expressions:

Path Expression Uses
/bookstore/* To select all the child element nodes of the bookstore element.
//* To select all the elements in a document.
//title[@*] To select all the title elements which have at least one attribute of any kind.

Selecting Several Paths:

To select several paths, we can use the | operator in an XPath expression.

Some path expressions and the result of the expressions:

Path Expression Uses
//book/title | //book/price To select all the title AND price elements of all the book elements.
//title | //price To select all the title AND price elements in the document.
/bookstore/book/title | //price To select all the title elements of the book element of the bookstore element AND all the price elements in the document.
Please Share