XSL: именованные наборы атрибутов (xsl:attribute-set)

Именованных наборов атрибутов создаются с помощью элемента верхнего уровня xsl:attribute-set, и затем могут быть использованы в других инструкциях, таких как xsl:element, xsl:copy и в самом элементе xsl:attribute-set. Именованный набор атрибутов представляет собой определенную совокупность атрибутов (т.е. пар имя = «значение»), не относящихся к определенному элементу. Эта совокупность имеет имя, по которому к ней можно обратиться из другой инструкции, и таким образом добавить все атрибуты из совокупности к конечному элементу.

Синтаксис:

Атрибуты:

  • name – является обязательным и задает имя набора атрибутов. По этому имени впоследствии можно обратиться к набору из другой инструкции с помощью атрибута use-attribute-sets, и добавить тем самым атрибуты из набора к конечному элементу.
  • use-attribute-sets – позволяет как бы импортировать в текущий набор атрибуты из другого набора. Значением данного атрибута будет имя импортируемого набора.

Содержимое элемента xsl:attribute-set может состоять из нуля или нескольких элементов xsl:attribute, с помощью которых и создаются атрибуты в этом наборе.

Для использования именованного набора атрибутов в других инструкциях применяется атрибут use-attribute-sets, значением которого должен быть перечень имен наборов атрибутов через пробел. Включение в указанные инструкции атрибута use-attribute-sets равнозначно добавлению элементов xsl:attribute для каждого атрибута из каждого именованного набора атрибутов в начало содержимого того элемента, где этот атрибут use-attribute-sets находится, причем в том же порядке, в котором названия этих наборов были перечислены в атрибуте use-attribute-sets. Так как добавленный к элементу атрибут заменяет любой из уже имевшихся атрибутов этого элемента с таким же именем, то если добавляемые инструкциями xsl:attribute и элементом xsl:attribute-set атрибуты повторяются, они будут заменяться в соответствии с указанным порядком.

Если в результате использования атрибутов use-attribute-sets в элементах xsl:attribute-set набор атрибутов начинает прямо или косвенно использовать сам себя, фиксируется ошибка.

Набор атрибутов так же можно добавить и к фиксированным конечным элементам, использовав в них все тот же атрибут use-attribute-sets. Его использование в данном случае даст тот же результат, что и в случае с инструкциями, но порядок включения атрибутов в конечный элемент будет немного другим: сначала будут добавлены атрибуты из наборов (причем в том же порядке, в котором названия этих наборов были перечислены в атрибуте use-attribute-sets), потом будут добавлены атрибуты, указанные в фиксированном конечном элементе, и наконец, будут добавлены все атрибуты, заданные элементами xsl:attribute. Это нужно учитывать в виду замены атрибутов с одинаковыми именами.

Поскольку набор атрибутов может вызываться из разных шаблонов (xsl:template), а в самих наборах могут использоваться выражения XPath, следует четко понимать, какой элемент будет в каждом случае являться текущим. Во всех случаях текущим будет являться тот же элемент, который является текущим в инструкции, вызывающей набор (т.е. содержащей атрибут use-attribute-sets).

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *