XPath Syntax
The XPath expression uses a path notation like URLs, for addressing parts of an XML document. The expression is evaluated to yield an object of the node-set, Boolean, number, or string type. For example, the expression book/author will return a node-set of the <author> elements contained in the <book> elements, if such elements are declared in the source XML document.
In XPath, path expression is used to select nodes or node-sets in an XML document. The node is selected by following a path or steps.
Let's take an example to see the syntax of XPath. Here, we take an XML document.
Selecting Nodes
Path expressions used for selecting nodes are:
Index |
Expression |
Description |
1) |
nodename |
Selects all nodes with the name "nodename" |
2) |
/ |
Selects from the root node. |
3) |
// |
Selects nodes in the document from the current node that match the selection no matter where they are. |
4) |
. |
Selects the current node |
5) |
.. |
Selects the parent of the current node |
6) |
@ |
Selects attributes |
See the path expressions and their details in the above example:
Path Expression |
Result |
bookstore |
Selects all nodes with the name "bookstore" |
/bookstore |
Selects the root element bookstore. Note: if the path starts with a slash ( / ) it always represents an absolute path to an element! |
bookstore/book |
Selects all book elements that are children of bookstore. |
//book |
Selects all book elements no matter where they are in the document. |
bookstore//book |
Selects all book elements that are descendant of the bookstore element, no matter where they are under the bookstore element. |
//@lang |
Selects all attributes that are named lang. |
Predicates
Predicates are used to find a specific node or a node that contains a specific value.
Predicates are always embedded in square brackets.
In the table below we have listed some path expressions with predicates and the result of the expressions:
Path Expression |
Result |
/bookstore/book[1] |
Selects the first book element that is the child of the bookstore element. Note: In IE 5,6,7,8,9 first node is[0], but according to W3C, it is [1]. To solve this problem in IE, set the selectionlanguage to XPath: in JavaScript: xml.setProperty("SelectionLanguage","XPath"); |
/bookstore/book[last()] |
Selects the last book element that is the child of the bookstore element. |
/bookstore/book[last()-1] |
Selects the last but one book element that is the 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 the title elements that have an attribute named lang. |
//title[@lang='en'] |
Selects all the title elements that have a "lang" attribute with a value of "en". |
/bookstore/book[price>100] |
Selects all the book elements of the bookstore element that have a price element with a value greater than 100 |
/bookstore/book[price>100]/title |
Selects all the title elements of the book elements of the bookstore element that have a price element with a value greater than 100 |
Selecting Unknown Nodes
XPath wildcards are used to select unknown XML nodes.
Wildcard |
Description |
* |
Matches any element node |
@* |
Matches any attribute node |
node() |
Matches any node of any kind |
See this in above example:
Path Expression |
Result |
/bookstore/* |
Selects all the child element nodes of the bookstore element |
//* |
Selects all elements in the document |
//title[@*] |
Selects all title elements which have at least one attribute of any kind |
Selecting Several Paths
The | operator is used in XPath expression to select several paths. From the above example, we have listed some path expressions and result of the expressions.
Path Expression |
Result |
//book/title | //book/price |
Selects all the title and price elements of all book elements |
//title | //price |
Selects all the title and price elements in the document |
/bookstore/book/title | //price |
Selects all the title elements of the book element of the bookstore element and all the price elements in the document |
|