Other Approaches
One mantra of the Perl community is, “There’s more than one way to do it.” That’s true with XSLT stylesheets as well. We could have written our stylesheet like this:
<?xml version="1.0"?>
<!-- greeting2.xsl -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="greeting"/>
</body>
</html>
</xsl:template>
<xsl:template match="greeting">
<h1>
<xsl:value-of select="."/>
</h1>
</xsl:template>
</xsl:stylesheet>In this version, we put the wrapper elements for the HTML document in the template for the root element. One of
the things you should think about as you build your stylesheets is
where to put elements such as <html> and <body>. Let’s say our XML document
looked like this instead:
<?xml version="1.0"?> <greetings> <greeting>Hello, World!</greeting> <greeting>Hey, Y'all!</greeting> </greetings>
In this case, we would have to put the <html> and <body> elements in the <xsl:template>
for the root element. If they were in the <xsl:template> for the <greeting>
element, the output document would have multiple <html> elements, which isn’t valid in
an HTML document. Our updated stylesheet would look like this:
<?xml version="1.0"?>
<!-- multiple-greetings.xsl --> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <html> <body> <xsl:apply-templates select="greetings/greeting"/> ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access