Вход/Регистрация
XSLT
вернуться

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

Шрифт:

• 

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):

  • Читать дальше
  • 1
  • ...
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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