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

5.3.8.2. Элементxsl:attribute

Атрибутам того или иного элемента соответствуют узлы атрибутов. Считает­ся, что узел элемента является родителем узла своего атрибута, но вместе с тем узел атрибута не является дочерним узлом узла его элемента. Такая си­туация отличает дерево документа в XSLTот дере­ва вDOM– отношение между элементом и атрибутом не является отношением наследования, а отношением ассоциации. Говорят, что узел атрибу­та ассоциируется с узлом элемента.

Узел атрибута задается конструкцией вида:

<xsl:attribute

name="имя"

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

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

separator?="строка"

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

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

>

<!--

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

-->

</xsl:attribute>

Использование элементов xsl:attributeиxsl:elementво многом аналогично. Обязательный атрибутnameзадает имя атрибута, а все остальные атрибуты также являются необязательными.

Атрибут namespaceзадаетURIпространства имен создаваемого атрибута.

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

Атрибут separatorзадает символы-разделители между элементами сгенерированной последовательности при их преобразовании в результирующее строковое значение. По умолчанию таким разделителем является одиночный пробел. Если в качестве разделителя задана пустая строка, разделителей между элементами не будет.

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

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

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

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

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

Использование элемента xsl:attributeимеет следующие основные особенности:

  • атрибуты могут создаваться только в узлах элементов (если атрибут соз­дается в узле, который не является узлом элемента, процессор может ли­бо выдать ошибку, либо проигнорировать создаваемый атрибут);

  • атрибуты могут содержать только текстовые узлы (процессор может либо выдать ошибку, либо проигнорировать нетекстовые узлы);

  • узлы атрибутов должны быть первыми узлами, которые создаются в эле­ментах (XSLT не разрешает создавать атрибуты после того, как в элемент включены дочерние узлы других типов);

  • элемент не может использоваться для генерации объявлений пространств имен;

  • элемент не может создавать атрибуты, имена которых имеют префикс xmlns;

  • в случае, когда документ преобразуется в другой документ XML, симво­лы перевода строки в элементе заменяются символьными сущностями.

Элемент xsl:attributeможет быть использован в содержимом любого из следующих родителей:

  • литерального элемента результата;

  • элемента xsl:element;

  • элемента xsl:copyв случае, если текущий, копируемый узел является элементом;

  • элемента xsl:attribute-setв случае определения именованного набора атрибутов.

Элемент xsl:attributeобычно используется, если:

  • требуется создать атрибут с не известным заранее именем или простран­ством имен;

  • требуется создать атрибут в пространстве имен, которое является для процессора значащим (например, в пространстве имен XSLT);

  • требуется создать атрибут, вычисление значения которого не может быть реализовано одним или несколькими выражениями XPath(например, ус­ловный вывод атрибута).

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