Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Лекции / Lect4-07.doc
Скачиваний:
7
Добавлен:
12.05.2015
Размер:
332.29 Кб
Скачать

5.3.7.3. Вызов неименованных правил шаб­лона

Для применения правил шаб­лона (в которых не задан атрибут name) вXSLTиспользуется элемент-инструкцияxsl:apply-templates.

Этот элемент имеет следующий синтаксис:

<xsl:apply-templates

select="выражение"

mode="режим">

<!--

Содержимое: элементы xsl:sort или xsl:with-param

-->

</xsl:apply-templates>

Элемент xsl:apply-templatesполучает на входе последовательность узлов, соответствующих образцу, заданному в атрибутеmatchэлементаxsl:template. Необязательный атрибутselectзадает выражение, результатом которого является последовательность узлов, которая является выборкой из исходной последовательности узлов. Если ат­рибутselectне задан, то правила шаблона применяются ко всем дочерним узлам текущего узла, т.е. инструкция

<xsl:apply-templates/>

действует так же, как инструкция

<xsl:apply-templates select="child::node()"/>

В результате выполнения элемента xsl:apply-templatesполучается последовательность компонент, которая чаще всего добавляется к результирующей иерархической структуре.

Оба элемента xsl:templateиxsl:apply-templatesимеют необязательный атрибутmode. Если элементxsl:templateне имеет атрибутаmatch, то он не должен иметь и атрибутаmode. Если элементxsl:apply-templatesимеет атрибутmode, то он применяется только к тем правилам шаблона из элементовxsl:template, которые имеют атрибутmodeс тем же значением, либо имеют значение атрибутаmode, равное "#all". Если элементxsl:apply-templatesатрибутаmodeне имеет, то он применяется только к тем правилам шаблона из элементовxsl:template, которые также не имеют атрибутаmode, либо имеют значение атрибутаmode, равное "#default". В элементеxsl:apply-templatesсуществует два предопределенных имени режимов: "#default" (режим, действующий по умолчанию) и "#current" (текущий режим).

Пример использования элементов xsl:template и xsl:apply-templates:

Вывод тем сообщений для документа XML email.xml(см.5.1.1.5.2).

Преобразование XSLT имеет следующий вид:

<?xml version="1.0" encoding="windows-1251"?>

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html" version="4.0"

encoding="windows-1251" indent="yes"/>

<!-- Формирование выходного документа HTML -->

<xsl:template match="/">Вывод тем сообщений

<html>

<head>

<title> Вывод тем сообщений</title>

</head>

<body>

<!-- Применение правила шаблона для элемента subject -->

<xsl:apply-templates select="//subject"/>

</body>

</html>

</xsl:template>

<!-- Задание правила шаблона для элемента subject -->

<xsl:template match="subject">

<p>

<span

style="font-weight:bold;color:blue">Тема: </span>

<xsl:apply-templates/>

</p>

</xsl:template>

</xsl:stylesheet>

Сформированный выходной документ HTMLимеет следующий вид:

<html>

<head>

<meta http-equiv="Content-Type"

content="text/html; charset=windows-1251">

<title>Вывод тем сообщений</title>

</head>

<body>

<p><span style="font-weight:bold;color:blue">

Тема: </span>Поздравление</p>

<p><span style="font-weight:bold;color:blue">

Тема: </span>Напоминание</p>

<p><span style="font-weight:bold;color:blue">

Тема: </span>Отказ</p>

<p><span style="font-weight:bold;color:blue">

Тема: </span>Вопрос</p>

<p><span style="font-weight:bold;color:blue">

Тема: </span>Ответ</p>

</body>

</html>

Вывод результата преобразования в Web-браузере будет иметь следующий вид:

Соседние файлы в папке Лекции