(версия) — определяет версию языка выходящего документа;
□
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"
Для того чтобы вывести результирующее дерево в виде XML-документа, следует использовать в элементе
xsl:output
метод
"xml"
. Ниже мы подробно опишем, каким образом на выход должны влиять другие атрибуты этого элемента.
Атрибут version
Этот атрибут определяет версию языка XML, которая должна
использоваться для вывода результирующего документа. В случае если процессор не поддерживает указанную версию, он может либо выдать ошибку, либо использовать одну из поддерживаемых версий. На данный момент единственной действующей версией языка является версия 1.0 и потому, если в атрибуте в
version
будет указано другое значение, единственным эффектом от этого будет измененный параметр
version
в декларации XML.
Пример
Предположим, что в преобразовании версия выходящего документа задана как 1.2:
<xsl:output method="xml" version="1.2"/>
Тогда процессор может вывести декларацию XML в следующем виде:
<?xml version="1.2" encoding="utf-8"?>
Значением атрибута version по умолчанию является
"1.0"
, то есть, для того, чтобы получить декларацию XML вида
<?xml version="1.0" и т. д. ?>
достаточно опустить определение атрибута
version
:
<xsl:output method="xml"/>
Атрибут encoding
Атрибут
encoding
указывает на то, какая кодировка предпочтительна для выходящего документа. Множество кодировок зависит от используемого процессора, но при этом в соответствии с технической рекомендацией все они обязаны поддерживать Unicode-формы кодировок UTF-8 и UTF-16.
В случае если процессор не поддерживает кодировку, указанную в атрибуте
encoding
, процессор может либо выдать ошибку, либо использовать UTF-8 или UTF-16.
Если атрибут
encoding
опущен, процессор должен по умолчанию использовать UTF-8 или UTF-16. На практике абсолютное большинство процессоров используют по умолчанию кодировку UTF-8.
При выводе содержимого выходящего документа может возникнуть ситуация, когда в выходящем потоке будут находиться символы, которые невозможно будет отобразить при используемой кодировке. В этом случае непечатаемые символы должны быть заменены символьными сущностями.
Пример
Представим себе входящий документ в кодировке UTF-8, содержащий символ кириллицы "
Э
" с Unicode-кодом
#x42d
(или
#1069
в десятичной системе счисления):
<?xml version="1.0" encoding="utf-8"?>
<page>Э</page>
Если преобразование будет использовать для вывода кодировку, которая не может отображать символы кириллического алфавита, например ISO-8859-1, то символ "
Э
" в выходящем документе должен быть заменен символьной сущностью.