xsl:attribute-set Element
A version of this page is also available for
4/8/2010
Defines a named set of attributes.
Syntax
<xsl:attribute-set
name = QName
use-attribute-sets = QNames>
</xsl:attribute-set>
Attributes
- name
[required] Name of the attribute set.
- use-attribute-sets
A white space-separated list of attribute sets specified as a qualified name. Specifying a use-attribute-sets attribute is equivalent to adding <xsl:attribute> elements for each of the attributes in each of the named attribute sets to the beginning of the content of the element with the use-attribute-sets attribute, in the same order in which the names of the attribute sets are specified in the use-attribute-sets attribute. It is an error if using use-attribute-sets attributes on <xsl:attribute-set> elements causes an attribute set to directly or indirectly use itself.
Element Information
Number of occurrences |
Unlimited |
Parent elements |
|
Child elements |
Remarks
The <xsl:attribute-set> element defines a named set of attributes. The name attribute specifies the name of the attribute set. The value of the name attribute is a qualified name. The content of the <xsl:attribute-set> element consists of zero or more <xsl:attribute> elements that specify the attributes in the set.
Attribute sets are used by specifying a use-attribute-sets attribute on <xsl:element>, <xsl:copy>, or <xsl:attribute-set> elements. The value of the use-attribute-sets attribute is a white space-separated list of names of attribute sets. Each name is specified as a qualified name. Specifying a use-attribute-sets attribute is equivalent to adding <xsl:attribute> elements for each of the attributes in each of the named attribute sets to the beginning of the content of the element with the use-attribute-sets attribute, in the same order in which the names of the attribute sets are specified in the use-attribute-sets attribute. It is an error if using use-attribute-sets attributes on <xsl:attribute-set> elements causes an attribute set to directly or indirectly use itself.
Attribute sets can also be used by specifying 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 the additional rule 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 will be added first, in the order listed in the attribute; next, attributes specified on the literal result element will be added; finally, any attributes specified by <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 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 style sheet 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; thus, only variables and parameters declared by top-level <xsl:variable> and <xsl:param> elements are visible.
Example
The following example creates a named attribute set called "title-style
" and uses it in a template rule.
<xsl:template match="chapter/heading">
<fo:block quadding="start" xsl:use-attribute-sets="title-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:attribute-set name="title-style">
<xsl:attribute name="font-size">12pt</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:attribute-set>
The "fo:block
" element is output as follows:
<fo:block quadding="start" font-size="12pt" font-weight="bold">
...
</fo:block>
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.
It is an error 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.
See Also
Reference
XSLT Elements
xsl:attribute Element
xsl:element Element
xsl:copy Element