Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Турчин Д.Е. - Архитектура ИС. Практикум 2014 (И...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.42 Mб
Скачать

Принятие решений и сортировка данных.

В XSLT существует возможность управления преобразованием в зависимости от значения данных. Эта возможность обеспечивается такими элементами, как xsl:if, xsl:choose, xsl:for-each, xsl:sort и др.

При помощи элемента xsl:if осуществляется проверка условия и принимаются действия на основе результата проверки. Элемент xsl:if имеет один обязательный атрибут test, который устанавливает логическое выражение.

Элемент xsl:if во многом похож на оператор if-then, применяемый во многих языках программирования. В отличие от if-then элемент xsl:if не имеет инструкции else, которая выполняется при ложности условия в if.

Внутри элемента xsl:if помещается тело шаблона. Если логическое выражение истинно, то тело шаблона используется, если ложно – игнорируется.

Для задания альтернативных ветвей выполнения XSLT служит элемент xsl:choose, который не имеет атрибутов. Элемент xsl:choose похож на оператор switch, используемый в языках Java и C#.

Элемент xsl:choose должен содержать один или более дочерних элементов xsl:when, имеющих обязательный атрибут test и может содержать единственный элемент xsl:otherwise, который в случае применения должен стоять последним.

Элемент xsl:for-each позволяет применять тело шаблона в цикле для всех выбранных узлов. Данный элемент имеет единственный обязательный атрибут select, который принимает выражение XPath.

При помощи элемента xsl:sort можно сортировать узлы. Этот элемент устанавливает порядок обработки узлов для xsl:apply-templates и xsl:for-each и должен располагаться внутри них. Элемент xsl:sort является пустым.

Необязательными атрибутами элемента xsl:sort являются:

  • select – принимает выражение XPath, возвращающее набор узлов для сортировки;

  • order – задаёт порядок сортировки; принимает значение «ascending» (по возрастанию – значение по умолчанию) или «descending» (по убыванию);

  • data-type – определяет, будет ли сортировка вестись в алфавитном или числовом порядке; принимает значение «text» (текст – по умолчанию) или «number» (число).

Выбор методов вывода. Связывание xml-документа с таблицей стилей xslt.

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

  • method – задаёт формат вывода; принимает значения «xml», «html», «text»;

  • indent – определяет будет ли выходной документ выровнен с отражением структуры вложенности; может принимать значения «no» (по умолчанию) или «yes»;

  • encoding – задаёт кодировку символов;

  • version – задаёт версию выходного документа.

Официально методом вывода по умолчанию является HTML, при условии, что выполняются следующие требования:

  • корневой элемент документа имеет дочерний элемент;

  • в названии корневого элемента присутствует «html» в любой комбинации верхнего и нижнего регистров.

Если указанные требования не выполняются, то методом вывода по умолчанию является XML.

Для связывания XML-документа и документа XSLT используется инструкция обработки <?xsl:stylesheet?>, которая записывается в прологе XML-документа и указывает процессору XSLT, какую таблицу применить к данному документу.

Инструкция <?xsl:stylesheet?> имеет следующие обязательные атрибуты:

href – URI документа XSLT;

type – тип MIME документа XSLT; обычно «text/xml» или «application/xml».

К необязательным атрибутам <?xsl:stylesheet?> инструкции относятся:

title – устанавливает заголовок, позволяющий различать различные инструкции <?xsl:stylesheet?>;

charset – устанавливает кодировку символов;

media – описывает средства вывода (например, «print» или «aural»);

alternate – принимает значение «yes», либо «no».

Связывание файла преобразования transform.xslt с документом XML может иметь следующий вид:

<?xml version="1.0" encoding="utf-8"?>

<?xml-stylesheet type="text/xsl" href="stylesheet.xslt"?>

<root>

<!-- ... -->

</root>