Attribute Value Templates
It’s easy to include known attribute values in the
output document as the literal content of a literal result element. For example, this template rule
wraps each input person element in
an HTML span element that has a
class attribute with the value
person:
<xsl:template match="person"> <span class="person"><xsl:apply-templates/></span> </xsl:template>
However, it’s trickier if the value of the attribute is not
known when the stylesheet is written, but instead must be read from
the input document. The solution is to use an attribute
value template. An attribute value template is an XPath
expression enclosed in curly braces that’s placed in the attribute
value in the stylesheet. When the processor outputs that attribute, it
replaces the attribute value template with its value. For example,
suppose you want to write a name template that changes the input
name elements to empty elements
with first, initial, and last attributes like this:
<name first="Richard" initial="P" last="Feynman"/>
This template accomplishes that task:
<xsl:template match="name">
<name first="{first_name}"
initial="{middle_initial}"
last="{last_name}" />
</xsl:template>The value of the first
attribute in the stylesheet is replaced by the value of the first_name element from the input document.
The value of the initial attribute
is replaced by the value of the middle_initial element from the input
document, the value of the last
attribute is replaced by the value of the last_name element ...