XPATH¶
XPATH TERMINOLOGY¶
SEVEN KIND OF NODES:
- element
- attribute
- text
- namespace
- processing-instruction
- comment
- document nodes
ATOMIC VALUES
nodes with no children or parent
Items are atomic values or nodes
RELATIONSHIP OF NODES
- parent
- children
- siblings
- ancestors
- descendants
XPATH SYNATX¶
SELECTING NODES
EXPRESSION | DESCRIPTION |
---|---|
nodename |
selects all nodes withs the name "nodename" |
/ |
selects from the root node |
// |
selects nodes in the document from the current node that match the selection no matter where they are |
. |
select the current node |
.. |
selects the parent of th document |
@ |
selects all attributes |
PREDICATES
EXPRESSION | DESCRIPTION |
---|---|
/bookstore/book[1] |
selects the first book element that is the child of bookstore element |
/bookstore/book[last()] |
selects the last book element that is the child of bookstore element |
/bookstore/book[last()-1] |
selects the last second book element that is the child of bookstore element |
/bookstore/book[postition()<3] |
selects the first two book element that is the child of bookstore element |
//title[@lang] |
selects all the title that has a "lang" attribute |
/bookstore/book[price>35.00] |
selects all the book element that price is less than 35.00 |
/bookstore/book[price>35.00]/title |
slects all the title element of book element that the priceis more than 35.00 |
SELECT UNKNOWN NODES
WILDCARD | DESCRIPTION |
---|---|
* |
matches any element nodes |
@* |
matches any attribute node |
node() |
match any node of any kind |
SELECT SEVERAL PATHS
PATH EXPRESSION | RESULTS |
---|---|
//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 documnet |
/bookstore/book/title | //price |
selects all the title elements of the book element of bookstore element AND all the price elements in the documnets |
xpath axes
axis defines a node-set relative to the current node
axisname | result |
---|---|
ancestor |
selects all the ancestors(parent, grandparent) of the current node |
ancestor-or-self |
selects all the ancestors(parent, grandparent) of the current node and the current node |
attribute |
selects all the attribute of the current node |
child |
selects all children of the current node |
descendant |
selects all descendants(children,grandchildren,etc) of the current node |
descendant-or-self |
selects all descendants(children,grandchildren,etc) of the current node and the current node it self |
following |
selects everythong in the document after the closing tag of the current node |
following-sibling |
selects all siblings after the current node |
namespace |
selects all namespace of the current node |
parent |
selects the parent of the current node |
preceding |
selects all nodes thata appear before the current node in the document, except ancestors, attribute nodes and namespace nodes |
preceding-sibling |
selects all siblings before the current node |
self |
selects the current node |
location path expression
- absolute location:
/step/step
- relative location:
step/step/
a step consist of - an axis(defines the tree-relativeship between the selected node and the current node.) - a node-test(idetified a node within an axis) - zero or more predicates(to further refine the selected node-set)
syntax for a location step
axisname::nodetest[predicate]
examples
example | result |
---|---|
child::book |
selects all book nodes that are child of the current node |
attribute::lang |
selects the lang attribut of the current node |
child::* |
selects all elements of children of th current node |
attribute::* |
selects all the attribute of the current node |
child::text() |
selects all text node children of the current node |
child::node() |
selects all children of the current node |
descendant::book |
selects all book descendants of the current node |
ancenstor::book |
selects all ancestors of the current node |
ancestor-or-self::book |
selects all ancestors of the current node and itself if it is a book node |
child::*/child::price |
selects all price grandchildren of the current node |