- •Лабораторная работа 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.3.4.3. Элементxsl:attribute-set
Для того чтобы упростить создание в элементах целых наборов атрибутов, можно заранее определить их в элементе xsl:attribute-set, который имеет следующий синтаксис:
<xsl:attribute-set
name="имя"
use-attribute-sets="имена"
>
<!--
Содержимое: элементы xsl:attribute
-->
</xsl:attribute-set>
Обязательный атрибут nameзадает имя набора атрибутов. В атрибутеuse-attribute-setsчерез пробел перечисляются имена наборов атрибутов, которые должны быть использованы в данном элементе.
Элемент xsl:attribute-setсодержит последовательность, состоящую из нуля или более элементовxsl:attribute.
Именованные наборы атрибутов можно использовать, указывая их имена в значении атрибута use-attribute-sets, который может присутствовать в элементахxsl:element,xsl:copyиxsl:attribute-set, а также в литеральных результирующих элементах.
Включение набора атрибутов в элемент равносильно простому копированию элементов xsl:attribute, определенных в соответствующих элементахxsl:attribute-set.
3.3.5. Создание текстовых узлов вXslt
Символьные данные, содержащиеся в документе, организуются в виде текстовых узлов. Последовательности символов, встречающиеся в документах, в целях экономии никогда не разбиваются на два или более текстовых узла, а текстовые узлы никогда не бывают пустыми. Содержание секций CDATAобрабатываются так, как если бы их содержимое было просто включено в документ с заменой символов "<" и "&", на сущности<и&.
Текст, содержащийся в значениях атрибутов, а также в комментариях и инструкциях по обработке не оформляется в виде текстовых узлов – эти данные в XSLTпринадлежат соответствующим узлам атрибутов, комментариев и инструкций.
Шаблон преобразования может содержать текстовые узлы, которые при выполнении шаблона после обработки пробельных символов будут попросту скопированы в результирующее дерево.
Текстовые узлы могут также быть созданы элементами xsl:textиxsl:value-of.
3.3.5.1. Элементxsl:text
Элемент xsl:textиспользуется для создания текстовых узлов, содержащих пробельные и специальные символы, и имеет следующий синтаксис:
<xsl:text>
<!--
Содержимое: символьные данные (#PCDATA)
-->
</xsl:text>
При использовании xsl:textпреобразования будут сохранять пробельные символы, находящиеся в элементеxsl:text, т.е., для того чтобы вывести в выходящий документ пробельный символ, например такой, как символ перевода строки, достаточно написать
<xsl:text> </xsl:text>.
Символьные данные, включенные в элемент xsl:text, ведут себя так же, как и литеральные данные, заданные внеxsl:text, за исключением возможности задания вxsl:textуправляющих символов типа перехода на новую строку.
3.3.5.2. Элементxsl:value-of
Элемент xsl:value-ofвыводит в выходящее дерево строковый результат вычисления выражений и имеет следующий синтаксис:.
<xsl:value-of
select="выражение"
separator="строка"
>
<!--
Содержимое: конструктор последовательности
-->
</xsl:value-of>
Необязательный атрибут selectзадает строковое значение нового текстового узла (альтернативным является задание значения нового текстового узла в конструкторе последовательности элементаxsl:value-of).
Необязательный атрибут separatorзадает символы-разделители между элементами сгенерированной последовательности при их преобразовании в результирующее строковое значение текстового узла. По умолчанию таким разделителем является одиночный пробел. Если в качестве разделителя задана пустая строка, разделителей между элементами не будет.
