Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Лабы / Lab4-03.doc
Скачиваний:
12
Добавлен:
12.05.2015
Размер:
596.99 Кб
Скачать

3.3.7.2. Элементxsl:copy-of

Элемент xsl:copy-ofимеет следующий синтаксис:

<xsl:copy-of

select = "выражение"

copy-namespaces="yes" | "no"

type="имя-типа"

validation="strict" | "lax" | "preserve" | "strip"

/>

Использование элемента xsl:copy-ofполностью аналогично использова­нию элементаxsl:value-ofза тем исключением, чтоxsl:copy-ofпри вы­воде значения выражения преобразует его к строке не во всех случаях. По­ведениеxsl:copy-ofзависит от того, какой тип данных возвращает выражение, заданное в обязательном атрибутеselect.

Если результат вычисления имеет булевский, числовой или строковый тип, то xsl:copy-ofвыводит его в виде текстового узла. В этом случае пове­дениеxsl:copy-ofне отличается от поведения элементаxsl:value-of.

Если результатом вычисления выражения является последовательность узлов, то xsl:copy-ofкопирует в выходящий документ все узлы в порядке просмотра документа вместе с их потомками.

Если результатом вычисления является узел документа, то он копируется в выходящий документ в неизмененном виде.

Атрибуты typeиvalidationв элементеxsl:copy-ofдействуют так же, как в элементеxsl:copy.

3.3.7.3. Элементxsl:sequence

Элемент-инструкция xsl:sequenceиспользуется в содержимом конструктора последовательности для создания последовательности узлов или атомарных значений. Этот элемент вXSLT2.0 имеет следующий синтаксис:

<xsl:sequence    select ="выражение"

/>

Атрибут selectзадает выражение, результатом вычисления которого является последовательность узлов или атомарных значений.

В отличие от многих других инструкций, элемент может возвращать последовательность уже существующих узлов, а не создавать новые узлы.

3.3.8. Условная и циклическая обработка вXslt

3.3.8.1. Элементxsl:if

Элемент xsl:ifпозволяет создавать про­стые условия типа «если, то» и имеет следующий синтаксис:

<xsl:if

test="выражение''

>

<!--

Содержимое: конструктор последовательности

-->

</xsl:if>

Выражение, содержащееся в обязательном атрибуте test, вычисляется и приводится к булевому типу. В том и только том случае, если выражение имеет значениеtrue, процессор выполняет шаблон, содержащийся вxsl:if.

Вследствие того, что атрибуты в XMLне могут содержать некоторые специ­альные символы (такие как "<" и "&"), их необходимо заменять символьны­ми сущностями. Так, инструкция

<xsl:if test="a < b"/>

будет с точки зрения синтаксиса XML некорректным. Вместо нее следует использовать эквивалентную инструкцию

<xsl:if test="a < b"/>.

3.3.8.2. Элементы xsl:choose, xsl:when и xsl:otherwise

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

Элементы xsl:choose,xsl:whenиxsl:otherwiseимеют следующий синтаксис:

<xsl:choose>

<!--

Содержимое: один или более элемент xsl:when,

необязательный элемент xsl:otherwise

-->

</xsl:choose>

<xsl:when

test="выражение"

>

<!--

Содержимое: конструктор последовательности

-->

</xsl:when>

<xsl:otherwise>

<!--

Содержимое: конструктор последовательности

-->

</xsl:otherwise>

Элемент xsl:chooseсодержит один или несколько элементовxsl:whenи необязательный элементxsl:otherwise. При обработкеxsl:chooseпроцес­сор поочередно вычисляет выражения, содержащиеся в атрибутахtestэле­ментовxsl:when, приводит их к булевскому типу и выполняет содержимое первого (и только первого) элемента, тестовое выражение которого будет равноtrue. В случае если ни одно из тестовых выражений не равно истине и вxsl:chooseприсутствуетxsl:otherwise, процессор выполнит содержимое этого элемента. Если же ни одно из тестовых выражений не равно истине и вxsl:chooseнет элементаxsl:otherwise, то ничего не создается.

Общая форма (скелет) альтернативного выбора с помощью инструкции xsl:chooseзаписывается в следующем виде:

<xsl:choose>

<xsl:when test="условие-1">

шаблон-1

</xsl:when>

<xsl:when test="условие-2">

шаблон-2

</xsl:when>

<!-- ... -->

<xsl:when test="условие-N">

шаблон-N

</xsl:when>

<xsl:otherwise>

шаблон-N+1

</xsl:otherwise>

</xsl:choose>.

Соседние файлы в папке Лабы