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

5.3.7.4. Упрощенные преобразования

Многие простые преобразования состоят из единственного правила, которое обрабатывает корневой узел входящего документа как в следующем примере:

<xsl:stylesheet

version="l.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<result>

<!-- Шаблон -->

</result>

</xsl:template>

</xsl:stylesheet>

В XSLTможно упрощать запись таких преобразований, опуская элементыxsl:stylesheetиxsl:templateи оставляя только правило шаблона, создающий вы­ходящий документ.

Корневой элемент упрощенной записи должен содержать атрибут xsl:version, указывающий версию языка XSLT, использованного в шабло­не. Как правило, этот элемент также содержит объявление пространства имен XSLT, хотя оно может быть определено и в другом месте.

Так, приведенное выше преобразование можно записать в упрощенном виде следующим образом:

<result

xsl:version="l.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!-- Шаблон -->

</result >.

5.3.8. Создание узлов элементов и атрибутов вXslt

5.3.8.1. Элементxsl:element

Каждому элементу документа XML соответствует узел элемента. Дочерними узлами узла элемента могут быть узлы его дочерних элементов, а также узлы комментариев, инструкций по обработке и текстовые узлы, которые пред­ставляют его непосредственное содержимое. Следует отметить, что узлы атрибутов не считаются дочерними узлами своего элемента, они лишь только ассоциируются с ними.

Узлы элементов в выходя­щем документе можно создавать с помощью литеральных элементов. Однако в тех случаях, когда требуется создать элемент с заранее неизвестным (например, вычисляемым во время выполнения) именем или создать элемент, принадлежащий пространству имен, известному обрабатывающему процессору, литеральные элементы не подходят.

Для создания элемента с вычисляемым названием используется элемент xsl:element, который имеет следующий синтаксис:

<xsl:element

name="имя"

namespace="пространство-имен"

inherit-namespaces="yes" | "no"

use-attribute-sets="имена"

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

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

>

<!--

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

-->

</xsl:element>

Здесь обязательный атрибут nameуказывает имя создаваемого элемента. Этот атрибут может содержать шаблон значения, а значит, имя элемента может быть вычислено во время выполнения. Все остальные атрибуты элемента являются необязательными.

Атрибут namespaceуказываетURIпространства имен создаваемого элемента. Точно так же, как иname, этот атрибут может содержать шаблон значения, что позволяет вычислять пространство имен создаваемого элемента при помощи выражений.

В качестве значений атрибутов nameиnamespaceмогут быть использованы вычисляемые выражения, т.е. выражения, заключенные в фигурные скобки "{" и "}".

Атрибут inherit-namespacesзадает ("yes") или отменяет ("no") наследование узлов пространства имен для потомков создаваемого элемента. По умолчанию значение этого атрибута равно "yes".

Атрибут use-attribute-setsперечисляет (через пробел) имена наборов атрибутов, кото­рые должны быть включены в создаваемый элемент.

Атрибут typeзадает проверку создаваемого элемента на соответствие простому или комплексному типу, заданному в значении атрибута и определенному в схеме документа.

Атрибут validationопределяет действия по проверке действительности создаваемого элемента. Значение "strip" этого атрибута указывает, что новый элемент и все содержащиеся в нем узлы должны иметь типxs:untyped. Значение "preserve" указывает, что копируемые элементы сохраняют свой тип, а создаваемые элементы будут иметь типxs:untyped. Значение "strict" указывает, что создаваемые и копируемые элементы должны строго соответствовать своему типу, определенному в схеме документа (в случае такого несоответствия выдается сообщение об ошибке). Значение "lax" аналогично значению "strict", за исключением того, что в случае несоответствия сообщения об ошибке не выдается, а создаваемые или копируемые элементы будут иметь типxs:untyped.

Атрибуты typeиvalidationявляются взаимоисключающими, т.е. в элементе может быть задан только один из этих атрибутов.

Содержимым xsl:elementявляется конструктор последовательности, который создается процес­сором и затем включается в создаваемый элемент.

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