Примеры XPath
В этом разделе приводится обзор примеров синтаксиса, используемых в справочной документации по XPath. Все примеры используют образец XML-файла с синтаксисом XPath (inventory.xml). Пример использования выражения XPath в тестовом файле можно найти в подразделе «Пример использования объединений ( | )» в конце данного раздела.
Выражение | Ссылается на |
---|---|
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Элемент документа ( |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы, являющиеся дочерними для элементов |
|
Все элементы |
|
Все элементы-внуки текущего контекста. |
|
Все элементы с атрибутом |
|
Атрибут |
|
Атрибут |
|
Возвращает пустой набор узлов, потому что атрибуты не содержат дочерних элементов. Такое выражение не запрещено грамматикой языка XPath, но, строго говоря, не является допустимым. |
|
Все элементы |
|
Атрибут |
|
Все атрибуты контекста текущего элемента. |
|
Все элементы |
|
Все элементы |
|
Первый элемент |
|
Третий элемент |
|
Элемент |
|
Все элементы из пространства имен |
|
Все атрибуты из пространства имен |
Обратите внимание, что индексы задаются относительно родительского узла. Допустим, имеются следующие данные:
<x>
<y/>
<y/>
</x>
<x>
<y/>
<y/>
</x>
Выражение | Ссылается на |
---|---|
|
Первый дочерний элемент |
|
Первый дочерний элемент |
|
Первый элемент |
|
Второй дочерний элемент |
Оставшиеся примеры относятся к «Образцу XML-файла с синтаксисом XPath».
Выражение | Ссылается на |
---|---|
|
Последний элемент |
|
Последний дочерний элемент |
|
Последний элемент |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Все элементы |
|
Первые три книги (1, 2, 3). |
|
Все элементы |
|
Все элементы |
|
Все элементы author, имеющие какой-либо дочерний элемент со значением |
|
Все элементы |
|
Все элементы |
|
Первые два элемента |
|
Второй текстовый узел в каждом элементе |
|
Ближайший элемент |
|
Ближайший элемент |
|
Ближайший элемент |
Пример использования объединений (|)
Работу операции объединения можно продемонстрировать на примере следующего выражения XPath:
x | y/x
Оно выбирает все элементы <x> со значениями green или blue из следующего XML-файла:
XML-файл (data1.xml)
<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="union.xsl"?>
<root>
<x>green</x>
<y>
<x>blue</x>
<x>blue</x>
</y>
<z>
<x>red</x>
<x>red</x>
</z>
<x>green</x>
</root>
XSLT-файл (union.xsl)
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="root">
<xsl:for-each select="x | y/x">
<xsl:value-of select="."/>,
<xsl:if test="not(position()=last())">,</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Форматированный вывод
green,blue,blue,green
Вывод обработчика
<?xml version="1.0" encoding="UTF-16"?>green,blue,blue,green