Язык преобразований XSL

       

XSLT процессор может выводить конечное


<!-- Category: top-level-element -->
<xsl:output
  method = "xml" | "html" | "text" | qname-but-not-ncname
  version = nmtoken
  encoding = string
  omit-xml-declaration = "yes" | "no"
  standalone = "yes" | "no"
  doctype-public = string
  doctype-system = string
  cdata-section-elements = qnames
  indent = "yes" | "no"
  media-type = string />
XSLT процессор может выводить конечное дерево в виде последовательности байтов, хотя и не обязан иметь такую возможность (см. ). Элемент xsl:output позволяет авторам стилей указывать, каким они хотят видеть конечное дерево при выводе. Если XSLT процессор выводит на печать конечное дерево, он должен делать это так, как задано элементом xsl:output, однако сам вывод процессор выполнять не обязан.
Элемент xsl:output можно использовать только как элемент .
Атрибут method в xsl:output идентифицирует общий метод, который должен использоваться для вывода конечного дерева. Значением атрибута должно быть . Если не имеет префикса, то оно идентифицирует метод, описываемый данным документом, и должно соответствовать одному из трех названий: xml, html или text. Если имеет префикс, то такое приводится к , как описано в главе . Расширенное имя идентифицирует метод вывода. Поведение в этом случае данный документ не описывает.
По умолчанию атрибут method выбирается следующим образом. Если
корневой узел конечного дерева имеет элемент непосредственным потомком,
расширенное имя первого элемента в конечном дереве, который является непосредственным потомком корневого узла (например, элемент документа) имеет локальную часть html (в любом сочетании верхних и нижних регистров) и нулевой URI пространства имен,
все текстовые узлы, предшествующие первому элементу в конечном дереве, являющемуся непосредственным потомком корневого узла, содержат только пробельные символы,



то тогда методом вывода по умолчанию является html. В противном случае таковым является xml. Метод вывода по умолчанию должен быть использован если нет элементов xsl:output, либо ни один элемент xsl:output не определяет значения атрибута method.
Остальные атрибуты в xsl:output определяют параметры для метода вывода. Разрешается использовать следующие атрибуты:
version указывает версию метода вывода
indent указывает, может ли XSLT процессор ставить дополнительные пробелы при выводе конечного дерева, атрибут должен иметь значение yes или no
encoding указывает предпочтительную кодировку символов, которую XSLT процессор должен использовать чтобы представить последовательность символов в виде последовательности байтов. Значение атрибута должно обрабатываться независимо от используемого регистра. Значение атрибута должно состоять из символов из диапазона от #x21 до #x7E (т.е. печатных ASCII символов). Значением должно быть либо charset, зарегистрированный Internet Assigned Numbers Authority , , либо строка начинающаяся с X-
media-type определяет тип среды (тип контента MIME) для данных, полученных при выводе конечного дерева. Параметр charset не должен указываться явно. Наоборот, параметр charset должен добавляется когда типом среды на верхнем уровне является text, причем в соответствии с той кодировкой символов, которая реально используется данным методом вывода
doctype-system указывает системный идентификатор, который должен использоваться в декларации типа документа
doctype-public указывает публичный идентификатор, который должен использоваться в декларации типа документа
omit-xml-declaration указывает, должен ли XSLT процессор выводить декларацию XML, значением атрибута должно быть yes или no
standalone указывает, должен ли XSLT процессор выводить декларацию одиночного документа. Значением атрибута должно быть yes или no
cdata-section-elements определяет перечень названий элементов, чьи непосредственные потомки, являющиеся текстовыми узлами, должны печататься с помощью блоков CDATA


Детальная семантика каждого атрибута будет описана отдельно для каждого метода вывода, в котором он используется. Если семантика атрибута для метода вывода не описана, использовать ее для этого метода нельзя.
Стиль может содержать несколько элементов xsl:output, а также может включить или импортировать другие стили, также содержащие элементы xsl:output. Все элементы xsl:output, обнаруженные в стиле, объединяются в один эффективный элемент xsl:output. Для атрибута cdata-section-elements эффективное значение является объединением всех указанных значений. Для остальных атрибутов эффективным является значение, указанное с наивысшим . Если таких значений для атрибута было несколько, фиксируется ошибка. XSLT процессор может фиксировать такую ошибку. Если он этого не делает, то должен обрабатывать ошибку сам, используя то значение, которое в стиле было обнаружено последним. Значения атрибутов берутся по умолчанию после того, как были объединены элементы xsl:output, разные методы вывода по умолчанию могут иметь различные значения атрибута.

Содержание раздела