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

на главную

Жанры

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

Шрифт:

Метод вывода: HTML

Для метода вывода HTML процессор XSLT должен предпринять определенные действия. Например, для этого метода атрибут

version
определяет версию HTML. Значение по умолчанию — 4.0.

Этот метод не должен добавлять завершающий тег для пустых элементов. (Для HTML 4.0 пустыми элементами являются

<AREA>
,
<BASE>
,
<BASEFONT>
,
<BR>
,
<COL>
,
<FRAME>
,
<HR>
,
<IMG>
,
<INPUT>
,
<ISINDEX>
,
<LINK>
,
<META>
и
<PARAM>
.) Метод вывода HTML должен распознавать названия элементов HTML независимо от регистра.

В соответствии с W3C, метод вывода HTML не должен скрывать содержимое элементов

<SCRIPT>
или
<STYLE>
. Например, следующий элемент буквального результата:

<SCRIPT>

 if (х &lt; у) {...}

</SCRIPT>

или следующий, использующий раздел CDATA:

<SCRIPT>

 <![CDATA[if (х < у) {...}]]>

</SCRIPT>

должен быть преобразован в:

<SCRIPT>

 if (х < у) {...}

</SCRIPT>

Метод вывода HTML не должен также подавлять символы <, встречающиеся в значениях атрибутов.

При установке метода вывода в HTML процессор может учесть атрибут выравнивания. Если этот атрибут установлен в

yes
, процессор XSLT может добавить (или удалить) символы-разделители для выравнивания результирующего документа, поскольку это не влияет на отображение документа в браузере. Для метода вывода HTML значением по умолчанию является «yes».

Как вы могли предположить, метод вывода HTML завершает инструкции обработки при помощи

>
, а не
?>
, а также поддерживает отдельные атрибуты, как и HTML. Например, тег

<TD NOWRAP="NOWRAP">

будет преобразован в:

<TD NOWRAP>

Для этого метода можно установить атрибут

media-type
, значением по умолчанию для которого является «
text/html
». Метод HTML не должен убирать символ &, который появляется в значении атрибута, если сразу за ним следует фигурная скобка. Атрибут
encoding
задает используемую кодировку. Если присутствует элемент
<HEAD>
, этот метод вывода должен добавить элемент
<МЕТА>
сразу же после тега
<HEAD>
, определяя кодировку символов:

<HEAD>

 <МЕТА http-equiv="Content-Type" content="text/html; charset=utf-8">

 .

 .

 .

При помощи атрибутов

doctype-public
или
doctype-system
можно вывести объявление типа документа непосредственно перед первым элементом, как мы увидим при преобразовании XML в XHTML.

Таковы правила вывода HTML. Ниже приведен пример преобразования из XML в HTML с небольшими отклонениями. В этом случае таблица стилей будет фактически генерировать код JavaScript,

демонстрируя создание JavaScript при помощи XSLT. В частности, мы прочитаем
planets.xml
и создадим новый документ HTML, отображающий три кнопки — по одной для каждой из трех планет в
planets.xml
. При щелчке на кнопке на странице будет выведена масса соответствующей планеты.

Все, что нам понадобится (листинг 6.1), — это два элемента

<xsl:for-each>
: один для прохода в цикле по трем планетам и создания для каждой кнопки HTML; и один для прохода по планетам и создания для каждой функции JavaScript. В качестве имен функций JavaScript я воспользуюсь названием планет; при вызове функция выведет массу соответствующей планеты. Заметьте, что для создания нужного кода JavaScript нужно всего лишь применить элемент
<xsl:value-of>
для получения названий и масс планет. Я также применю два новых элемента XSLT,
<xsl:element>
и
<xsl:attribute-set>
, которые мы рассмотрим позже в этой главе, для создания нового элемента и задания для него набора атрибутов.

Листинг 6.1. Преобразование в JavaScript

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:output method="html"/>

 <xsl:template match="/PLANETS">

<HTML>

<HEAD>

<TITLE>

The Mass Page

</TITLE>

<SCRIPT LANGUAGE='javascript'>

<xsl:for-each select="PLANET">

<xsl:text>

function </xsl:text><xsl:value-of select="NAME"/><xsl:text> {

display.innerHTML = 'The mass of </xsl:text>

<xsl:value-of select="NAME"/>

<xsl:text> equals </xsl:text>

<xsl:value-of select="MASS"/>

<xsl:text> Earth masses.'</xsl:text>

}

</xsl:for-each>

</SCRIPT>

</HEAD>

<BODY>

<CENTER>

<H1>The Mass Page</H1>

</CENTER>

<xsl:for-each select="PLANET">

<P/>

<xsl:element name="input" use-attribute-sets="attribs"/>

</xsl:for-each>

<P/>

<P/>

<DIV ID='display'></DIV>

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

Белые погоны

Лисина Александра
3. Гибрид
Фантастика:
фэнтези
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Белые погоны

Столичный доктор. Том III

Вязовский Алексей
3. Столичный доктор
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Столичный доктор. Том III

Король Руси

Ланцов Михаил Алексеевич
2. Иван Московский
Фантастика:
альтернативная история
6.25
рейтинг книги
Король Руси

Измена. Жизнь заново

Верди Алиса
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Жизнь заново

Идеальный мир для Лекаря 17

Сапфир Олег
17. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 17

Эйгор. В потёмках

Кронос Александр
1. Эйгор
Фантастика:
боевая фантастика
7.00
рейтинг книги
Эйгор. В потёмках

Наследник

Кулаков Алексей Иванович
1. Рюрикова кровь
Фантастика:
научная фантастика
попаданцы
альтернативная история
8.69
рейтинг книги
Наследник

Дракон

Бубела Олег Николаевич
5. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.31
рейтинг книги
Дракон

На изломе чувств

Юнина Наталья
Любовные романы:
современные любовные романы
6.83
рейтинг книги
На изломе чувств

Боярышня Дуняша

Меллер Юлия Викторовна
1. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боярышня Дуняша

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

Винокуров Юрий
12. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XII

Я еще не князь. Книга XIV

Дрейк Сириус
14. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще не князь. Книга XIV

Пограничная река. (Тетралогия)

Каменистый Артем
Пограничная река
Фантастика:
фэнтези
боевая фантастика
9.13
рейтинг книги
Пограничная река. (Тетралогия)

По осколкам твоего сердца

Джейн Анна
2. Хулиган и новенькая
Любовные романы:
современные любовные романы
5.56
рейтинг книги
По осколкам твоего сердца