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

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

Жанры

Технология 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>

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

Мужчина не моей мечты

Ардова Алиса
1. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.30
рейтинг книги
Мужчина не моей мечты

Идеальный мир для Демонолога 7

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

Эволюционер из трущоб. Том 7

Панарин Антон
7. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 7

Бестужев. Служба Государевой Безопасности

Измайлов Сергей
1. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности

Имя нам Легион. Том 12

Дорничев Дмитрий
12. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 12

Потомок бога 3

Решетов Евгений Валерьевич
3. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Потомок бога 3

Система компиляции

Демидов Джон
1. Система компиляции
Фантастика:
героическая фантастика
рпг
5.00
рейтинг книги
Система компиляции

Кодекс Крови. Книга ХI

Борзых М.
11. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХI

Тринадцатый IV

NikL
4. Видящий смерть
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Тринадцатый IV

Локки 6. Потомок бога

Решетов Евгений Валерьевич
6. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Локки 6. Потомок бога

Жена неверного маршала, или Пиццерия попаданки

Удалова Юлия
Любовные романы:
любовно-фантастические романы
4.25
рейтинг книги
Жена неверного маршала, или Пиццерия попаданки

Я снова не князь! Книга XVII

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

Ну привет, заучка...

Зайцева Мария
Любовные романы:
эро литература
короткие любовные романы
8.30
рейтинг книги
Ну привет, заучка...

Чужое наследие

Кораблев Родион
3. Другая сторона
Фантастика:
боевая фантастика
8.47
рейтинг книги
Чужое наследие