Выбрать главу

Выбор методов вывода

Еще один важный аспект создания таблиц стилей — выбор метода вывода: XML, HTML, текст (то есть любой текстовый документ, не являющийся документом XML или HTML) и т.д. Другими словами, метод вывода (output method) определяет тип создаваемого документа. По умолчанию методом вывода является XML, хотя большинство процессоров при встрече элемента <HTML> создают документы HTML. (Некоторые процессоры действуют подобным образом, если расширение создаваемого файла документа .html.)

Этот материал подробно изложен в главе 6, но сейчас мы также кратко его рассмотрим. Если только вы полностью не уверены, что правила вывода вашего процессора XSLT по умолчанию делают именно то, что нужно, зачастую можно посоветовать явно установить тип вывода в требуемый вам вид документа при помощи элемента <xsclass="underline" output>. Выходной тип может задать, например, будет ли процессор XSLT записывать инструкцию обработки XML, <?xmclass="underline" version="1.0"?>, в начало документа, а также указать тип MIME (такой, как «text/xml» или «text/html») документов, отправляемых процессором XSLT с web-сервера браузеру. Кроме того, если вы установите тип вывода в HTML, большинство процессоров XSLT распознают, что не всем элементам в HTML требуются закрывающие и открывающие теги, и т.д.

Преобразованию из XML в другие типы документов посвящена глава 6, но здесь мы также кратко рассмотрим элемент <xsclass="underline" output>, поскольку это важно для общего понимания работы таблиц стилей. В следующем списке перечислены атрибуты <xsclass="underline" output>:

• cdata-section-elements (необязательный). Задает названия тех элементов, чье содержимое вы хотите вывести в виде разделов CDATA. Принимает значение списка QName, разделенных символами-разделителями;

• doctype-public (необязательный). Определяет открытый идентификатор, который будет использоваться в объявлении <!DOCTYPE> вывода. Устанавливается в строковое значение;

• doctype-system (необязательный). Определяет системный идентификатор, который будет использоваться в объявлении <!DOCTYPE> вывода;

• encoding (необязательный). Определяет кодировку символов. Устанавливается в строковое значение;

• indent (необязательный). Определяет, будет ли вывод выровнен с отображением структуры вложенности. Устанавливается в «yes» или «no»;

• media-type (необязательный). Определяет тип MIME вывода. Устанавливается в строковое значение;

• method (необязательный). Определяет формат вывода. Устанавливается в «xml», «html», «text» или допустимое имя типа QName;

• omit-xml-declaration (необязательный). Определяет, будет ли включено в вывод объявление XML. Устанавливается в «yes» или «по»;

• standalone (необязательный). Определяет, будет ли включено в вывод отдельное объявление, и если да — устанавливает его значение. Устанавливается в «yes» или «по»;

• version (необязательный). Задает версию вывода. Устанавливается в допустимую лексему типа NMToken.

Чаще всего используется атрибут method элемента, потому что с его помощью устанавливается требуемый тип дерева вывода. Самые распространенные значения — «html», «xml» и «text».

Метод вывода: HTML

В нашей таблице стилей planets.xsl элемент <xsclass="underline" output> не используется; это значит, что для этой таблицы я полагался на правила вывода по умолчанию. Типом вывода по умолчанию является XML, если только процессор XSLT не встретит тег <HTML> или <html>. (Заметьте, что это не формальное требование, а только соглашение, которому не обязаны следовать все процессоры XSLT.) В planets.xsl я использовал тег <HTML> следующим образом:

<?xml version="1.0"?>

<xsclass="underline" stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsclass="underline" template match="/PLANETS">

  <HTML>

   <HEAD>

    <TITLE>

     The Planets Table

    </TITLE>

   </HEAD>

   .

   .

   .

Однако, если удалить этот тег:

<?xml version="1.0"?>

<xsclass="underline" stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsclass="underline" template match="/PLANETS">

  <HEAD>

   <TITLE>

    The Planets Table

   </TITLE>

  </HEAD>

  .

  .

  .

то такой вид вывода вы получите от процессора XT Джеймса Кларка. Обратите внимание на инструкции обработки XML в начале:

<?xml version="1.0" encoding="utf-8"?>

 <HEAD>

  <TITLE>

   The Planets Table

  </TITLE>

 </HEAD>

 .

 .

 .

С другой стороны, можно явно указать тип вывода HTML при помощи элемента <xsclass="underline" output>, даже не прибегая к элементу <HTML>:

<?xml version="1.0"?>

<xsclass="underline" stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">