Чтение онлайн

на главную - закладки

Жанры

Холзнер Стивен

Шрифт:

• 

attribute::childname
может быть сокращено как
@childname
;

• 

/descendant-or-self::node/
может быть сокращено как
//
.

Например, путь расположения

.//PLANET
— сокращение для
self::node/descendant-or-self::node/child::PLANET
. Можно также сократить выражение предиката
[position=3]
как
[3]
,
[position=last]
как
[last]
и т.д. Работать с путями расположения XPath
при помощи сокращенного синтаксиса значительно проще. В следующем списке перечислен ряд примеров путей расположения с использованием сокращенного синтаксиса:

• 

PLANET
возвращает дочерние элементы
<PLANET>
контекстного узла;

• 

*
возвращает все дочерние элементы контекстного узла;

• 

text
возвращает все дочерние текстовые узлы контекстного узла;

• 

@UNITS
возвращает атрибут
UNITS
контекстного узла;

• 

@*
возвращает все атрибуты контекстного узла;

• 

PLANET[3]
возвращает третьего ребенка
<PLANET>
контекстного узла;

• 

PLANET[last]
возвращает последнего ребенка
<PLANET>
контекстного узла;

• 

*/PLANET
возвращает всех внуков
<PLANET>
контекстного узла;

• 

/PLANETS/PLANET[3]/NAME[2]
возвращает второй элемент
<NAME>
третьего элемента
<PLANET>
элемента
<PLANETS>
;

• 

//PLANET
возвращает всех потомков
<PLANET>
корня документа;

• 

PLANETS//PLANET
возвращает элементы-потомки
<PLANET>
дочерних элементов
<PLANETS>
контекстного узла;

• 

//PLANET/NAME
возвращает все элементы
<NAME>
, у которых есть родитель
<PLANET>
;

• 

.
возвращает сам контекстный узел;

• 

.//PLANET
возвращает элементы-потомки
<PLANET>
контекстного узла;

• 

..
возвращает родителя контекстного узла;

• 

../@UNITS
возвращает атрибут
UNITS
родителя контекстного узла;

• 

.//..
возвращает всех родителей потомка контекстного узла и родителя контекстного узла;

• 

PLANET[NAME]
возвращает детей
<PLANET>
контекстного узла, у которых есть дети
<NAME>
;

• 

PLANET[NAME="Venus"]
возвращает детей
<PLANET>
контекстного узла, у которых есть дети
<NAME>
с текстом, равным «Venus»;

• 

PLANET[@UNITS="days"]
возвращает всех детей
<PLANET>
контекстного узла, у которых есть атрибут
UNITS
со
значением «
days
»;

• 

PLANET[6][@UNITS="days"]
возвращает шестого ребенка
<PLANET>
контекстного узла, только если у этого ребенка есть атрибут
UNITS
со значением «days». Можно также написать
PLANET[@UNITS="days"][6]
;

• 

PLANET[@COLOR and @UNITS]
возвращает всех детей
<PLANET>
контекстного узла, у которых есть атрибут
COLOR
и атрибут
UNITS
;

• "

//PLANET[not(.=preceding::PLANET)]
" выбирает все элементы
<PLANET>
, значение которых отлично от значения любого предшествующего элемента
<PLANET>
;

• 

*[1][self::NAME]
выбирает любой элемент
<NAME>
, который является первым ребенком своего родителя;

• 

*[position &lt; 5][@UNITS]
выбирает первых пятерых детей контекстного узла, у которых есть атрибут
UNITS
.

Проверка выражений XPath

В пакет Xalan входит удобная программа-пример, ApplyXPath.java, позволяющая применить выражение XPath к документу и посмотреть на результат, что очень помогает при тестировании. Для запуска этого примера вам нужно будет скомпилировать

ApplyXPath.java
в
ApplyXPath.class
при помощи утилиты java.exe, входящей в поставку Java.

В качестве примера я применю выражение XPath «

PLANET/NAME
» к
planets.xml
при помощи
ApplyXPath.class
. Ниже показан результат, отображающий все элементы
<NAME>
, дочерние по отношению к элементам
<PLANET>
(теги
<output>
добавлены программой ApplyXPath):

%java ApplyXPath planets.xml PLANET/NAME

<output>

 <NAME>Mercury</NAME><NAME>Venus</NAME><NAME>Earth</NAME>

</output>

XPath 2.0

XPath находится в стадии обновления, и в него включаются средства поддержки XSLT 2.0 (см. www.w3.org/TR/xpath20req). Задачи XPath 2.0 следующие:

• упрощение операций с содержимым типов, поддерживаемых схемой XML;

• упрощение операций со строковым содержимым;

• поддержка соответствующих стандартов XML;

• улучшение удобства использования;

• улучшение функциональной совместимости;

• улучшение поддержки международных языковых средств;

• сохранение обратной совместимости;

• повышенная эффективность процессора.

Следующий список дает обзор требований XPath. Главные пункты — поддержка схемы XML и регулярных выражений, что дает средства работы со строками и поиска в строках. (Дополнительную информацию о регулярных выражениях можно почерпнуть по адресу В соответствии с W3C, XPath 2.0:

Поделиться:
Популярные книги

Эпоха Опустошителя. Том II

Павлов Вел
2. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том II

Жена со скидкой, или Случайный брак

Ардова Алиса
Любовные романы:
любовно-фантастические романы
8.15
рейтинг книги
Жена со скидкой, или Случайный брак

Запечатанный во тьме. Том 1. Тысячи лет кача

NikL
1. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 1. Тысячи лет кача

Виктор Глухов агент Ада. Компиляция. Книги 1-15

Сухинин Владимир Александрович
Виктор Глухов агент Ада
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
попаданцы
5.00
рейтинг книги
Виктор Глухов агент Ада. Компиляция. Книги 1-15

Древесный маг Орловского княжества 3

Павлов Игорь Васильевич
3. Орловское княжество
Фантастика:
аниме
сказочная фантастика
фэнтези
попаданцы
гаремник
5.00
рейтинг книги
Древесный маг Орловского княжества 3

Адвокат Империи 14

Карелин Сергей Витальевич
14. Адвокат империи
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Адвокат Империи 14

Страж Кодекса. Книга IV

Романов Илья Николаевич
4. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга IV

Я еще не бог. Книга XXXV

Дрейк Сириус
35. Дорогой барон!
Фантастика:
аниме
попаданцы
5.00
рейтинг книги
Я еще не бог. Книга XXXV

Я спас СССР! том 2

Вязовский Алексей
2. Я спас СССР
Фантастика:
альтернативная история
5.62
рейтинг книги
Я спас СССР! том 2

Кодекс Охотника XXXI

Винокуров Юрий
31. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Охотника XXXI

Наномашины, первоклашка! Том 4

Новиков Николай Васильевич
4. Чего смотришь? Иди книгу читай
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наномашины, первоклашка! Том 4

Громовая поступь. Трилогия

Мазуров Дмитрий
Громовая поступь
Фантастика:
фэнтези
рпг
4.50
рейтинг книги
Громовая поступь. Трилогия

Снайпер

Поселягин Владимир Геннадьевич
3. Жнец
Фантастика:
боевая фантастика
попаданцы
5.60
рейтинг книги
Снайпер

Кодекс Крови. Книга ХVI

Борзых М.
16. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVI