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 ...
Get XML in a Nutshell, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.