Грамматика XPath
- Предыдущая страница Узлы XPath
- Следующая страница Ось XPath
XPath использует выражения путей для выбора узлов или наборов узлов в документе XML. Узлы выбираются по пути или шагам.
Пример XML-документа
Мы будем использовать этот XML-документ в примерах ниже.
<?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book> <title lang="eng">Harry Potter</title> <price>29.99</price> </book> <book> <title lang="eng">Learning XML</title> <price>39.95</price> </book> </bookstore>
Выберите узел
XPath использует выражения путей для выбора узлов в документе XML. Узлы выбираются по пути или шагу.
Ниже приведены наиболее полезные выражения путей:
Выражение | Описание |
---|---|
nodename | Выберите все подузлы этого узла. |
/ | Выберите узлы от корневого узла. |
// | Выберите узлы в документе, соответствующие текущему узлу, независимо от их местоположения. |
. | Выберите текущий узел. |
.. | Выберите родительский узел текущего узла. |
@ | Выберите атрибут. |
Пример
В таблице ниже мы перечислили некоторые выражения путей и результаты этих выражений:
Выражение пути | Результат |
---|---|
bookstore | Выберите все подузлы элемента bookstore. |
/bookstore |
Выберите корневой элемент bookstore. Комментарий: если путь начинается с обратного слеша (/), то этот путь всегда代表着 абсолютный путь до элемента! |
bookstore/book | Выберите все элементы book, являющиеся подэлементами элемента bookstore. |
//book | Выберите все подэлементы book, независимо от их местоположения в документе. |
bookstore//book | Выберите все элементы book, являющиеся потомками элемента bookstore, независимо от их местоположения beneath bookstore. |
//@lang | Выберите все атрибуты с именем lang. |
Определители (Predicates)
Определители используются для поиска определенного узла или узла, содержащего определенное значение.
Определители заключены в фигурные скобки.
Пример
В таблице ниже мы перечислили некоторые выражения пути с определителями и результаты этих выражений:
Выражение пути | Результат |
---|---|
/bookstore/book[1] | Выберите первый элемент book, который является подэлементом bookstore. |
/bookstore/book[last()] | Выберите последний элемент book, который является подэлементом bookstore. |
/bookstore/book[last()-1] | Выберите второй по счету элемент book, который является подэлементом bookstore. |
/bookstore/book[position()<3] | Выберите первые два элемента book, которые являются подэлементами bookstore. |
//title[@lang] | Выберите все элементы title, у которых есть атрибут lang. |
//title[@lang='eng'] | Выберите все элементы title, у которых атрибут lang имеет значение eng. |
/bookstore/book[price>35.00] | Выберите все элементы book элемента bookstore, в котором элемент price имеет значение больше 35.00. |
/bookstore/book[price>35.00]/title | Выберите все элементы title элемента bookstore, в котором элемент price имеет значение больше 35.00. |
Выбор неизвестных узлов
Подстановочные знаки XPath можно использовать для выбора неизвестных элементов XML.
Подстановочные знаки | Описание |
---|---|
* | Совпадение любого элементного узла. |
@* | Совпадение любого атрибутного узла. |
node() | Совпадение любого типа узла. |
Пример
В таблице ниже мы перечислили некоторые выражения пути и результаты этих выражений:
Выражение пути | Результат |
---|---|
/bookstore/* | Выберите все подэлементы элемента bookstore. |
//* | Выберите все элементы в документе. |
//title[@*] | Выберите все элементы title с атрибутами. |
Выбор нескольких путей
Используя оператор «|» в выражениях пути, вы можете выбрать несколько путей.
Пример
В таблице ниже мы перечислили некоторые выражения пути и результаты этих выражений:
Выражение пути | Результат |
---|---|
//book/title | //book/price | Выберите все элементы title и price элемента book. |
//title | //price | Выберите все элементы title и price в документе. |
/bookstore/book/title | //price | Выберите все элементы title, принадлежащие элементу bookstore, и все элементы price в документе. |
- Предыдущая страница Узлы XPath
- Следующая страница Ось XPath