Defines a named set of attributes.
<xsl:attribute-set name = QName use-attribute-sets = QNames > </xsl:attribute-set>
name
attribute is a qualified name.Number of occurrences | Unlimited |
Parent elements | xsl:stylesheet, xsl:transform |
Child elements | xsl:attribute |
The content of the <xsl:attribute-set>
element consists of zero or more <xsl:attribute
> elements that specify the attributes in the set. To use attribute sets, specify a use-attribute-sets
attribute on <xsl:element>
, <xsl:copy>
, or <xsl:attribute-set>
elements.
An error occurs if using use-attribute-sets
attributes on <xsl:attribute-set>
elements causes an attribute set to directly or indirectly use itself.
Specifying a use-attribute-sets
attribute can be an efficient way to declare multiple attributes on an element. To accomplish the same results using <xsl:attribute>
, you would have to use an <xsl:attribute>
element for each attribute in each named attribute set. You would add these <xsl:attribute>
elements as content of the <xsl:element>
, <xsl:copy>
, or <xsl:attribute-set>
element.
Attribute sets can also be used by specifying an xsl:use-attribute-sets
attribute on a literal result element. For a literal result element, attributes will be added in the following order:
xsl:use-attribute-sets
attribute, in the order listed in that attribute.<xsl:attribute>
elements will be added. Because adding an attribute to an element replaces any existing attribute of that element with the same name, 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 that is used for instantiating the element that bears the use-attribute-sets
or xsl:use-attribute-sets
attribute. However, it is the position of the <xsl:attribute>
element in the style sheetrather than the position of the element bearing the use-attribute-sets
or xsl:use-attribute-sets
attributethat determines which variable bindings are visible. Therefore, only variables and parameters declared by top-level <xsl:variable>
and <xsl:param>
elements are visible.
Multiple definitions of an attribute set with the same expanded-name are merged. An attribute from a definition that has higher import precedence takes precedence over an attribute from a definition that has lower import precedence.
An error occurs if there are two attribute sets that have the same expanded-name and equal import precedence, and that both contain the same attribute, unless there is a definition of the attribute set with higher import precedence that also contains the attribute.
The following topic provides an example of the <xsl:attribute-set>
element.