Технология 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><br/><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>]]></data>
<pre><!-- 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
рейтинг книги
Я Гордый Часть 3
3. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
70 Рублей
1. 70 Рублей
Фантастика:
фэнтези
боевая фантастика
попаданцы
постапокалипсис
6.00
рейтинг книги
Болотник 2
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Измена. Жизнь заново
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Флеш Рояль
Детективы:
триллеры
7.11
рейтинг книги
Кодекс Крови. Книга Х
10. РОС: Кодекс Крови
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 11
11. Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Брачный сезон. Сирота
Любовные романы:
любовно-фантастические романы
7.89