XPath stands for XML Path Language. It uses a non-XML syntax to provide a flexible way of addressing (pointing to) different parts of an XML document. It can also be used to test addressed nodes within a document to determine whether they match a pattern or not.

XPath is mainly used in XSLT, but can also be used as a much more powerful way of navigating through the DOM of any XML-like language document using XPathExpression, such as HTML and SVG, instead of relying on the Document.getElementById() or Document.querySelectorAll() methods, the Node.childNodes properties, and other DOM Core features.

XPath uses a path notation (as in URLs) for navigating through the hierarchical structure of an XML document. It uses a non-XML syntax so that it can be used in URIs and XML attribute values.

Note: Support for XPath varies widely; it's supported reasonably well in Firefox (although there are no plans to improve support further), while other browsers implement it to a lesser extent, if at all. If you need a polyfill, you may consider js-xpath or wicked-good-xpath.


Introduction to using XPath in JavaScript

Describes a non-XSLT use of XPath.


List and definition of the axes defined in the XPath specification. Axes are used to describe the relationships between nodes.


List and description of the core XPath functions and XSLT-specific additions to XPath.

Transforming XML with XSLT

XSLT uses XPath to address code segments in an XML document that it wishes to transform.

XPath snippets

These are JavaScript utility functions, that can be used in your own code, based on DOM Level 3 XPath APIs.

What is XSLT?

This extensive introduction to XSLT and XPath assumes no prior knowledge of the technologies, and guides the reader through background, context, structure, concepts, and introductory terminology.


XPath tester

An online XPath Builder/Debugger.