Show Menu
Cheatography

XPath Cheat Sheet Cheat Sheet (DRAFT) by

Quick Reference for XPath with examples for location steps and paths.

This is a draft cheat sheet. It is a work in progress and is not finished yet.

XPath

nodename
Selects all nodes with 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
.
Selects the current node
..
Selects the parent of the current node
@
Selects attributes

Wildcards and Multiple Paths

*
Matches any element node
@*
Matches any attribute node
node()
Matches any node of any kind
|
Place between paths to select several paths
/books­tore/*
Selects all the child element nodes of the bookstore element
//*
Selects all elements in the document
//titl­e[@*]
Selects all title elements which have at least one attribute of any kind
//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
/books­tor­e/b­ook­/title | //price
Selects all the title elements of the book element of the bookstore element AND all the price elements in the document

Location Step Examples

The syntax for a location step is:
axisna­me:­:no­det­est­[pr­edi­cate]
child:­:book
Selects all book nodes that are children of the current node
attrib­ute­::lang
Selects the lang attribute of the current node
child::*
Selects all element children of the current node
attrib­ute::*
Selects all attributes of the current node
child:­:text()
Selects all text node children of the current node
child:­:node()
Selects all children of the current node
descen­dan­t::book
Selects all book descen­dants of the current node
ancest­or:­:book
Selects all book ancestors of the current node
ancest­or-­or-­sel­f::book
Selects all book ancestors of the current node - and the current node as well if it is a book node
child:­:*/­chi­ld:­:price
Selects all price grandc­hildren of the current node
 

XPath Operators

|
Computes two node-sets
//book | //cd
+
Addition
6 + 4
-
Subtra­ction
6 - 4
*
Multip­lic­ation
6 * 4
div
Division
8 div 4
=
Equal
price=9.80
!=
Not equal
price!­=9.80
<
Less than
price<9.80
<=
Less than or equal to
price<­=9.80
>
Greater than
price>9.80
>=
Greater than or equal to
price>­=9.80
or
or
price=9.80 or price=9.70
and
and
price>9.00 and price<9.90
mod
Modulus
5 mod 2

Predicates

/books­tor­e/b­ook[1]
Selects the first book element that is the child of the bookstore element.
/books­tor­e/b­ook­[la­st()]
Selects the last book element that is the child of the bookstore element
/books­tor­e/b­ook­[la­st()-1]
Selects the last but one book element that is the child of the bookstore element
/books­tor­e/b­ook­[po­sit­ion­()<3]
Selects the first two book elements that are children of the bookstore element
//titl­e[@­lang]
Selects all the title elements that have an attribute named lang
//titl­e[@­lan­g='en']
Selects all the title elements that have a "­lan­g" attribute with a value of "­en"
/books­tor­e/b­ook­[pr­ice­>35.00]
Selects all the book elements of the bookstore element that have a price element with a value greater than 35.00
/books­tor­e/b­ook­[pr­ice­>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
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 Select­ion­Lan­guage to XPath.

In JavaSc­ript: xml.se­tPr­ope­rty­("Se­lec­tio­nLa­ngu­age­"­,"XP­ath­");
 

XPath Examples

bookstore
Selects all nodes with the name "­boo­kst­ore­"
/bookstore
Selects the root element bookstore
bookst­ore­/book
Selects all book elements that are children of bookstore
//book
Selects all book elements no matter where they are in the document
bookst­ore­//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
/books­tor­e/b­ook­/title
Selects all title nodes that are descen­dants of book that are descen­dants of bookstore
/books­tor­e/b­ook­[1]­/title
Selects the title of the first book node under the bookstore element
/books­tor­e/b­ook­/pr­ice­[te­xt()]
Selects the text from all bookst­ore­/bo­ok/­price nodes
/books­tor­e/b­ook­[pr­ice­>35­]/price
Selects all the bookst­ore­/bo­ok/­price nodes with a price greater than 35
Note: If the path started with a slash ( / ) it always represents an absolute path to an element!

XPath Axes

ancestor
Selects all ancestors of the current node
ancest­or-­or-self
Selects all ancestors of the current node and the current node itself
attribute
Selects all attributes of the current node
child
Selects all children of the current node
descendant
Selects all descen­dants of the current node
descen­dan­t-o­r-self
Selects all descen­dants of the current node and the current nod itself
following
Selects everything in the document after the closing tag of the current node
follow­ing­-si­bling
Selects all siblings after the current node
namespace
Selects all namespace nodes of the current node
parent
Selects the parent of the current node
preceding
Selects all nodes that appear before the current node in the document, except ancestors, attribute nodes, and namespace nodes
preced­ing­-si­bling
Selects all siblings before the current node
self
Selects the current node