• text()
возвращает все дочерние текстовые узлы контекстного узла;
• @UNITS
возвращает атрибут UNITS
контекстного узла;
• @*
возвращает все атрибуты контекстного узла;
• PLANET[3]
возвращает третьего ребенка контекстного узла;
• PLANET[last()]
возвращает последнего ребенка контекстного узла;
• */PLANET
возвращает всех внуков контекстного узла;
• /PLANETS/PLANET[3]/NAME[2]
возвращает второй элемент третьего элемента элемента ;
• //PLANET
возвращает всех потомков корня документа;
• PLANETS//PLANET
возвращает элементы-потомки дочерних элементов контекстного узла;
• //PLANET/NAME
возвращает все элементы , у которых есть родитель ;
• .
возвращает сам контекстный узел;
• .//PLANET
возвращает элементы-потомки контекстного узла;
• ..
возвращает родителя контекстного узла;
• ../@UNITS
возвращает атрибут UNITS
родителя контекстного узла;
• .//..
возвращает всех родителей потомка контекстного узла и родителя контекстного узла;
• PLANET[NAME]
возвращает детей контекстного узла, у которых есть дети ;
• PLANET[NAME="Venus"]
возвращает детей контекстного узла, у которых есть дети с текстом, равным «Venus»;
• PLANET[@UNITS="days"]
возвращает всех детей контекстного узла, у которых есть атрибут UNITS
со значением « days
»;
• PLANET[6][@UNITS="days"]
возвращает шестого ребенка контекстного узла, только если у этого ребенка есть атрибут UNITS
со значением «days». Можно также написать PLANET[@UNITS="days"][6]
;
• PLANET[@COLOR and @UNITS]
возвращает всех детей контекстного узла, у которых есть атрибут COLOR
и атрибут UNITS
;
• " //PLANET[not(.=preceding::PLANET)]
" выбирает все элементы , значение которых отлично от значения любого предшествующего элемента ;
• *[1][self::NAME]
выбирает любой элемент , который является первым ребенком своего родителя;
• *[position() < 5][@UNITS]
выбирает первых пятерых детей контекстного узла, у которых есть атрибут UNITS
.
В пакет Xalan входит удобная программа-пример, ApplyXPath.java, позволяющая применить выражение XPath к документу и посмотреть на результат, что очень помогает при тестировании. Для запуска этого примера вам нужно будет скомпилировать ApplyXPath.java
в ApplyXPath.class
при помощи утилиты java.exe, входящей в поставку Java.
В качестве примера я применю выражение XPath « PLANET/NAME
» к planets.xml
при помощи ApplyXPath.class
. Ниже показан результат, отображающий все элементы , дочерние по отношению к элементам (теги добавлены программой ApplyXPath):
%java ApplyXPath planets.xml PLANET/NAME
MercuryVenusEarth
XPath находится в стадии обновления, и в него включаются средства поддержки XSLT 2.0 (см. www.w3.org/TR/xpath20req). Задачи XPath 2.0 следующие:
• упрощение операций с содержимым типов, поддерживаемых схемой XML;
• упрощение операций со строковым содержимым;
• поддержка соответствующих стандартов XML;
• улучшение удобства использования;
• улучшение функциональной совместимости;
• улучшение поддержки международных языковых средств;
• сохранение обратной совместимости;
• повышенная эффективность процессора.
Следующий список дает обзор требований XPath. Главные пункты — поддержка схемы XML и регулярных выражений, что дает средства работы со строками и поиска в строках. (Дополнительную информацию о регулярных выражениях можно почерпнуть по адресу http://www.perldoc.com/perl5.6/pod/perlre.html.) В соответствии с W3C, XPath 2.0:
• должен поддерживать архитектуру XML W3C, хорошо взаимодействуя с другими стандартами в семействе XML;
• должен выражать свою модель данных в терминах информационного множества (infoset) XML;
• должен предоставлять общий ключевой синтаксис для XSLT 2.0 и XML Query language 1.0;
• должен поддерживать явное сравнение « for any
» или « for all
» и синтаксис равенства;
• должен расширять множество функций агрегации (например, пользователи XSLT часто требовали добавить функции min()
и max()
);
• должен сохранять обратную совместимость с XPath 1.0;
• должен предоставлять функции пересечения и разности то есть — XPath 1.0 поддерживает объединение двух наборов узлов, и к этому должны быть добавлены функции пересечения и разности;
• должен поддерживать операцию унарного плюса (поскольку в схеме XML у десятичных чисел может присутствовать лидирующий плюс);
• должен улучшать удобство использования;
• должен снизить ограничения на шаги расположения;
Читать дальше