The Default Template Rule for Text and Attribute Nodes
The most basic built-in template rule copies the value of text and attribute nodes into the output document. It looks like this:
<xsl:template match="text( )|@*"> <xsl:value-of select="."/> </xsl:template>
The text( )
node test is a
pattern matching all text nodes, just as first_name
is a pattern matching all
first_name
element nodes.
@*
is a pattern matching all
attribute nodes. The vertical bar combines these two patterns so
that the template rule matches both text and attribute nodes. The
rule’s template says that whenever a text or attribute node is
matched, the processor should output the value of that node. For a
text node, this value is simply the text in the node. For an
attribute, this value is the attribute value but not the
name.
Example 8-10 is an
XSLT stylesheet that pulls the birth and death dates out of the
born
and died
attributes in Example 8-1. The default
template rule for attributes takes the value of the attributes, but
an explicit rule selects those values. The @
sign in @born
and @died
indicates that these are attributes
of the matched element rather than child elements.
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="people"> <html> <head><title>Famous Scientists</title></head> <body> <dl> <xsl:apply-templates/> </dl> </body> </html> </xsl:template> <xsl:template ...
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.