---
obj: concept
wiki: https://en.wikipedia.org/wiki/XPath
---

# XPath
XPath ([XML](XML.md) Path Language) is a powerful query language used to navigate and select elements from [XML](XML.md) documents. It is commonly employed in web scraping, [XML](XML.md) processing, and testing scenarios.

## XPath Syntax
XPath expressions use a path notation to identify and navigate [XML](XML.md) elements. The basic syntax includes:
- **Node Selection:** `/` is used to select the root node. `element` selects all child elements of the current node with the specified name: `/root/element`   
- **Wildcards:** The `*` symbol is used as a wildcard for any element. `/root/*`
- **Predicates:** Square brackets `[]` are used to specify conditions for node selection. `/root/element[@attribute='value']`

### Absolute XPath
Absolute XPath provides the complete path from the root node to the desired element. It starts with a single forward slash `/`.
`/html/body/div[1]/p[2]`

### Relative XPath
Relative XPath selects elements based on their relationship to other elements. It does not start from the root, allowing for more flexible and adaptable expressions.
`//div[@class='example']/a`

### XPath Functions
XPath provides various functions for more complex queries. Examples include `text()`, `contains()`, and `position()`.
`//h2[contains(text(),'XPath')]`

Some functions include:
- `text()`: The `text()` function is used to select the text content of an element.
- `contains(element, value)`: The `contains()` function is used to check if a string contains a specific substring.
- `starts-with(element, value)`: The `starts-with()` function is used to check if a string starts with a specified prefix.
- `concat(elements...)`: The `concat()` function concatenates two or more strings.
- `not(element)`: The `not()` function negates a given expression.
- `position()`: The `position()` function returns the position of the current node in the selection.
- `last()`: The `last()` function returns the position of the last node in the selection.