Template-Driven Transformations
In general, XSLT transformations fall into two categories: template-driven and data-driven. This section provides information about template-driven transformations. The Data-Driven Transformations section follows.
In a template-driven transformation, the sequence of the output is determined by template-rules used in the transformation. The following is an example of a simple template-driven transformation.
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<HTML>
<HEAD>
</HEAD>
<BODY>
<H1><xsl:value-of select="/books/book/title"/></H1>
<H3><xsl:value-of select="/books/book/author"/></H3>
<P>
<SPAN>Abstract:</SPAN>
<SPAN><xsl:value-of select="/books/book/abstract"/></SPAN>
</P>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
Here, the style sheet expects certain data elements from a source document, which might look like this:
<?xml version="1.0"?>
<books>
<book>
<title>Synchronized Jamming</title>
<author>Kari Hensien</author>
<abstract>
A post modern flight of fancy.
</abstract>
</book>
</books>
The style sheet then decides how the output should appear. This means that a template-driven transformation produces its result by pulling the specified data elements from the source document, and putting them through the appropriate templates.
To process multiple book
entries, a template-driven XSLT style sheet can use <xsl:for-each>
to set up a loop to process each entry. It can also use <xsl:sort>
to process the entries in specified order, or it can use <xsl:if>
or <xsl:choose>
to selectively process some entries based on a certain condition. A template-driven transformation is suitable for processing an information-rich source document, as long as the data is well structured and the result pattern is predictable.
On the other hand, data-driven transformations are ideal for processing a data source when the data is poorly structured, or when the output depends on recursive processing. In practice, template-driven and data-driven transformations are often combined in a single style sheet for a wide variety of XML applications.
The following topics walk you through some common tasks for writing a template-driven XSLT style sheet.
- Creating and Populating an HTML Template
- Generating Well-Formed HTML Using XSLT
- Selecting and Outputting Attributes
- Sorting XML Using <xsl:sort>
- Defining Conditional Templates Using <xsl:if> and <xsl:choose>
See Also
Using XPath Expressions to Select Nodes | Starter Kit | Data-Driven Transformations