# 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.