output XSLT

Оператор output

Оператор output — он отвечает за формирование выходного потока. Т.е. он объясняет процессору, что надо сделать на выходе.

Поскольку этот оператор настраивает все преобразование глобально, он используется не в шаблонах xsl, а находится на уровне самой таблицы преобразования. Обычно это идет один из самых первых операторов (в файле таблицы преобразования).

Разберем атрибуты оператора output, которые управляют выходом:

<xsl:output method="xsml|html|text|name"
   version="string"
   encoding="string"
   omit-xml-declaration="yes|no"
   standalone="yes|no"
   doctype-public="string"
   doctype-system="string"
   cdata-section-elements="namelist"
   indent="yes|no"
   media-type="string"/>
  • method — главный атрибут, показывает, что должен сделать процессор. Стандартные процессоры поддерживают 3 метода: xml, html, text. Но встречаются экзотические процессоры, которые могут расширять этот набор (например, метод pdf — на выход дает файл pdf). Метод text — выдает на выходе только текстовые узлы, все теги убираются.
  • version — имеет смысл только при методе xml. Показывает текущую версию xml. Например, xml version=»1.0″
  • encoding — кодировка выходного потока. Почти все xml парсеры работают с любой кодировкой, т.е. прочитать входной документ в любой кодировке сможет любой парсер. Но не все парсеры смогут перекодировать выход в нужную кодировку. Дело в том, что в xml в DOM парсере понятия ‘кодировки’ нет. Любой парсер работает внутри себя на какой-то своей кодировке, всегда на одной (например, парсер php работает на кодировке utf-8, ms sql — на utf-16). В итоге, какую бы мы не указывали кодировку парсеру, он сначала перекодирует входной документ в себя и построит dom модель.
  • omit-xml-declaration — подавляет вывод xml декларации. Смысл имеется только в том случае, если вы выводите метод xml.
  • standalone — документ самодостаточный или нет.
  • doctype-public, doctype-system — позволяет при необходимости в xml и html сделать ссылку на DTD. В документе прописывается в начале: ‘!Doctype html Public’.
  • cdata-section-elements. Иногда в процессе преобразования документа может показаться, что в какие-то теги попали запрещенные символы. Для перестраховки в этом элементе мы указываем те теги выходного файла, в которых могут быть запрещенные символы. Данный метод работает только в xml документе.
  • indent — делать отступы в выходном потоке или все писать в одну строчку.
  • media-type — предназначен для браузеров, показывает какого-типа контент формируется. Этот метод сейчас почти не используется.

Формирование различных выходных файлов

Рассмотрим стандартные настройки для формировании выходного файла форматов — text, xml, html.

Простой текст:

<xsl:output method="text" encoding="utf-8"/>

Html файл:

<xsl:output method="html"
   doctype-public="-//W3C//DTD HTML 4.01//EN"
   doctype-system="http://www.w3.org/TR/html4/strict.dtd"
   indent="yes"/>

XML файл:

<xsl:output method="xml"
   doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
   doctype-system="http://www.w3.org/1999/xhtml"
   indent="yes">



Добавить комментарий

Ваш e-mail не будет опубликован.