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 | результат |
---|---|
// Книга / название | // Книга / цена | Выбирает все названия и ценовые элементы всех книжных элементов |
// название | //цена | Выбирает все названия и цена элементов в документе |
/ Книжный магазин / книга / название | //цена | Выбирает все элементы заглавия книжного элемента книжного элемента и все элементы цен в документе |