Alvin’s Blog

March 5, 2007

XPath – Tutorial

Filed under: XPath — amcbride @ 12:23 am

<?xml version=”1.0″ encoding=”ISO-8859-1″?><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>
 

********************************

/ – Selects from the root node

// – Selects nodes in the document from the current node that match the selection no matter where they are

. – Selects the current node

.. – Selects the parent of the current node

@ – Selects attributes
 
 

——————————————————————————–

Path Expression Result

/bookstore/book[1] Selects the first book element that is the child of the bookstore element

/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='eng'] Selects all the title elements that have an attribute named lang with a value of ‘eng’

/bookstore/book[price>35.00] Selects all the book elements of the bookstore element that have a price element with a value greater than 35.00

/bookstore/book[price>35.00]/title Selects all the title elements of the book elements of the bookstore element that have a price element with a value greater than 35.00
 
 

——————————————————————————–
 

Wildcard Description

* Matches any element node

@* Matches any attribute node

node() Matches any node of any kind
 

Path Expression Result

/bookstore/* Selects all the child nodes of the bookstore element

//* Selects all elements in the document

//title[@*] Selects all title elements which have any attribute
 
 

——————————————————————————–
 

Selecting Several Paths

By using the | operator in an XPath expression you can select several paths.
 

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

 count

count(//first-name[.='Pet'])

Blog at WordPress.com.