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

на главную

Жанры

Технология XSLT

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

Шрифт:
Атрибут media-type

Атрибут

media-type
определяет медиа-тип содержимого выходящего документа. Для HTML-документов значением
media-type
по умолчанию будет
"text/html"
.

Метод вывода "text"

XSLT позволяет выводить результат преобразования как простой текст. При использовании

method="text"
результирующее дерево приводится к строке, то есть в этом случае результатом преобразования
будет строковое сложение всех текстовых узлов дерева.

Пример

Входящий документ

<?xml version="1.0" encoding="utf-8"?>

<page>

 <title>My heart's in the Highlands</title>

 <content>My heart is not here</content>

</page>

одним и тем же шаблоном:

<xsl:template match="/page">

 <poem title="{title}">

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

<xsl:text>&#xA;</xsl:text>

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

 </poem>

</xsl:template>

при использовании метода вывода

"xml"
будет преобразован к виду

<?xml version="1.0" encoding="utf-8"?>

<poem title="My heart's in the Highlands">

 My heart's in the Highlands

 My heart is not here

</poem>

а при использовании метода

"text"
к виду

My heart's in the Highlands

My heart is not here

Атрибут encoding

Атрибут

encoding
указывает на предпочтительную кодировку вывода текста документа. Значение атрибута
encoding
по умолчанию зависит от программной платформы, на которой производится преобразование. В большинстве процессоров по умолчанию используются кодировки UTF-8, ASCII и ISO-8859-1.

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

Атрибут media-type

По умолчанию в качестве значения атрибута

media-type
, используемого для простого текста, указывается
"text/plain"
. Значение атрибута
media-type
может быть использовано сервером, преобразующим документ в качестве MIME-типа.

Другие методы вывода

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

"xml"
,
"html"
и
"text"
использовать также и другие методы, реализация которых будет зависеть от производителя того или иного процессора. Кажется вполне логичной и закономерной возможность использования, к примеру, такого метода, как
"pdf"
для создания
документов в Adobe Portable Document Format (переносимом формате документов) или метода
"bin"
для создания двоичного потока данных. Однако, на данном этапе, процесс сериализации (создания физической сущности из логической модели) пока еще не определен в общем виде для произвольного метода. Возможно, в будущем, по аналогии с объектной моделью документа (DOM) будут созданы схожие интерфейсы для более легкого определения методов сериализации и интеграции преобразований в другие программы, но в настоящее время следует ограничиваться тремя основными методами.

Отметим также, что спецификация языка XSLT определяет функциональность элемента

xsl:output
как возможную, но не обязательную. Процессоры обязаны манипулировать логическими моделями XML-документов, но при этом они не обязаны поддерживать сериализацию и уметь выводить преобразованный XML-документ как последовательность байт. Конечно же, абсолютное большинство процессоров поддерживает такую возможность, но при всем том она остается не более чем возможностью.

Поэтому из соображений переносимости можно лишь только надеяться, что документ будет выведен так, как было задумано. Не следует исключать возможности, что в определённых условиях процессор не сможет контролировать процесс вывода документа.

Типичным примером такой ситуации может быть использование процессора совместно с другими компонентами, которые обмениваются с процессором документами в виде DOM-структур, но сами загружают и выводят документы. В этом примере компоненты, занимающиеся выводом преобразованного документа, могут спокойным образом игнорировать все то, что было указано в элементе

xsl:output
или в атрибутах
disable-output-escaping
других элементов преобразования. Более того, они даже не будут знать, что было там указано, поскольку эти значения не касаются процесса преобразования как такового — они относятся к выводу, контролировать который процессор в данном случае не может.

Отсюда следует однозначный вывод: не нужно чересчур злоупотреблять возможностями

xsl:output
и
disable-output-escaping
.

Замена специальных символов

Как мы уже знаем, в XML есть несколько специальных символов, которые, как правило, заменяются процессором при выводе документа на соответствующие символьные или встроенные сущности. К примеру, для того, чтобы вывод был корректным XML-документом, процессор обязан заменять символы "

<
" и "
&
" на встроенные (
&lt;
и
&amp;
) или символьные (
&#60;
и
&#38;
) сущности.

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

Пример

Пусть входящий документ содержит описание товара, заданное в секции CDATA:

<?xml version="1.0" encoding="utf-8"?>

<product>

 <title>An elephant</title>

 <description><![CDATA[This is a <em>big</em> and <b>grey</b> animal!]]></description>

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

Белые погоны

Лисина Александра
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
рейтинг книги
По осколкам твоего сердца