Skip to content

XPath Example

How to use XPath expressions to query XML documents with practical examples, including path selection, attribute filtering, and numeric predicates.

XPath Example

Consider the following XML document:

<?xml version="1.0"  encoding="UTF-8"?>

<bookstore>

	<book category="children">
		<title lang="en">Harry Potter</title>
		<author>J K. Rowling</author>
		<year>2005</year>
		<price>29.99</price>
	</book>

	<book category="web">
		<title lang="en">XQuery Tips</title>
		<author>Tutorial Reference</author>
		<author>Tom Nolan</author>
		<author>Ryan Reynolds</author>
		<author>James Bond</author>
		<year>2022</year>
		<price>39.99</price>
	</book>

	<book category="web">
		<title lang="en">Learn XML</title>
		<author>Tutorial Reference</author>
		<year>2022</year>
		<price>9.99</price>
	</book>

</bookstore>

In the following table there are some path expressions:

Path Expression Result
/bookstore/book/title Selects all the title nodes.
/bookstore/book[1] Selects the first book element that is the child of the bookstore element.
/bookstore/book[1]/title Selects the title of the first book node under 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='en'] Selects all the title elements that have a "lang" attribute with a value of "en"
/bookstore/book[price>15.00] Selects all the book elements of the bookstore element that have a price element with a value greater than 15.00.
/bookstore/book[price>15.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 15.00.
/bookstore/book/price[text()] Selects the text from all the price nodes.
/bookstore/book[price>25]/price Selects all the price nodes with a price higher than 25.
/bookstore/book[price<15]/title Selects all the title nodes with a price lower than 15.
Navigation