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

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

Жанры

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

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

Я уже князь. Книга XIX

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

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Часовая башня

Щерба Наталья Васильевна
3. Часодеи
Фантастика:
фэнтези
9.43
рейтинг книги
Часовая башня

Измена. Право на любовь

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

Ты не мой Boy 2

Рам Янка
6. Самбисты
Любовные романы:
современные любовные романы
короткие любовные романы
5.00
рейтинг книги
Ты не мой Boy 2

Душелов. Том 2

Faded Emory
2. Внутренние демоны
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Душелов. Том 2

Хозяйка собственного поместья

Шнейдер Наталья
1. Хозяйка
Фантастика:
фэнтези
5.00
рейтинг книги
Хозяйка собственного поместья

Отморозки

Земляной Андрей Борисович
Фантастика:
научная фантастика
7.00
рейтинг книги
Отморозки

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

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

Мама из другого мира. Чужих детей не бывает

Рыжая Ехидна
Королевский приют имени графа Тадеуса Оберона
Фантастика:
фэнтези
8.79
рейтинг книги
Мама из другого мира. Чужих детей не бывает

Держать удар

Иванов Дмитрий
11. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Держать удар

Переиграть войну! Пенталогия

Рыбаков Артем Олегович
Переиграть войну!
Фантастика:
героическая фантастика
альтернативная история
8.25
рейтинг книги
Переиграть войну! Пенталогия

Надуй щеки! Том 3

Вишневский Сергей Викторович
3. Чеболь за партой
Фантастика:
попаданцы
дорама
5.00
рейтинг книги
Надуй щеки! Том 3

Последняя Арена 2

Греков Сергей
2. Последняя Арена
Фантастика:
рпг
постапокалипсис
6.00
рейтинг книги
Последняя Арена 2