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

Валиков Алексей Н.

Шрифт:

</xsl:when>

<xsl:otherwise>

<event type="access denied">

<xsl:copy-of select="name"/>

<reason type="underaged">

<xsl:copy-of select="age"/>

</reason>

</event>

</xsl:otherwise>

</xsl:choose>

 </xsl:template>

</xsl:stylesheet>

Листинг 3.21. Выходящий документ

<event type="access denied">

 <name>John</name>

 <reason type="underaged">

<age>19</age>

 </reason>

</event>

Элемент

xsl:copy-of
, который использовался в этом преобразовании, делает примерно то же самое, что и
xsl:value-of
— вычисляет значение выражения и включает его в дерево выходящего документа. Главным отличием
xsl:copy-of
является то, что при его выполнении вычисленное выражение не преобразуется в строку, что позволяет копировать в выходящее дерево множества узлов и результирующие фрагменты. В приведенном выше примере элементы
name
и
age
выходящего документа являются копиями элементов
name
и
age
входящего документа.

В преобразованиях выражения могут использоваться только в атрибутах элементов и никогда — в тексте самого преобразования. Элемент

<reason type="underaged">

 age

</reason>

будет скопирован в выходящий документ, содержащий текст "

age
". Ни о каком вычислении выражения
age
речь, конечно же, не идет. Для того чтобы в результирующий документ был скопирован результат вычисления выражения, оно должно быть заключено в атрибут одного из вычисляющих элементов, например,
xsl:copy-of
:

<reason type="underaged">

 <xsl:copy-of select="age"/>

</reason>

В этом случае в элемент reason будет включен результат вычисления выражения

age
.

Виды выражений

Выражения языка XPath можно условно разделить на несколько основных типов:

□ пути выборки;

□ выражения фильтрации множеств;

□ выражения объединения множеств;

□ сравнения;

□ логические операции;

□ вызовы функций.

Рассмотрим подробно назначение и принципы работы каждого из типов выражений.

Пути выборки

Путь выборки является самым главным видом выражений, которые применяются в XSLT. Путь выборки в соответствии с некоторыми критериями выбирает множество узлов входящего документа.

Путь выборки может быть абсолютным (отсчитываться от корневого узла дерева) или относительным (отсчитываться от контекстного узла). Он может состоять из нескольких шагов выборки, каждый из которых относительно предыдущего шага (или начального узла) выбирает некоторое множество узлов. Результатом вычисления пути выборки является множество узлов, выбранное его последним шагом.

Пример

Предположим, что нам нужно получить узел элемента

title
, находящийся в элементе
head
, который находится в элементе
html
, находящемся в корне документа. Соответствующий путь выборки будет выглядеть как:

/html/head/title

Означает он примерно следующее:

□ "

/
" — ведущая косая черта обозначает абсолютный путь выборки, то есть путь, который отсчитывается от корневого узла;

□ "

html
" — шаг выборки элементов
html
;

□ "

/
" — разделитель шагов выборки;

□ "

head
" — шаг выборки элементов
head
;

□ "

/
" — разделитель шагов выборки;

□ "

title
" — шаг выборки элементов
title
.

Поскольку каждый из шагов отсчитывается от результатов предыдущего, шаг "

html
" будет выбирать элементы
html
, являющиеся дочерними элементами корневого узла и так далее. Пошаговое вычисление этого пути можно описать следующим образом:

□ "

/
" — путь, который выбирает корневой узел;

□ "

/html
" — путь, который выбирает дочерние элементы
html
корневого узла;

□ "

/html/head
" — путь, который выбирает дочерние элементы
head
элементов
html
, находящихся в корне документа;

□ "

/html/head/title
" — путь, выбирающий дочерние элементы
title
субэлементов
head
элементов
html
, которые находятся в корне документа.

  • Читать дальше
  • 1
  • ...
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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