Home >
Online Product Documentation >
Table of Contents >
xsl:attribute-set
xsl:attribute-set
Defines a named set of attributes.
Format
Description
The
name
attribute specifies the name of the attribute set. This must be a qualified name. The contents of the
xsl:attribute-set
element consists of zero or more
xsl:attribute
elements. Each
xsl:attribute
element specifies an attribute in the set.
To use an attribute set, specify the
use-attribute-sets
attribute in one of the following elements:
-
xsl:element
-
xsl:copy
-
xsl:attribute-set
The value of the
use-attribute-sets
attribute is a white-space-separated list of names of attribute sets. When you specify the use of an attribute set, it is equivalent to adding an
xsl:attribute
element for each attribute in each named attribute set to the beginning of the contents of the element in which you specify the
use-attribute-sets
attribute.
An attribute set cannot include itself. In other words, if attribute set
A
specifies the
use-attribute-sets
attribute, the list of attribute sets to use cannot include attribute set
A
.
You can also specify an attribute set in an
xsl:use-attribute-sets
attribute on a literal result element. The value of the
xsl:use-attribute-sets
attribute is a white-space-separated list of names of attribute sets. The
xsl:use-attribute-sets
attribute has the same effect as the
use-attribute-sets
attribute on
xsl:element
with one additional rule. The additional rule is that attributes specified on the literal result element itself are treated as if they were specified by
xsl:attribute
elements before any actual
xsl:attribute
elements but after any
xsl:attribute
elements implied by the
xsl:use-attribute-sets
attribute.
Thus, for a literal result element, attributes from attribute sets named in an
xsl:use-attribute-sets
attribute are added first, in the order listed in the attribute. Next, attributes specified on the literal result element are added. Finally, any attributes specified by
xsl:attribute
elements are added. Since adding an attribute to an element replaces any existing attribute of that element with the same name, this means that attributes specified in attribute sets can be overridden by attributes specified on the literal result element itself.
The template within each
xsl:attribute
element in an
xsl:attribute-set
element is instantiated each time the attribute set is used. It is instantiated using the same current node and current node list as is used for instantiating the element bearing the
use-attribute-sets
or
xsl:use-attribute-sets
attribute. However, it is the position in the stylesheet of the
xsl:attribute
element rather than of the element bearing the
use-attribute-sets
or
xsl:use-attribute-sets
attribute that determines which variable bindings are visible. Consequently, only variables and parameters declared by top-level
xsl:variable
and
xsl:param
elements are visible.
The XSLT processor merges multiple definitions of an attribute set with the same expanded name. If there are two attribute sets with the same expanded name that both contain the same attribute, the XSLT processor chooses the attribute definition that was specified last in the stylesheet.
Example
The following example creates a named attribute set,
title-style
, and uses it in a template rule: