В большей части этой главы исследуются возможности элемента , с краткого обзора которого я и начну.
С элементом мы впервые познакомились в главе 2 и использовали его, главным образом, для задания типа результирующего документа. Этот тип может задать, например, будет ли процессор XSLT записывать инструкцию обработки XML, , в начале документа, а также задать тип MIME (такой, как « text/xml
» или « text/html
») документов, отправляемых процессором XSLT из web-сервера браузеру. Кроме того, если вы установите выходной тип в HTML, большинство процессоров XSLT смогут распознать, что не всем элементам HTML необходимы закрывающие или открывающие теги и т.п.
В следующем списке перечислены атрибуты :
• cdata-section-elements
(необязательный). Задает имена тех элементов, чье содержимое должно выводиться как разделы CDATA
. Принимает значения списка QName
, разделенного символами-разделителями;
• doctype-public
(необязательный). Задает открытый идентификатор, который будет использован в объявлении в выходных данных. Устанавливается в строковое значение;
• doctype-system
(необязательный). Задает системный идентификатор, который будет использован в объявлении
в выходных данных. Устанавливается в строковое значение;
• encoding
(необязательный). Задает кодировку символов. Устанавливается в строковое значение;
• indent
(необязательный). Определяет, будет ли выходной документ выровнен с отражением структуры вложенности. Устанавливается в yes
или no
;
• media-type
(необязательный). Задает тип MIME вывода. Устанавливается в строковое значение;
• method
(необязательный). Задает формат вывода. Принимает значения « xml
», « html
», « text
» или допустимое имя QName
;
• omit-xml-declaration
(необязательный). Определяет, будет ли включено в вывод объявление XML. Устанавливается в « yes
» или « no
»;
• standalone
(необязательный). Определяет, будет ли включено в вывод отдельное объявление XML, и если да — устанавливает его значение. Устанавливается в yes
или no
;
• version
(необязательный). Задает версию вывода. Принимает значение допустимого NMToken.
Чаще, всего используется атрибут method
, поскольку именно он определяет требуемый тип выходного дерева. Официально методом вывода до умолчанию является HTML, при условии, что выполняются все три следующих условия:
• корневой узел результирующего дерева имеет дочерний элемент;
• в названии элемента документа результирующего дерева присутствует часть « html
» (в любой комбинации верхнего и нижнего регистров) и пустой URI пространства имен;
• все текстовые узлы перед первым дочерним элементом корневого узла содержат только символы-разделители.
Если выполняются все три этих условия, то по умолчанию метод вывода устанавливается в HTML. В ином случае методов вывода по умолчанию является XML.
Тем не менее, не стоит полагаться на установки метода вывода по умолчанию, лучше явно присвоить этому атрибуту значение. Три распространенных значения атрибута method
— « html
», « xml
» и « text
», и мы познакомимся с ними в следующих разделах.
Для метода вывода HTML процессор XSLT должен предпринять определенные действия. Например, для этого метода атрибут version
определяет версию HTML. Значение по умолчанию — 4.0.
Этот метод не должен добавлять завершающий тег для пустых элементов. (Для HTML 4.0 пустыми элементами являются
, , ,
, , ,
, , , , , и .) Метод вывода HTML должен распознавать названия элементов HTML независимо от регистра.
В соответствии с W3C, метод вывода HTML не должен скрывать содержимое элементов или
. Например, следующий элемент буквального результата:
if (х < у) {...}
или следующий, использующий раздел CDATA:
должен быть преобразован в:
if (х < у) {...}
Метод вывода HTML не должен также подавлять символы <, встречающиеся в значениях атрибутов.
При установке метода вывода в HTML процессор может учесть атрибут выравнивания. Если этот атрибут установлен в yes
, процессор XSLT может добавить (или удалить) символы-разделители для выравнивания результирующего документа, поскольку это не влияет на отображение документа в браузере. Для метода вывода HTML значением по умолчанию является «yes».
Как вы могли предположить, метод вывода HTML завершает инструкции обработки при помощи >
, а не ?>
, а также поддерживает отдельные атрибуты, как и HTML. Например, тег
Читать дальше