Speak.Me Учить иностранные слова

XSL: вывод (xsl:output)

Элемент верхнего уровня xsl:output позволяет указать, как должно быть выведено конечное дерево. Данный элемент позволяет определить ряд особенностей, свойственных тому или иному методу вывода.

Синтаксис:

Атрибуты:

  • method – главный (но не обязательный) атрибут элемента. Он определяет, каким методом должен быть выведен конечный документ. Значением атрибута может быть любое имя, но спецификация XSL определяет только три метода вывода: xmlhtmltext. Другие методы вывод могут использоваться, но их поддержка зависит от xslt-процессора. Если стиль не содержит элемента xsl:output или у этого элемента не задан атрибут method метод вывода выбирается по умолчанию по следующим правилам:
    • если корневым элементом конечного дерева является элемент html (и ему предшествуют только пробельные символы), методом вывода по умолчанию будет html
    • в остальных случаях методом вывод по умолчанию будет xml
  • version – определяет версию языка конечного документа
  • indent – определяет следует ли в конечное дерево добавлять пробельные символы для более наглядного форматирования документ. Атрибут может иметь два значения: yes – разрешает добавлять пробельные символы и no – запрещает добавлять пробельные символы. Как именно будет форматироваться конечный докумен зависит от XSLT-процессора. Как правило, дочерние элеменеты переносятся на новую строку и на каждый уровень вложенности добавляется по два пробела.
  • encoding – определяет кодировку конечного документа
  • media-type – определяет тип содержимого MIME конечного документа.
  • doctype-system – позволяет задать системный идентификатор DTD. Его значением является URI (путь до файла) DTD-файла.  В конечном документе это создаст определение такого вида:
  • doctype-public – позволяет задать публичный идентификатор DTD. В конечном документе это создаст определение такого вида:
  • omit-xml-declaration – определяет нужно ли включать xml-декларацию в конечный документ. Атрибут может иметь два значения: yes – пропустить декларацию и no – включить декларацию в конечный документ (значение по умолчанию)
  • standalone – определяет нужно ли выводить в xml-декларации конечного документа указание на его самостоятельность. Атрибут может иметь два значения: yes – выводить указание и no – не выводить указание
  • cdata-section-elements – определяет список элементов, текстовое содержимое которых должно быть выведено с использованием секции CDATA (<![CDATA[...]]>)

Результат от использования этих атрибутов во многом зависит от выбранного метода.

Метод xml

При использовании данного метода конечный документ будет xml-документом.

Остальные атрибуты дадут следующий результат:

  • version – определяет версию языка XML. В настоящее время единственной поддерживаемой версией является версия 1.0; ее и следует указывать. При этом значение 1.0 является значением по умолчанию, и если атрибут version опустить результат будет таким же. В конечном документе версия будет указана в декларации XML:
  • encoding – определяет кодировку конечного документа. Значением по умолчанию как правило выступает utf-8. Перечень поддерживаемых кодировок зависит от xslt-процессора. В конечном документе версия будет указана в декларации XML:
  • media-type – задает медиа-тип содержимого конечного документа. По умолчанию для метода xml это будет text/xml.

Метод html

При использовании этого метода конечный документ будет валидным html-документом. Метод вывода html имеет следующие ключевые особенности:

  • Пустые HTML-элементы выводятся без косой черты (т.е. не <тег/>, а <тег>). К пустым в соответствии с HTML 4.0 относятся area, base, basefont, br, col, frame, hr, img, input, isindex, link, meta и param. При этом регистр этих элементов не учитывается.
  • Внутри элементов script и style не производится экранирование текста, т.е. даже если исходный документ содержал <![CDATA[...]]> внутри этих элементов, в конечный документ  текст включается без экранирования. Также внутри этих элементов символы относящиеся в XML к специальным (<, & и др.) не должны заменяться на символьные или встроенные сущности.
  • Булевы атрибуты (то есть те, которым разрешено иметь только одно значение — название самого атрибута) метод вывода html должен показывать в минимизированной форме. Например, начальный тэг, записанный в стиле как
    должен быть представлен в виде
  • В значении атрибута метод вывода html не должен маскировать символ &, сразу за которым следует символ {.  Например, начальный тэг, записанный в стиле как
    должен быть представлен в виде
  • Атрибут encoding указывает предпочтительную кодировку. Метод вывода html сразу после начального элемента head должен добавить элемент meta, указывающий реально используемую кодировку символов:
  • По умолчанию для метода html атрибут media-type будет иметь значение text/html.
  • Атрибут version показывает версию HTML. Значением по умолчанию является 4.0.
  • Метод вывода html не должен маскировать символы < в значении атрибутов.
  • В значении атрибутов URI метод вывода html должен маскировать (URL-кодирование) символы, не относящиеся к набору ASCII.
  • Специальные символы должны заменяться на HTML-сущности.
  • Инструкции обработки метод html должен завершать символом >, а не комбинацией ?>.

Метод text

Метод text выводит в конечное дерево лишь строковые значения каждого текстового узла без какого-либо экранирования.

Значением по умолчанию для атрибута media-type будет является text/plain.

Атрибут encoding указывает кодировку, которую метод вывода text должен использовать для преобразования последовательностей символов в последовательности байтов.