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

5.3.10.4. Элемент xsl:processing-instruction

Элемент xsl:processing-instructionсоздает в результирующем дереве узел инструкции по обработке и имеет следующий синтаксис:

<xsl:processing-instruction

name="имя"

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

>

<!--

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

-->

</xsl:processing-instruction>

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

Необязательный атрибут selectзадает строковое значение новой инструкции по обработке (альтернативным является задание строкового значения новой инструкции по обработке в конструкторе последовательности элементаxsl:processing-instruction).

Инструкция по обработке не может содержать последовательности символов "?>".

Если результат выполнения шаблона содержит такую комбинацию, процессор может либо выдать ошибку, либо разделить символы "?" и ">" пробелом: "? >".

Имя инструкции по обработке, должно быть корректным именем XML (но не равным при этом "xml" в любом регистре символов).

Пример создания инструкции по обработке:

Элемент:

<xsl:processing-instruction name="servlet">

<xsl:text>links="follow"</xsl:text>

</xsl:processing-instruction>

создаст в выходном документе XMLследующую инструкцию по обработке:

<?servlet links="follow"?>.

5.3.10.5. Элементxsl:namespace

Узел пространства имен создается с помощью следующей инструкции:

<xsl:namespace

name="имя"

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

>

<!--

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

-->

</xsl:namespace>

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

Необязательный атрибут selectзадает строковое значение нового пространства имен (альтернативным является задание строкового значения нового пространства имен в конструкторе последовательности элементаxsl:namespace).

5.3.11. Копирование узлов вXslt

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

5.3.11.1. Элементxsl:copy

Элемент xsl:copyсоздает копию текущего узла вне зависимости от его ти­па. Вместе с текущим узлом в выходящее дерево копируются только узлы пространств имен, ассоциированные с ним. Дочерние узлы и узлы атрибу­тов в выходящий документ не копируются.

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

<xsl:copy

copy-namespaces="yes" | "no"

inherit-namespaces="yes" | "no"

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

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

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

>

<!--

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

-->

</xsl:copy>

Если xsl:copyиспользуется для копирования корневого узла или узла эле­мента, в выходящем документе процессор создает дочерний фрагмент дере­ва, являющийся результатом конструктора последовательности, содержащегося вxsl:copy. Все атрибуты этого элемента являются необязательными.

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

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

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

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

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

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

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

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