<?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>
Expression | Description | Example |
nodename | Selects all child nodes of the named node | bookstore
-- Selects all the child nodes of the bookstore element |
/ | Selects from the root node | /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 |
// | Selects nodes in the document from the current node that match the selection no matter where they are | //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 |
. | Selects the current node | |
.. | Selects the parent of the current node | |
@ | Selects attributes | //@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.
Path Expression | Result |
/bookstore/book[1] | Selects the first book element that is the child of the bookstore element. Note: IE5 and later has implemented that [0] should be the first node, but according to the W3C standard it should have been [1]!! |
/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 | /bookstore/* --Selects all the child nodes of the bookstore element
//* --Selects all elements in the document |
@* | Matches any attribute node | //title[@*] --Selects all title elements which have any attribute |
node() | Matches any node of any kind |
| for several Paths
//book/title | //book/price
--Selects all the title AND price elements of all book elements.
XPath Operators
Operators can be used in XPath expressions. It supports +,-,*,div, =,!=,...,mod. The special one is "div", because "/" is used for paths.
/bookstore/book[1]/price returns the price node of book1
/bookstore/book[1]/price/text() returns the text of the price of book1, which is 29.99
No comments:
Post a Comment