Атрибут 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 выходящего документа включено не будет.
Читать дальше