Несмотря на то, что XSLT-процессоры должны лишь только преобразовывать логические модели документов, организованные в виде деревьев, многие из них имеют также возможность выдавать результат преобразования в виде последовательности символов.
Элемент
Синтаксис этого элемента приведен ниже:
<xsl:output
method = 'xml' | 'html' | 'text' | '
version = '
encoding = '
omit-xml-declaration = 'yes' | 'no'
standalone = 'yes' | 'no'
doctype-public = '
doctype-system = '
cdata-section-elements = '
indent = 'yes' | 'no'
media-type = '
Элемент верхнего уровня xsl:output
позволяет указывать, каким образом должно быть выведено результирующее дерево.
Главным атрибутом элемента xsl:output
является атрибут method
, который определяет, какой метод должен использоваться для вывода документа. Значением этого атрибута может быть любое имя, но при этом техническая рекомендация XSLT определяет только три стандартных метода вывода — 'xml'
, 'html'
и 'text'
. В том случае, если процессор поддерживает нестандартный метод вывода, его реализация полностью зависит от производителя.
Если в преобразовании не определен элемент xsl:output
или в нем не указан атрибут method
, метод преобразования выбирается по умолчанию исходя из следующих условий.
□ Если корень выходящего документа имеет дочерний элемент с локальным именем 'html
' (в любом регистре символов), которому предшествуют только пробельные символы, методом вывода по умолчанию становится 'html
'.
□ Во всех остальных случаях методом вывода по умолчанию является 'xml'
.
Для документа
<HTML>
<HEAD>
<TITLE>XSL Transformations (XSLT)</TITLE>
</HEAD>
<BODY>
<H1>XSL Transformations (XSLT)<BR/>Version 1.0</H1>
</BODY>
</HTML>
Методом вывода по умолчанию будет 'html'
, а для документа
<BODY>
<H1>XSL Transformations (XSLT)<BR/>Version 1.0</H1>
</BODY>
будет выбран метод вывода 'xml'
.
Помимо главного атрибута method
, элемент xsl:output
имеет следующие атрибуты:
□ version
(версия) — определяет версию языка выходящего документа;
□ indent
(индентация) — определяет, должен ли процессор добавлять пробельные символы для более наглядного форматирования документа;
□ encoding
(кодировка) — определяет, в какой кодировке должен быть выведен документ. Значение этого атрибута не зависит от регистра символов, то есть значения encoding='utf-8'
и encoding='UtF-8'
будут эквивалентны. В атрибуте encoding
можно использовать только печатаемые символы ASCII, то есть символы интервала от #x21
до #x7e
. Значением encoding
должно быть название набора символов, определенное в стандартах IANA (Internet Assigned Numbers Authority) или RFC2278. В противном случае, атрибут должен начинаться символами 'x-
';
□ media-type
— определяет тип содержимого MIME выходящего документа;
□ doctype-system
— определяет системный идентификатор, который должен быть использован в декларации типа документа (DTD);
□ doctype-public
— определяет публичный идентификатор, который должен быть использован в декларации типа документа (DTD);
□ omit-xml-declaration
(пропустить декларацию XML) — определяет, нужно ли включать декларацию XML в выходящий документ или нет. Значением этого атрибута должно быть либо 'yes'
(пропустить декларацию), либо 'no'
(включить декларацию в выходящий документ);
□ standalone
(самостоятельный документ) — определяет, должен ли процессор выводить указание на самостоятельность документа (standalone declaration). Значением этого атрибута может быть либо 'yes'
(выводить указание), либо 'no'
(не выводить указание на самостоятельность);
□ cdata-section-elements
— определяет список элементов, текстовое содержимое которых должно быть выведено с использованием секций CDATA.
Использование этих атрибутов зависит от того, какой из методов выбран для вывода преобразованного документа.
Метод вывода
Для того чтобы вывести результирующее дерево в виде XML-документа, следует использовать в элементе xsl:output
метод 'xml'
. Ниже мы подробно опишем, каким образом на выход должны влиять другие атрибуты этого элемента.
Этот атрибут определяет версию языка XML, которая должна использоваться для вывода результирующего документа. В случае если процессор не поддерживает указанную версию, он может либо выдать ошибку, либо использовать одну из поддерживаемых версий. На данный момент единственной действующей версией языка является версия 1.0 и потому, если в атрибуте в version
будет указано другое значение, единственным эффектом от этого будет измененный параметр version
в декларации XML.