34 lines
2 KiB
Markdown
34 lines
2 KiB
Markdown
|
---
|
||
|
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.
|