Синтаксис XPath
- Предыдущая страница Элементы XPath
- Следующая страница Ось XPath
XPath использует выражения для выбора узлов или набора узлов в XML-документе. Узлы выбираются по пути (path) или шагам (steps).
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. Комментарий: Если путь начинается с обратной косой черты (/), то этот путь всегда represents абсолютный путь к элементу! |
bookstore/book | Выберите все элементы book, которые являются подэлементами элемента bookstore. |
//book | Выберите все подэлементы book, независимо от их положения в документе. |
bookstore//book | Выберите все элементы book, которые являются потомками элемента 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 элемента book в элементе 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