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

на главную

Жанры

Технология XSLT

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

Шрифт:

 <xsl:template match="/">

<xsl:copy-of select="/"/>

 </xsl:template>

</xsl:stylesheet>

Листинг 8.40. Выходящий документ

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

<A>

 <B>

<C/>

 </B>

 <C>

<B/>

 </C>

</A>

Следует

быть осторожными при использовании
indent="yes"
там, где в содержимом документа могут встречаться значащие пробелы. Индентация позволяет процессору при выводе документа добавлять пробельные символы по собственному усмотрению. В случаях, когда при последующей обработке преобразованного документа пробельные символы могут быть восприняты неадекватно, лучше индентацию не использовать.

Атрибут cdata-section-elements

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

cdata-section-elements
элемента
xsl:output
элементы, которые на выходе должны содержать секции символьных данных.

Пример
Листинг 8.41. Входящий документ

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

<page>&lt;br/&gt;<br/></page>

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

<xsl:stylesheet

 version="1.0"

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

 <xsl:output

indent="yes"

cdata-section-elements="page"/>

 <xsl:template match="/">

<xsl:copy-of select="/"/>

 </xsl:template>

</xsl:stylesheet>

Листинг 8.43. Выходящий документ

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

<page><![CDATA[<br/>]]><br/>

</page>

В соответствии с синтаксисом XML, секции CDATA не могут содержать последовательности символов "

]]>
". Потому, встретив такую комбинацию в тексте элемента, имя которого включено в
cdata-section-elements
, процессор заменит ее двумя секциями CDATA. Одна будет содержать "
]]
", вторая – "
>
".

Пример
Листинг 8.44. Входящий документ

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

<page>

 <data>]]&gt;</data>

 <pre>&lt;!-- Comment --></pre>

</page>

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

<xsl:stylesheet

 version="1.0"

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

 <xsl:output

 indent="yes"

 cdata-section-elements="data pre"/>

 <xsl:template match="/">

<xsl:copy-of select="/"/>

 </xsl:template>

</xsl:stylesheet>

Листинг 8.46. Выходящий документ

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

<page>

 <data><![CDATA[]]]]><![CDATA[>]]></data>

 <pre><![CDATA[<!-- Comment -->]]></pre>

</page>

Атрибут doctype-system

Для определения логической структуры документов в XML используются DTD — определения типов документов. В большинстве случаев определения типов содержатся во внешних ресурсах, которые включаются в документ в виде системных или публичных идентификаторов.

XSLT позволяет создавать ссылки на внешние определения типов при помощи атрибута

doctype-system
элемента
xsl:output
.

Пример

Предположим, что мы создаем документ, логическая схема которого определена во внешнем файле по адресу

"/dtds/document.dtd"
. Тогда, определив в преобразовании элемент
xsl:output
с атрибутом
doctype-system
, равным
"/dtds/document.dtd"
, мы получим в выходящем документе определение типа в виде

<!DOCTYPE элемент SYSTEM "/dtds/document.dtd">

где

элемент
— первый элемент выходящего документа.

Листинг 8.47. Входящий документ

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

<page> content </page>

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

<xsl:stylesheet

 version="1.0"

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

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

Элита элит

Злотников Роман Валерьевич
1. Элита элит
Фантастика:
боевая фантастика
8.93
рейтинг книги
Элита элит

Купеческая дочь замуж не желает

Шах Ольга
Фантастика:
фэнтези
6.89
рейтинг книги
Купеческая дочь замуж не желает

Большая игра

Ланцов Михаил Алексеевич
4. Иван Московский
Фантастика:
альтернативная история
5.00
рейтинг книги
Большая игра

Он тебя не любит(?)

Тоцка Тала
Любовные романы:
современные любовные романы
7.46
рейтинг книги
Он тебя не любит(?)

Отмороженный

Гарцевич Евгений Александрович
1. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Отмороженный

Смерть может танцевать 2

Вальтер Макс
2. Безликий
Фантастика:
героическая фантастика
альтернативная история
6.14
рейтинг книги
Смерть может танцевать 2

Я Гордый Часть 3

Машуков Тимур
3. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я Гордый Часть 3

70 Рублей

Кожевников Павел
1. 70 Рублей
Фантастика:
фэнтези
боевая фантастика
попаданцы
постапокалипсис
6.00
рейтинг книги
70 Рублей

Болотник 2

Панченко Андрей Алексеевич
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Болотник 2

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

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

Флеш Рояль

Тоцка Тала
Детективы:
триллеры
7.11
рейтинг книги
Флеш Рояль

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

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

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

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

Брачный сезон. Сирота

Свободина Виктория
Любовные романы:
любовно-фантастические романы
7.89
рейтинг книги
Брачный сезон. Сирота