Последние учебники веб-разработки
 

Синтаксис XPath


XPath использует выражения пути для выбора узлов или множества узлов в документе XML. Узел выбран, следуя по пути или шаги.


Пример XML документа

Мы будем использовать следующий XML-документ в приведенных ниже примерах.

<?xml version="1.0" encoding="UTF-8"?>

<bookstore>

<book>
  <title lang="en">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="en">Learning XML</title>
  <price>39.95</price>
</book>

</bookstore>

Выбор узлов

XPath использует выражения пути для выбора узлов в документе XML. Узел выбран, следуя по пути или шаги. Самые полезные выражения пути, перечислены ниже:

выражение Описание
nodename Выбирает все узлы с именем « nodename »
/ Выбор из корневого узла
// Выбирает узлы документа из текущего узла, который соответствует выбору, независимо от того, где они находятся
. Выбирает текущий узел
.. Выбирает родителя текущего узла
@ Выбор атрибутов

В приведенной ниже таблице мы приводим несколько путей выражения и результат выражения:

Путь Expression результат
книжный магазин Выбирает все узлы с именем "bookstore"
/книжный магазин Выбор корневого элемента книжный

Note: Если путь начинается с косой черты ( / ) всегда представляет собой абсолютный путь к элементу!

книжный магазин / книга Выбирает все элементы книги, которые дети книжных магазинов
//книга Выбирает все элементы книги, независимо от того, где они находятся в документе
книжный магазин // книга Выбирает все книжные элементы, которые являются потомком книжного элемента, независимо от того, где они находятся под книжным элементом
// @ Ланг Выбирает все атрибуты, которые называются Ланг

Предикаты

Предикаты используются, чтобы найти конкретный узел или узел, который содержит конкретное значение.

Предикаты всегда вкладывается в квадратных скобках.

В приведенной ниже таблице мы перечислили некоторые выражения пути с предикатами и результат выражения:

Путь Expression результат
/ Книжная / книга [1] Выбирает первый книжный элемент, который является дочерним книжным элементом.

Note: В IE 5,6,7,8,9 первый узел [0], но в соответствии с W3C, это [1]. Для того, чтобы решить эту проблему в IE, установите SelectionLanguage в XPath:

In JavaScript: xml . setProperty("SelectionLanguage","XPath") ;
/ книжный магазин / книга [ last() ] Выбор последней книгой элемента, который является дочерним элемент книжного магазина
/ книжная / книга [ last() -1] Выбор последнего, но один книжный элемент, который является дочерним элементом книжного магазина
/ книжный / книга [ position() <3] Выбор первых двух книг элементов, которые являются потомками книжного магазина элемента
// название [@lang] Выбирает все титульные элементы, которые имеют атрибут с именем Ланг
// название [@ Ланг = 'ан'] Выбирает все титульные элементы , которые имеют атрибут «языки» со значением "en"
/bookstore/book[price>35.00] Выбирает все книжные элементы книжного элемента, которые имеют ценовой элемент со значением больше, чем 35,00
/bookstore/book[price>35.00]/title Выбирает все титульные элементы книги элементов книжного элемента, которые имеют ценовой элемент со значением больше, чем 35,00

Выбор не указаны Узлы

XPath шаблоны могут быть использованы для выбора неизвестных узлов XML.

Wildcard Описание
* Соответствует любой элемент узел
@* Соответствует любой узел атрибута
node() Соответствует любой узел любого рода

В приведенной ниже таблице мы приводим несколько путей выражения и результат выражения:

Путь Expression результат
/книжный магазин/* Выбирает все дочерние узлы элемента книжного магазина элемента
// * Выбирает все элементы в документе
//заглавие[@*] Выбирает все названия элементов, которые имеют по крайней мере один атрибут любого вида

Выбор несколько трактов

При использовании | оператор в выражении XPath вы можете выбрать несколько путей.

В приведенной ниже таблице мы приводим несколько путей выражения и результат выражения:

Путь Expression результат
// Книга / название | // Книга / цена Выбирает все названия и ценовые элементы всех книжных элементов
// название | //цена Выбирает все названия и цена элементов в документе
/ Книжный магазин / книга / название | //цена Выбирает все элементы заглавия книжного элемента книжного элемента и все элементы цен в документе