<xsclass="underline" output method="html"/>
<xsclass="underline" template match="/PLANETS">
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
.
.
.
Вот вывод XT в данном случае — только фрагмент HTML, никаких инструкций обработки XML:
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
.
.
.
ЭЛЕМЕНТЫ <META>, АВТОМАТИЧЕСКИ ДОБАВЛЯЕМЫЕ В HTML
Если вы явно используете элемент <xmclass="underline" output method="html"/>, некоторые процессоры XSLT, такие как Saxon, добавляют в элемент <head> выходного документа элемент <meta> подобным образом: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">.
В общем случае процессоры XSLT должны учитывать, что в HTML определенные элементы, такие как <br>, <img>, <frame> и т.д., пусты. Также пробелы и другие символы в значениях атрибута URI преобразуются в соответствии со спецификацией HTML (пробел становится «%20» и т.п.), инструкции обработки завершаются символом >, а не ?>, и учитывается тот факт, что отдельным атрибутам значение не присваивается.
Метод вывода: XML
В этом разделе я собираюсь рассмотреть пример, который подробно изучается в главе 6. Я хочу зайти немного вперед и использовать элемент <xsclass="underline" copy>, с которым мы познакомимся в главе 3, для создания таблицы стилей, которая создает копию любого XML-документа.
Я воспользуюсь образцом совпадения «*», которому, как говорилось ранее, удовлетворяет любой элемент, и применю элемент <xsclass="underline" copy> для копирования текущего элемента в выходной документ. Вот как выглядит новая таблица стилей, копирующая исходный документ в результирующий:
<?xml version="1.0"?>
<xsclass="underline" stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsclass="underline" template match="*">
<xsclass="underline" copy>
<xsclass="underline" apply-templates/>
</xsclass="underline" copy>
</xsclass="underline" template>
</xsclass="underline" stylesheet>
Поскольку эта таблица стилей предназначена для копирования в новый документ XML любого документа XML даже документов XHTML, представляющих собой XML-документы, использующие тег <html>, — я явно указываю, что здесь методом вывода является XML. Если бы я этого не сделал, скопированные документы XHTML не начинались бы с объявления XML:
<?xml version="1.0"?>
<xsclass="underline" stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsclass="underline" output method="xml"/>
<xsclass="underline" template match="*">
<xsclass="underline" copy>
<xsclass="underline" apply-templates/>
</xsclass="underline" copy>
</xsclass="underline" template>
</xsclass="underline" stylesheet>
В этом примере в результирующий документ копируются только элементы, но не текстовые узлы, комментарии или атрибуты. Более законченную версию этой же таблицы стилей мы рассмотрим в главе 4.
Помните, что XML — это метод вывода по умолчанию, если только ваш входной документ не содержит тег <HTML> или <html>. Тем не менее, даже если вы выполняете преобразование одного XML-документа в другой, зачастую удобно использовать элемент <xsclass="underline" output> — для того, чтобы, например, задать кодировку символов (по умолчанию это обычно UTF-8, восьмибитовое подмножество Unicode) или выравнивание выходного документа (это описывается в главе 3).
РАБОТА С ФРАГМЕНТАМИ XML
Можно работать не только с документами XML целиком, но и с их фрагментами. В этом случае следует установить атрибут omit-xml-declaration в «yes» — для того, чтобы опустить объявление XML в начале дерева вывода, как обсуждается в главе 6.
Когда вы используете метод вывода XML, дерево вывода представляет собой хорошо сформированный XML (однако он не обязан быть допустимым). Не обязательно оно должно быть хорошо сформированным XML-документом, это может быть общая разобранная внешняя сущность XML. Содержимое вывода может включать символьные данные, разделы CDATA, ссылки на сущности, инструкции обработки, комментарии и элементы. Вывод должен также удовлетворять объявлению пространств имен XML.
Метод вывода: текст
Метод текстового вывода предназначен не только для создания простого текста: он применяется для любого основанного на тексте формата, не являющегося XML или HTML. Например, с его помощью можно создавать документы в формате RTF (Rich Text Format). В этом формате для задания форматирования документов используются встроенные текстовые коды — их можно поместить в документы самостоятельно при помощи метода текстового вывода.
В листинге 2.6 приведен пример таблицы стилей (которую мы увидим в главе 6), преобразующей planets.xml в planets.rtf.
Листинг 2.6. Таблица стилей RTF<?xml version="1.0"?>
<xsclass="underline" stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsclass="underline" output method="text"/>
<xsclass="underline" strip-space elements="*"/>
<xsclass="underline" template match="/PLANETS">{\rtf1\ansi\deff0{\fonttbl {\\fcharset0 Courier New:}}