Ctrl + K
XML12 min read

XPath for Beginners

Master the basics of XPath and learn how to select nodes from XML documents efficiently.

Published: 2026-07-08

XPath (XML Path Language) is a query language used to locate and select nodes within XML documents. Instead of manually navigating nested XML elements, developers can write concise expressions that identify exactly the data they need.

XPath is widely used in XML processing, XSLT transformations, XML Schema validation, testing tools and automation frameworks such as Selenium. Learning the basics makes working with XML significantly easier.

What Is XPath?

XPath describes the location of elements, attributes or text within an XML document. It works similarly to file paths, where each step moves deeper into the document hierarchy.

/library/book/title

This expression selects every <title> element inside a <book> element that belongs to the root <library> element.

Sample XML Document

The following XML document will be used throughout the examples in this guide.

<library>
  <book id="1">
    <title>Learning XML</title>
    <author>John Smith</author>
    <price>29.99</price>
  </book>

  <book id="2">
    <title>XPath Guide</title>
    <author>Jane Doe</author>
    <price>39.99</price>
  </book>
</library>

Absolute Paths

An absolute XPath starts with a forward slash and begins at the document root.

/library/book/title

Absolute paths are precise but become fragile if the document structure changes.

Relative Paths

Relative XPath expressions begin from the current context rather than the document root.

book/title

Relative paths are commonly used inside XML processing libraries and XSLT templates.

Selecting Any Descendant

Double slashes search for matching elements anywhere below the current node.

//title

This expression returns every title element regardless of its nesting level.

Selecting Elements by Name

The simplest XPath expressions use element names directly.

//book

The result contains every <book> element in the XML document.

Selecting Attributes

Attributes are referenced using the @ symbol.

//book/@id

This expression returns the id attribute from every book element.

Selecting Text

The text() function retrieves the text contained inside an element.

//title/text()

Instead of returning title elements, this expression returns only their text values.

Using Wildcards

The asterisk (*) matches any element name.

/library/*

This selects every direct child element of the library element.

Selecting by Position

XPath supports numeric indexing to select elements by position.

//book[1]

This expression selects the first book element in the document.

//book[last()]

The last() function selects the final matching element.

💡 XPath indexes start at 1, not 0. This is one of the biggest differences from most programming languages.

Filtering with Predicates

Predicates allow XPath expressions to filter nodes based on conditions.

//book[@id='2']

Only the book whose id attribute equals 2 will be selected.

Combining Conditions

XPath predicates can contain multiple conditions using logical operators such as and and or.

//book[@id='2' and price>30]

This selects only books whose id equals 2 and whose price is greater than 30.

XPath Functions

XPath provides numerous built-in functions for working with strings, numbers, boolean values and node sets.

FunctionPurpose
text()Returns element text
last()Returns the last matching node
position()Returns the current node position
contains()Checks whether text contains a substring
starts-with()Checks the beginning of a string

Searching by Text

XPath can locate elements based on their textual content.

//title[text()='XPath Guide']

Only title elements whose content exactly matches 'XPath Guide' are returned.

Using contains()

The contains() function performs partial text matching.

//title[contains(text(),'XML')]

This expression finds every title containing the word XML.

Parent and Child Navigation

XPath supports moving through the XML hierarchy in multiple directions.

ExpressionMeaning
parent::Parent node
child::Child elements
ancestor::All ancestors
descendant::All descendants
following-sibling::Next siblings
preceding-sibling::Previous siblings

Working with Namespaces

When an XML document uses namespaces, XPath expressions usually need namespace prefixes defined by the XPath processor.

//bk:book/bk:title

Ignoring namespaces is one of the most common reasons an XPath query returns no results.

Common XPath Mistakes

Many XPath expressions fail because of small syntax errors or incorrect assumptions about the XML document structure.

  • Using zero-based indexes.
  • Ignoring XML namespaces.
  • Selecting attributes without @.
  • Using absolute paths when relative paths are required.
  • Assuming elements always appear in the same order.
⚠️ Remember that XPath positions begin at 1. Writing //book[0] never selects the first element.

Where XPath Is Used

XPath is used in many XML technologies beyond simple document searching.

  • XML parsers
  • XSLT transformations
  • XML Schema validation
  • SOAP processing
  • RSS readers
  • Selenium browser automation
  • XML editing tools

Best Practices

  • Prefer relative paths whenever practical.
  • Avoid overly long XPath expressions.
  • Test queries against real XML documents.
  • Use predicates instead of unnecessary traversal.
  • Always account for namespaces when present.
💡 If an XPath expression becomes difficult to read, break the problem into smaller queries while debugging.

Helpful XPath Tools

XPath development becomes much easier with specialized utilities. An XPath Tester executes expressions against XML documents, an XPath Generator builds queries automatically, an XML Tree Viewer helps visualize document structure, an XML Formatter improves readability, and an XML Validator ensures the document itself is well-formed before testing XPath expressions.

Frequently Asked Questions

What is XPath used for?

XPath locates elements, attributes and text within XML documents. It is commonly used in XML processing, XSLT, validation and automation tools.

Does XPath work with HTML?

Yes. Many browsers and automation frameworks support XPath queries for HTML documents as well.

Why does my XPath return nothing?

Common causes include incorrect document structure, missing namespace prefixes or invalid predicates.

Are XPath indexes zero-based?

No. XPath indexes always start at 1.

Should I use XPath or CSS selectors?

For XML, XPath is generally the better choice because it supports navigation, conditions and attribute selection that CSS selectors cannot express as easily.

Conclusion

XPath provides a powerful way to navigate and query XML documents of any size. By understanding paths, predicates, functions, namespaces and common navigation techniques, developers can retrieve exactly the data they need with concise expressions. Combined with tools such as an XPath Tester, XPath Generator, XML Tree Viewer, XML Formatter and XML Validator, XPath becomes an indispensable skill for anyone working with XML.