</HEAD>

   .

   .

   .

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

<?xml version='1.0'?>

<xsl:stylesheet version='1.0'

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

 <xsl: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 при помощи элемента <xsl:output>, даже не прибегая к элементу <HTML>:

<?xml version='1.0'?>

<xsl:stylesheet version='1.0'

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

 <xsl:output method='html'/>

 <xsl:template match='/PLANETS'>

  <HEAD>

   <TITLE>

    The Planets Table

   </TITLE>

  </HEAD>

  .

  .

  .

Вот вывод XT в данном случае — только фрагмент HTML, никаких инструкций обработки XML:

<HEAD>

 <TITLE>

  The Planets Table

 </TITLE>

</HEAD>

.

.

.

ЭЛЕМЕНТЫ <META>, АВТОМАТИЧЕСКИ ДОБАВЛЯЕМЫЕ В HTML

Если вы явно используете элемент <xml: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. Я хочу зайти немного вперед и использовать элемент <xsl:copy>, с которым мы познакомимся в главе 3, для создания таблицы стилей, которая создает копию любого XML-документа.

Я воспользуюсь образцом совпадения «*», которому, как говорилось ранее, удовлетворяет любой элемент, и применю элемент <xsl:copy> для копирования текущего элемента в выходной документ. Вот как выглядит новая таблица стилей, копирующая исходный документ в результирующий:

<?xml version='1.0'?>

<xsl:stylesheet version='1.0'

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

 <xsl:template match='*'>

  <xsl:copy>

   <xsl:apply-templates/>

  </xsl:copy>

 </xsl:template>

</xsl:stylesheet>

Поскольку эта таблица стилей предназначена для копирования в новый документ XML любого документа XML даже документов XHTML, представляющих собой XML-документы, использующие тег <html>, — я явно указываю, что здесь методом вывода является XML. Если бы я этого не сделал, скопированные документы XHTML не начинались бы с объявления XML:

<?xml version='1.0'?>

<xsl:stylesheet version='1.0'

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

 <xsl:output method='xml'/>

 <xsl:template match='*'>

  <xsl:copy>

   <xsl:apply-templates/>

  </xsl:copy>

 </xsl:template>

</xsl:stylesheet>

В этом примере в результирующий документ копируются только элементы, но не текстовые узлы, комментарии или атрибуты. Более законченную версию этой же таблицы стилей мы рассмотрим в главе

Вы читаете XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату