xsl:attribute¶
The xsl:attribute
element is used to add an attribute value to an xsl:element
element or literal result element, or to an element created using xsl:copy
. The attribute must be output immediately after the element, with no intervening character data.
Available in XSLT 1.0 and later versions. Available in all Saxon editions.
- Category: instruction
- Content: sequence-constructor
- Permitted parent elements:
xsl:attribute-set
; any XSLT element whose content model is sequence-constructor; any literal result element
Attributes¶
name
- { qname }
- Attribute name, interpreted as an attribute value template, so it may contain string expressions within curly braces. The full syntax of string expressions is outlined in XPath Expression Syntax.
namespace?
- { uri }
- The namespace URI of the attribute.
select?
- expression
- The attribute value may be given either by a select attribute or by an enclosed sequence constructor. If the select attribute is used and the value is a sequence, then the items in the sequence are output space-separated.
separator?
- { string }
- String used to specify an alternative separator.
type?
- eqname
- New in XSLT 2.0. Indicates the data type of the value of the attribute. The value must either be a built-in type defined in XML Schema, for example
xs:integer
orxs:date
, or a user-defined type defined in a schema imported usingxsl:import-schema
. Type annotations are only accessible if the attribute is added to a temporary tree that specifiesvalidation="preserve"
. The value given to the attribute must be a string that conforms to the rules for the data type, as defined in XML Schema. validation?
"strict" | "lax" | "preserve" | "strip"
- Invokes validation of the contents of the attribute.
Notes on the Saxon implementation¶
Modivated by streaming, the on-empty attribute was introduced in an early Working Draft for XSLT 3.0, but later removed and replaced by the new xsl:on-empty
, xsl:on-non-empty
and xsl:where-populated
instructions. The on-empty
attribute was implemented in Saxon 9.5, but removed in 9.7.
Details¶
There are two main uses for the xsl:attribute
element:
- It is the only way to set attributes on an element generated dynamically using
xsl:element
. - It allows attributes of a literal result element to be calculated using
xsl:value-of
.
The xsl:attribute
must be output immediately after the relevant element is generated: there must be no intervening character data (other than whitespace which is ignored). Saxon outputs the closing ">
" of the element start tag as soon as something other than an attribute is written to the output stream, and rejects an attempt to output an attribute if there is no currently-open start tag. Any special characters within the attribute value will automatically be escaped (for example, "<
" will be output as "<
").
If two attributes are output with the same name, the second one takes precedence.
Examples¶
The following code creates a <FONT>
element with several attributes:
<xsl:element name="FONT">
<xsl:attribute name="SIZE">4</xsl:attribute>
<xsl:attribute name="FACE">Courier New</xsl:attribute>
Some output text
</xsl:element>