- •Лабораторная работа 4-03
- •3.1.2. Пространство имен xslt
- •3.1.3. Корневые элементы и элементы верхнего уровня документаXslt
- •3.1.4. Условное включение элемента
- •3.1.5. Модульная структура преобразованийXslt
- •3.1.4. Совместное использование преобразований и документов xml
- •3.2. Управление выводом в xslt
- •3.2.1. Элементxsl:output
- •3.2.2. Метод вывода "xml"
- •3.2.3. Метод вывода "xhtml"
- •3.2.4. Метод вывода "html"
- •3.2.5. Метод вывода "text"
- •3.3.Язык xslt
- •3.3.1. Образцы и шаблоны
- •3.3.2. Объявлениешаблона
- •3.3.3. Вызов неименованных правил шаблона
- •3.3.4. Создание узлов элементов и атрибутов вXslt
- •3.3.4.1. Элемент xsl:element
- •3.3.4.2. Элементxsl:attribute
- •3.3.4.3. Элементxsl:attribute-set
- •3.3.5. Создание текстовых узлов вXslt
- •3.3.5.1. Элементxsl:text
- •3.3.5.2. Элементxsl:value-of
- •3.3.5.3. Встроенные правила шаблона
- •3.3.5.4. Обработка пробельных символов
- •3.3.6. Создание узлов документа, комментариев, инструкций по обработке и пространства имен в xslt
- •3.3.6.1. Элемент xsl:document
- •3.3.6.2. Элементxsl:result-document
- •3.3.6.3. Элементxsl:comment
- •3.3.6.4. Элемент xsl:processing-instruction
- •3.3.6.5. Элементxsl:namespace
- •3.3.7. Копирование узлов вXslt
- •3.3.7.1. Элементxsl:copy
- •3.3.7.2. Элементxsl:copy-of
- •3.3.7.3. Элементxsl:sequence
- •3.3.8. Условная и циклическая обработка вXslt
- •3.3.8.1. Элементxsl:if
- •3.3.8.2. Элементы xsl:choose, xsl:when и xsl:otherwise
- •3.3.8.3. Элементxsl:for-each
- •3.3.9. Сортировка в xslt
- •3.3.10. Нумерация в xslt
- •3.3.11. Переменные и параметры в xslt
- •3.3.11.1. Переменные в xslt
- •3.3.11.2. Вызов именованных правил шаблона
- •3.3.11.3. Параметры в xslt
- •3.4. Выполнение преобразований документов в xmlSpy
- •3.4.1. Создание документа xslt
- •3.4.2. Выполнение преобразования xslt
- •4. Порядок выполнения работы
- •Вариант 5-01
- •Вариант 5-02
- •Вариант 5-03
- •Вариант 5-04
- •Вариант 5-05
- •Вариант 5-06
- •Вариант 5-07
- •Вариант 5-08
- •Вариант 5-09
- •Вариант 5-10
- •Вариант 5-11
- •Вариант 5-12
- •Вариант 5-13
- •Вариант 5-14
- •Вариант 5-15
- •Вариант 5-16
- •Вариант 5-17
- •Вариант 5-18
- •Вариант 5-19
- •Вариант 5-20
- •Вариант 5-21
- •Вариант 5-22
- •Вариант 5-23
- •Вариант 5-24
- •Вариант 5-25
- •Вариант 5-26
- •Вариант 5-27
- •Вариант 5-28
- •Вариант 5-29
- •Вариант 5-30
- •5. Содержание отчета
- •6. Вопросы для самоконтроля
3.2.2. Метод вывода "xml"
Для того чтобы вывести результирующее дерево в виде документа XML, следует использовать в атрибуте methodэлементаxsl:outputзадать значение "xml". Ниже рассматриваются особенности задания других атрибутов для вывода документаXML.
Атрибут version
Этот атрибут определяет версию языка XML, которая должна использоваться для вывода результирующего документа ("1.0" или "1.1"). В случае если процессор не поддерживает заданную версию или задано неверное значение версии, выдается сообщение об ошибке.
Атрибут encoding
Атрибут encodingуказывает на то, какая кодировка должна использоваться для выходного документа. Набор кодировок зависит от используемого процессора, однако обязательными для реализации являются кодировкиUTF-8 иUTF-16.
Значение атрибута encodingне зависит от регистра символов, то есть значенияencoding="utf-8"иencoding="UtF-8"будут эквивалентны.
В случае если процессор не поддерживает кодировку, указанную в атрибуте encoding, процессор может либо выдать ошибку, либо использовать UTF-8 или UTF-16.
Если атрибут encodingопущен, процессор должен по умолчанию использовать UTF-8 или UTF-16. На практике большинство процессоров используют по умолчанию кодировку UTF-8. Если вывод документа содержит русский или украинский текст, следует указать соответствующую кодировку, например "Windows-1251".
При выводе содержимого выходного документа может возникнуть ситуация, когда в выходящем потоке будут находиться символы, которые невозможно будет отобразить при используемой кодировке. В этом случае непечатаемые символы должны быть заменены символьными сущностями, либо выдано сообщение об ошибке.
Атрибут indent
Если этот атрибут имеет значение "yes", процессор может добавить один или несколько пробельных символов или символов перевода строки (в зависимости от реализации). Как правило, каждый дочерний элемент помещают на новой строке, добавляя впереди два пробела на каждый уровень вложенности.
Атрибут cdata-section-elements
Этот атрибут определяет список разделенных пробелами элементов, текстовое содержимое которых должно быть выведено с использованием секций CDATA.
В соответствии с синтаксисом XML, секции CDATA не могут содержать последовательности символов "]]>". Потому, встретив такую комбинацию в тексте элемента, имя которого включено вcdata-section-elements, процессор заменит ее двумя секциями CDATA. Одна будет содержать "]]", вторая – ">".
Атрибуты doctype-system и doctype-public
Атрибут doctype-systemXSLTпозволяет создавать ссылки на внешние определения системных типов. Если этот атрибут задан, его значение выводится выходном документе в декларации<!DOCTYPE …>перед первым элементом вывода. Если же задан и атрибутdoctype-public, то декларация дополняется общедоступным идентификатором, заданным в значении атрибута. Атрибутdoctype-public, заданный без атрибута doctype-system, игнорируется.
Атрибут media-type
Атрибут media-typeпозволяет задаватьMIME-тип содержимого выходного документа. Для метода вывода"xml"значениемmedia-typeпо умолчанию является"text/xml".
Атрибут omit-xml-declaration
Если значение этого атрибута равно "yes", пролог документа XML не выводится (по умолчанию значение атрибута равно "no").
Атрибут standalone
Если значение этого атрибута равно "yes" или "no", в пролог документа XML будет включен параметрstandaloneс соответствующим значением "yes" или "no". Если же значение атрибута равно "omit" или атрибут не задан, параметрstandaloneне будет включен в пролог документа XML.
Атрибут undeclare-prefixes
В пространстве имен в соответствии со спецификацией XML 1.1 допустима ситуация когда пространство имен дочернего элемента не связано с пространством имен родительского элемента (такая ситуация задается в XML 1.1 с помощью префиксов отмены). Атрибут undeclare-prefixesзадает включение префиксов отмены в выходной документ ("yes") или отмену включения ("no") (по умолчанию значение этого атрибута равно "no").
Атрибут normalization-form
Для выполнения операций над строками, например, сравнения строк, необходимо привести строки к эквивалентному виду (так, например, в русском языке строки "ежик" и "ёжик" являются эквивалентными). В стандартеUnicodeпроцесс приведения называется нормализацией. Существует несколько форм нормализации: NFC, NFD, NFKC, NFKD, а также полная нормализация. Эти формы описаны в приложении №15 стандартаUnicode–UNICODENORMALIZATIONFORMS(Формы нормализацииUnicode) по адресу:
http://www.unicode.org/reports/tr15/tr15-25.html.
В атрибуте normalization-formможно задать одну из форм нормализации, которая будет использоваться в выходном документе. Значение этого атрибута по умолчанию равно "none", т.е. нормализация данных не производится.
Атрибут byte-order-mark
Этот атрибут определяет вывод метки порядка байт: если значение "yes", то метка порядка байт выводится, если "no", то не выводится (по умолчанию значение этого атрибута для кодировки UTF-16 равно "yes", а для остальных кодировок равно "no")
Атрибут use-character-maps
Этот атрибут задает список именованных отображений символов (character-maps).
Каждое отображение задается с помощью элемента-объявления xsl:character-map, который имеет следующий синтаксис:
<xsl:character-map
name = "имя"
use-character-maps = "имена"
>
<!--
Содержимое: элементы xsl:output-character
-->
</xsl:character-map>
Обязательный атрибут nameзадает имя отображения, которое задается в списке атрибута use-character-maps.
Соответствие между символом и заменяющей его строкой может быть задано либо во вложенных элементах xsl:output-character, либо в списке ссылок на другие элементы в необязательном атрибутеuse-character-maps.
Элемент xsl:output-characterимеет следующий синтаксис:
<xsl:output-character
character = "символ"
string = "строка"
/>
Атрибут stringзадает строку, которая в выходном документе заменит символ, заданный в атрибутеcharacter.
