xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets Table
.
.
.
Однако, если удалить этот тег:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets Table
.
.
.
то такой вид вывода вы получите от процессора XT Джеймса Кларка. Обратите внимание на инструкции обработки XML в начале:
The Planets Table
.
.
.
С другой стороны, можно явно указать тип вывода HTML при помощи элемента , даже не прибегая к элементу :
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets Table
.
.
.
Вот вывод XT в данном случае — только фрагмент HTML, никаких инструкций обработки XML:
The Planets Table
.
.
.
ЭЛЕМЕНТЫ
, АВТОМАТИЧЕСКИ ДОБАВЛЯЕМЫЕ В HTML
Если вы явно используете элемент , некоторые процессоры XSLT, такие как Saxon, добавляют в элемент
выходного документа элемент подобным образом: .
В общем случае процессоры XSLT должны учитывать, что в HTML определенные элементы, такие как
, ,
и т.д., пусты. Также пробелы и другие символы в значениях атрибута URI преобразуются в соответствии со спецификацией HTML (пробел становится «%20» и т.п.), инструкции обработки завершаются символом
>
, а не
?>
, и учитывается тот факт, что отдельным атрибутам значение не присваивается.
В этом разделе я собираюсь рассмотреть пример, который подробно изучается в главе 6. Я хочу зайти немного вперед и использовать элемент , с которым мы познакомимся в главе 3, для создания таблицы стилей, которая создает копию любого XML-документа.
Я воспользуюсь образцом совпадения «*», которому, как говорилось ранее, удовлетворяет любой элемент, и применю элемент для копирования текущего элемента в выходной документ. Вот как выглядит новая таблица стилей, копирующая исходный документ в результирующий:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Поскольку эта таблица стилей предназначена для копирования в новый документ XML любого документа XML даже документов XHTML, представляющих собой XML-документы, использующие тег , — я явно указываю, что здесь методом вывода является XML. Если бы я этого не сделал, скопированные документы XHTML не начинались бы с объявления XML:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
В этом примере в результирующий документ копируются только элементы, но не текстовые узлы, комментарии или атрибуты. Более законченную версию этой же таблицы стилей мы рассмотрим в главе 4.
Помните, что XML — это метод вывода по умолчанию, если только ваш входной документ не содержит тег или . Тем не менее, даже если вы выполняете преобразование одного XML-документа в другой, зачастую удобно использовать элемент — для того, чтобы, например, задать кодировку символов (по умолчанию это обычно 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
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
{\rtf1\ansi\deff0{\fonttbl {\\fcharset0 Courier New:}}
\viewkind4\uc1\pard\langl033\b\ The Planets Table\par\b0
Name\tab Mass\tab Rad.\tab Day\par
\par
}
\tab
Читать дальше