Элемент <xsl:attribute-set>
Определяет именованный набор атрибутов.
<xsl:attribute-set
name = QName
use-attribute-sets = QNames
</xsl:attribute-set>
Атрибуты
имя
Обязательный. Имя Полные имена (XSLT) набора атрибутов. В качестве значения атрибуту name присваивается полное имя.use-attribute-sets
Разделенный пробелами список наборов атрибутов, как указано в имени Полные имена (XSLT). Указание этого атрибута объявляет каждый атрибут в каждом перечисленном наборе атрибутов.
Сведения об элементе
Количество вхождений |
Без ограничений |
Родительские элементы |
|
Дочерние элементы |
Заметки
Содержимое элемента <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 в результирующем литеральном элементе. Для результирующего литерального элемента атрибуты будут добавляться в следующем порядке.
Атрибуты из наборов атрибутов, именнованого в атрибуте xsl:use-attribute-sets, в порядке, указанном в этом атрибуте.
Атрибуты, указанные в результирующем литеральном элементе.
Будут добавлены все атрибуты, указанные в элементах <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>.