Содержание
Элемент верхнего уровня xsl:output позволяет указать, как должно быть выведено конечное дерево. Данный элемент позволяет определить ряд особенностей, свойственных тому или иному методу вывода.
Синтаксис:
1 2 3 4 5 6 7 8 9 10 11 | <xsl:output method = "xml|html|text|другой_метод" version = "версия" encoding = "кодировка" omit-xml-declaration = "yes|no" standalone = "yes|no" doctype-public = "строка" doctype-system = "URI" cdata-section-elements = "элементы" indent = "yes|no" media-type = "строка" /> |
Атрибуты:
method– главный (но не обязательный) атрибут элемента. Он определяет, каким методом должен быть выведен конечный документ. Значением атрибута может быть любое имя, но спецификация XSL определяет только три метода вывода:xml,html,text. Другие методы вывод могут использоваться, но их поддержка зависит от xslt-процессора. Если стиль не содержит элементаxsl:outputили у этого элемента не задан атрибутmethodметод вывода выбирается по умолчанию по следующим правилам:- если корневым элементом конечного дерева является элемент
html(и ему предшествуют только пробельные символы), методом вывода по умолчанию будетhtml - в остальных случаях методом вывод по умолчанию будет
xml
- если корневым элементом конечного дерева является элемент
version– определяет версию языка конечного документаindent– определяет следует ли в конечное дерево добавлять пробельные символы для более наглядного форматирования документ. Атрибут может иметь два значения:yes– разрешает добавлять пробельные символы иno– запрещает добавлять пробельные символы. Как именно будет форматироваться конечный докумен зависит от XSLT-процессора. Как правило, дочерние элеменеты переносятся на новую строку и на каждый уровень вложенности добавляется по два пробела.encoding– определяет кодировку конечного документаmedia-type– определяет тип содержимого MIME конечного документа.doctype-system– позволяет задать системный идентификатор DTD. Его значением является URI (путь до файла) DTD-файла. В конечном документе это создаст определение такого вида:1<!DOCTYPE корневой_элемент SYSTEM "путь_до_DTD-файла">doctype-public– позволяет задать публичный идентификатор DTD. В конечном документе это создаст определение такого вида:1<!DOCTYPE корневой_элемент PUBLIC "публичный_идентификатор" "путь_до_DTD-файла">omit-xml-declaration– определяет нужно ли включать xml-декларацию в конечный документ. Атрибут может иметь два значения:yes– пропустить декларацию иno– включить декларацию в конечный документ (значение по умолчанию)standalone– определяет нужно ли выводить в xml-декларации конечного документа указание на его самостоятельность. Атрибут может иметь два значения:yes– выводить указание иno– не выводить указаниеcdata-section-elements– определяет список элементов, текстовое содержимое которых должно быть выведено с использованием секции CDATA (<![CDATA[...]]>)
Результат от использования этих атрибутов во многом зависит от выбранного метода.
Метод xml
При использовании данного метода конечный документ будет xml-документом.
Остальные атрибуты дадут следующий результат:
version– определяет версию языка XML. В настоящее время единственной поддерживаемой версией является версия1.0; ее и следует указывать. При этом значение1.0является значением по умолчанию, и если атрибут version опустить результат будет таким же. В конечном документе версия будет указана в декларации XML:1<?xml version="1.0" encoding="UTF-8"?>encoding– определяет кодировку конечного документа. Значением по умолчанию как правило выступаетutf-8. Перечень поддерживаемых кодировок зависит от xslt-процессора. В конечном документе версия будет указана в декларации XML:1<?xml version="1.0" encoding="UTF-8"?>media-type– задает медиа-тип содержимого конечного документа. По умолчанию для методаxmlэто будетtext/xml.
Метод html
При использовании этого метода конечный документ будет валидным html-документом. Метод вывода html имеет следующие ключевые особенности:
- Пустые HTML-элементы выводятся без косой черты (т.е. не
<тег/>, а<тег>). К пустым в соответствии с HTML 4.0 относятсяarea,base,basefont,br,col,frame,hr,img,input,isindex,link,metaиparam. При этом регистр этих элементов не учитывается. - Внутри элементов
scriptиstyleне производится экранирование текста, т.е. даже если исходный документ содержал<![CDATA[...]]>внутри этих элементов, в конечный документ текст включается без экранирования. Также внутри этих элементов символы относящиеся в XML к специальным (<,&и др.) не должны заменяться на символьные или встроенные сущности. - Булевы атрибуты (то есть те, которым разрешено иметь только одно значение — название самого атрибута) метод вывода html должен показывать в минимизированной форме. Например, начальный тэг, записанный в стиле какдолжен быть представлен в виде1<OPTION selected="selected">1<OPTION selected>
- В значении атрибута метод вывода
htmlне должен маскировать символ&, сразу за которым следует символ{. Например, начальный тэг, записанный в стиле какдолжен быть представлен в виде1<BODY bgcolor='&{{randomrbg}};'>1<BODY bgcolor='&{randomrbg};'> - Атрибут
encodingуказывает предпочтительную кодировку. Метод выводаhtmlсразу после начального элементаheadдолжен добавить элементmeta, указывающий реально используемую кодировку символов:12<head><meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> - По умолчанию для метода
htmlатрибутmedia-typeбудет иметь значениеtext/html. - Атрибут
versionпоказывает версию HTML. Значением по умолчанию является4.0. - Метод вывода
htmlне должен маскировать символы<в значении атрибутов. - В значении атрибутов URI метод вывода
htmlдолжен маскировать (URL-кодирование) символы, не относящиеся к набору ASCII. - Специальные символы должны заменяться на HTML-сущности.
- Инструкции обработки метод
htmlдолжен завершать символом>, а не комбинацией?>.
Метод text
Метод text выводит в конечное дерево лишь строковые значения каждого текстового узла без какого-либо экранирования.
Значением по умолчанию для атрибута media-type будет является text/plain.
Атрибут encoding указывает кодировку, которую метод вывода text должен использовать для преобразования последовательностей символов в последовательности байтов.

