Элемент <xsl:attribute-set>

Определяет именованный набор атрибутов.

<xsl:attribute-set
  name = QName
  use-attribute-sets = QNames
</xsl:attribute-set>

Атрибуты

  • имя
    Обязательный. Имя Полные имена (XSLT) набора атрибутов. В качестве значения атрибуту name присваивается полное имя.

  • use-attribute-sets
    Разделенный пробелами список наборов атрибутов, как указано в имени Полные имена (XSLT). Указание этого атрибута объявляет каждый атрибут в каждом перечисленном наборе атрибутов.

Сведения об элементе

Количество вхождений

Без ограничений

Родительские элементы

xsl:stylesheet, xsl:transform

Дочерние элементы

xsl:attribute

Заметки

Содержимое элемента <xsl:attribute-set> состоит из нуля и более элементов <xsl:attribute>, задающих атрибуты в наборе. Для того, чтобы использовать наборы атрибутов, укажите атрибут use-attribute-sets в элементе <xsl:element>, <xsl:copy> или <xsl:attribute-set>.

Если при использовании атрибутов use-attribute-sets в элементах <xsl:attribute-set> указать набору атрибутов напрямую или ненапрямую использовать самого себя, то произойдет ошибка.

Указание атрибута use-attribute-sets является удобным способом объявления нескольких атрибутов в элементе. Для того, чтобы добиться тех же результатов с помощью элемента <xsl:attribute>, необходимо использовать элемент <xsl:attribute> для каждого атрибута в каждом именованном наборе атрибутов. Эти элементы <xsl:attribute> будут добавляться в качестве содержимого элемента <xsl:element>, <xsl:copy> или <xsl:attribute-set>.

Наборы атрибутов также можно использовать, указав атрибут xsl:use-attribute-sets в результирующем литеральном элементе. Для результирующего литерального элемента атрибуты будут добавляться в следующем порядке.

  1. Атрибуты из наборов атрибутов, именнованого в атрибуте xsl:use-attribute-sets, в порядке, указанном в этом атрибуте.

  2. Атрибуты, указанные в результирующем литеральном элементе.

  3. Будут добавлены все атрибуты, указанные в элементах <xsl:attribute>.

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

Экземпляр шаблона внутри каждого элемента <xsl:attribute> в элементе <xsl:attribute-set> создается каждый раз, когда используется набор атрибутов. При создании экземпляра используется тот же текущий узел и список текущих узлов, которые использовались при создании экземпляра элемента, содержащего атрибут use-attribute-sets или xsl:use-attribute-sets. Однако, при определении того, какие привязки переменных будут видимы, в первую очередь учитывается положение элемента <xsl:attribute> в таблице стилей, а не положение элемента, содержащего атрибут use-attribute-sets или xsl:use-attribute-sets. Таким образом, видны только переменные и параметры, объвленные элементами верхнего уровня <xsl:variable> и <xsl:param>.

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

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

В следующем разделе приводится пример элемента <xsl:attribute-set>.