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

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

Жанры

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

Шрифт:

 .

 .

 .

Создание шаблонов и работа с ними — суть XSLT, и сейчас мы рассмотрим этот элемент, продолжая создавать таблицу

planets.xsl
.

Элемент <xsl:template>

Шаблоны XSL позволяют задать способ выполнения вашего преобразования. Каждый элемент

<xsl:template>
устанавливается для выбора одного узла (который может содержать другие узлы) или ряда узлов в исходном
документе, а также точного указания способа преобразования этого узла. В следующем списке перечислены атрибуты
<xsl:template>
:

• 

match
(необязательный). Задает шаблон, выбирающий обрабатываемые узлы. Устанавливается в допустимый шаблон;

• 

name
(необязательный). Содержит имя шаблона, что разрешает его вызов. Если вы не используете этот атрибут, вы должны использовать атрибут
match
. Принимает значение типа
QName
;

• 

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

• 

mode
(необязательный). Если вы применяете
<xsl:apply-templates>
к множеству узлов, будут использоваться только шаблоны с совпадающим режимом (mode). Принимает значение типа
QName
.

Каждый такой элемент

<xsl:template>
называется правилом (rule). В общем случае элемент
<xsl:template>
может содержать ноль или более элементов
<xsl:param>
(как мы увидим в главе 9), за которыми следует тело шаблона, задающего способ осуществления преобразования.

Тела шаблонов

Шаблоны формируются по жестко заданным правилам. Они способны содержать элементы

<xsl:param>
, за которыми следует тело шаблона; в последнем могут содержаться данные
PCDATA
, инструкции XSLT, элементы расширения и элементы буквального результата.

Инструкции XSLT

В теле шаблона может присутствовать ряд элементов XSLT, называемых инструкциями:

<xsl:apply-imports>
;

<xsl:apply-templates>
;

<xsl:attribute>
;

<xsl:call-template>
;

<xsl:choose>
;

<xsl:comment>
;

<xsl:copy>
;

<xsl:copy-of>
;

<xsl:element>
;

<xsl:fallback>
;

<xsl:for-each>
;

<xsl:if>
;

<xsl:message>
;

<xsl:number>
;

<xsl:processing-instruction>
;

<xsl:text>
;

<xsl:value-of>
;

<xsl:variable>
.

В

теле шаблона больше никакие элементы XSLT непосредственно появиться не могут. Как вы увидите в главе 9, элемент
<xsl:param>
может появиться в шаблоне перед телом, но он не называется инструкцией XSLT. В шаблонах могут также появляться и другие элементы XSLT, такие как
<xsl:sort>
,
<xsl:otherwise>
и
<xsl:with-param>
, но только в определенных местах, поэтому W3C не называет их инструкциями. Далее в книге мы рассмотрим, как использовать каждую из этих инструкций.

Элементы расширения

Элементы расширения рассматриваются в главе 5; эти элементы, расширяющие XSLT, определяются пользователем или процессором XSLT. Во многих процессорах XSLT были определены собственные расширения — и это стало одной из причин, по которым W3C представил рабочий проект XSLT 1.1, где механизм расширений был более регламентирован. Вероятно, эта функциональность будет включена в XSLT 2.0.

Элементы буквального результата

Если элемент в теле шаблона не является инструкцией XSL или элементом расширения, процессор XSLT должен рассматривать его в качестве элемента буквального результата. Это означает, что элемент должен трактоваться буквально и копироваться в результирующее дерево (то есть копироваться в выходное дерево, созданное процессором XSLT).

Например, в следующем теле шаблона элемент

<TD>
является элементом буквального результата, который будет скопирован в выходной документ:

<xsl:template match="RADIUS">

 <TD>RADIUS</TD>

</xsl:template>

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

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

version
 можно указать, что все элементы XSLT внутри элемента буквального результата должны быть элементами XSLT версии 1.0:

<xsl:template match="RADIUS">

 <TD xsl:version="1.0">RADIUS</TD>

</xsl:template>

В следующем списке перечислены все возможные атрибуты элемента буквального результата:

• Attribute Value Templates, шаблон значений атрибута (необязательный). Любые выражения XPath в фигурных скобках вычисляются, и результат в виде строкового значения копируется в атрибут в результирующем дереве. Устанавливается в шаблон значений атрибута (см. главу 3);

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

Государь

Кулаков Алексей Иванович
3. Рюрикова кровь
Фантастика:
мистика
альтернативная история
историческое фэнтези
6.25
рейтинг книги
Государь

Гром Раскатного. Том 3

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

Последний реанорец. Том III

Павлов Вел
2. Высшая Речь
Фантастика:
фэнтези
попаданцы
5.25
рейтинг книги
Последний реанорец. Том III

Двойник короля 12

Скабер Артемий
12. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 12

Гримуар темного лорда V

Грехов Тимофей
5. Гримуар темного лорда
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда V

Ботаник 2

Щепетнов Евгений Владимирович
2. Ботаник
Фантастика:
фэнтези
боевая фантастика
6.00
рейтинг книги
Ботаник 2

Главбухша

Романов Владислав Иванович
Любовные романы:
остросюжетные любовные романы
5.00
рейтинг книги
Главбухша

Язычник

Мазин Александр Владимирович
5. Варяг
Приключения:
исторические приключения
8.91
рейтинг книги
Язычник

Кодекс Охотника. Книга XXXII

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

Менталист. Конфронтация

Еслер Андрей
2. Выиграть у времени
Фантастика:
боевая фантастика
6.90
рейтинг книги
Менталист. Конфронтация

Лекарь Империи 8

Лиманский Александр
8. Лекарь Империи
Фантастика:
попаданцы
городское фэнтези
аниме
5.00
рейтинг книги
Лекарь Империи 8

Последний Паладин. Том 13

Саваровский Роман
13. Путь Паладина
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 13

Кодекс Охотника. Книга XXI

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

Сирота

Шмаков Алексей Семенович
1. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Сирота