Атрибут cdata-section-elements
Для того чтобы вывести текстовое содержимое некоторых элементов в виде секций CDATA, XSLT предлагает простой механизм — следует лишь перечислить в атрибуте cdata-section-elements
элемента xsl:output
элементы, которые на выходе должны содержать секции символьных данных.
Пример
Листинг 8.41. Входящий документ
Листинг 8.42. Преобразование
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
indent="yes"
cdata-section-elements="page"/>
Листинг 8.43. Выходящий документ
]]>
В соответствии с синтаксисом XML, секции CDATA не могут содержать последовательности символов " ]]>
". Потому, встретив такую комбинацию в тексте элемента, имя которого включено в cdata-section-elements
, процессор заменит ее двумя секциями CDATA. Одна будет содержать " ]]
", вторая – " >
".
Пример
Листинг 8.44. Входящий документ
]]>
Листинг 8.45. Преобразование
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
indent="yes"
cdata-section-elements="data pre"/>
Листинг 8.46. Выходящий документ
]]>
]]>
Атрибут doctype-system
Для определения логической структуры документов в XML используются DTD — определения типов документов. В большинстве случаев определения типов содержатся во внешних ресурсах, которые включаются в документ в виде системных или публичных идентификаторов.
XSLT позволяет создавать ссылки на внешние определения типов при помощи атрибута doctype-system
элемента xsl:output
.
Пример
Предположим, что мы создаем документ, логическая схема которого определена во внешнем файле по адресу "/dtds/document.dtd"
. Тогда, определив в преобразовании элемент xsl:output
с атрибутом doctype-system
, равным "/dtds/document.dtd"
, мы получим в выходящем документе определение типа в виде
элемент SYSTEM "/dtds/document.dtd">
где элемент
— первый элемент выходящего документа.
Листинг 8.47. Входящий документ
content
Листинг 8.48. Преобразование
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Листинг 8.49. Выходящий документ
content
Атрибут doctype-public
Если в преобразовании атрибутом doctype-system
элемента xsl:output
задано внешнее определение логического типа документа, это определение может быть расширено также и публичным идентификатором. Публичный идентификатор указывается в атрибуте doctype-public
элемента xsl:output
. Его использование может быть продемонстрировано следующим примером.
Листинг 8.50. Входящий документ
content
Листинг 8.51. Преобразование
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
doctype-system="/dtds/document.dtd"
doctype-public="-//Document//Description" />
Листинг 8.52. Выходящий документ
PUBLIC "-//Document//Description" "/dtds/document.dtd">
content
Атрибут media-type
Атрибут media-type
позволяет задавать медиа-тип содержимого выходящего документа. Для метода вывода "xml"
значением media-type
по умолчанию является "text/xml"
. Несмотря на то, что media-type
не оказывает никакого влияния на содержимое самого документа, XSLT-процессоры, используемые на стороне сервера, могут в зависимости от значения этого атрибута изменять MIME-тип исходящих данных при использовании, к примеру, такого протокола, как HTTP.
Атрибут omit-xml-declaration
XML-документы, в принципе, могут быть корректными и без декларации XML. Поэтому XSLT позволяет опускать эту декларацию в выходящем документе, для чего значению атрибута omit-xml-declaration
должно быть присвоено "yes"
:
omit-xml-declaration="yes"/>
В случае если значение атрибута omit-xml-declaration
опущено или не равно "yes"
, процессор будет выводить в выходящем документе декларацию XML, которая включает информацию о версии (по умолчанию "1.0"
) и кодировке документа (по умолчанию "utf-8"
или "utf-16"
в зависимости от процессора).
Атрибут standalone
Для того чтобы объявить документ как самостоятельный или несамостоятельный (standalone или non-standalone соответственно), следует использовать атрибут standalone
элемента xsl:output
. Если этот атрибут будет присутствовать в xsl:output
, то процессор включит в декларацию XML объявление standalone
с соответствующим значением. Если атрибут standalone
не указан, объявление standalone
в декларацию XML выходящего документа включено не будет.
Читать дальше