С помощью выражений XPath для выбора узлов в документе XML можно выбрать узел, следуя пути или шагам.
Полезные выражения для формирования пути
Выражение |
Описание |
|
---|---|---|
имя_узла |
Выбирает все узлы с именем имя_узла |
|
/ |
Выбирает от корневого узла
|
|
// |
Выбирает все узлы от текущего узла, которые соответствуют выбору, независимо от того, где они находятся |
|
. |
Выбирает текущий узел |
|
.. |
Выбирает родителя текущего узла |
|
@ |
Выбирает атрибуты |
|
Примеры |
||
bookstore |
Выбирает все узлы с именем bookstore |
|
/bookstore |
Выбирает корневой элемент |
|
bookstore/book |
Выбирает все элементы book, которые являются потомками элемента bookstore |
|
//book |
Выбирает все элементы book независимо от того, где они находятся в документе |
|
bookstore//book |
Выбирает все элементы book, которые являются потомками элемента bookstore, независимо от того, где они находятся в ветви bookstore |
|
//@lang |
Выбирает все атрибуты, которые называются lang |
Предикаты
Предикаты используются для поиска специфического узла или узла, который содержит специфическое значение. Предикаты всегда обрамляются квадратными скобками
Пример выражения |
Результат |
---|---|
/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='en'] |
Выбирает все элементы title, которые имеют атрибут lang со значением "en" |
/bookstore/book[price>35.00] |
Выбирает все элементы book после элемента bookstore, которые имеют элемент price со значением больше, чем 35.00 |
/bookstore/book[price>35.00]/title |
Выбирает все элементы title элементов book из элемента bookstore, которые имеют элемент price со значением больше чем 35.00 |
Выбор неизвестных узлов
Wildcard |
Результат |
---|---|
* |
Соответствует любому узлу |
@* |
Соответствует узлу-атрибуту |
node() |
Соответствует любому узлу любого типа |
//* |
Выбирает все элементы в документе |
Примеры |
|
/bookstore/* |
Выбирает все дочерние узлы элемента bookstore |
//title[@*] |
Выбирает все элементы title, которые имеют по крайней мере один атрибут любого вида |
Выбор нескольких путей
Пример пути |
Результат |
---|---|
//book/title | //book/price |
Выбирает все элементы title И price всех элементов book |
//title | //price |
Выбирает все элементы title И price в документе |
/bookstore/book/title | //price |
Выбирает все элементы title элемента book элемента bookstore И все элементы price в документе |