XSLT <xsl:template> – The Heart of XML Transformation
Introduction – Why Learn <xsl:template>?
In XSLT, the <xsl:template> element is the core of the transformation engine. It defines rules for how specific XML elements should be transformed into new formats like HTML, plain text, or other XML. Mastering <xsl:template> is the first step in building powerful, scalable XML transformations.
In this guide, you’ll learn:
- What
<xsl:template>does and how it works - How to match XML nodes using XPath
- Real-world examples for rendering HTML from XML
- Best practices for writing reusable and scalable templates
What Is <xsl:template>?
The <xsl:template> element defines how a matching XML node should be transformed.
Syntax
<xsl:template match="XPathExpression">
<!-- Transformation output -->
</xsl:template>
match="...": Specifies which XML nodes the template applies to (via XPath)- The content inside defines how to generate the output
Example XML
<catalog>
<book id="101">
<title>Mastering XSLT</title>
<author>Jane Doe</author>
</book>
</catalog>
Example – Basic Template Structure
<xsl:template match="/catalog">
<html>
<body>
<h2>Book Catalog</h2>
<xsl:apply-templates select="book"/>
</body>
</html>
</xsl:template>
This matches the <catalog> root element and applies a new template for each <book> child.
Example – Template for a Specific Element
<xsl:template match="book">
<div>
<h3><xsl:value-of select="title"/></h3>
<p><xsl:value-of select="author"/></p>
</div>
</xsl:template>
Outputs HTML for each <book> element by extracting title and author.
Template Matching with Attributes
<xsl:template match="book[@id='101']">
<strong>Featured Book:</strong>
<xsl:apply-templates/>
</xsl:template>
Matches only the <book> element with id="101".
Template for All Nodes (Default Rule)
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
Starts the transformation by processing the root node.
Using xsl:apply-templates
<xsl:apply-templates select="book"/>
- Applies other matching templates to the selected nodes.
- Encourages modular design.
Template Matching Best Practices
- ✔️ Use
match="/"for the root start point - ✔️ Create separate templates for each logical structure (
book,title, etc.) - ✔️ Use attribute-based XPath for custom matching
- ✔️ Keep templates focused—one job per template
- Avoid hardcoding output inside all templates—reuse
<xsl:value-of>andapply-templates
Summary – Recap & Next Steps
The <xsl:template> tag is the foundational building block in XSLT. It defines transformation rules for specific nodes and lets you modularly apply logic across your XML.
Key Takeaways:
- Use
match="XPath"to bind templates to XML nodes - Organize transformations with multiple targeted templates
- Use
xsl:apply-templatesto trigger nested rules
Real-world relevance: Essential for XML-to-HTML renderers, data converters, document processors, and CMS publishing templates.
FAQs – XSLT <template>
Can I use multiple <xsl:template> tags?
Yes. XSLT uses the most specific matching template for each node.
What happens if no template matches a node?
Nothing is output unless a default template (match="/") or catch-all is provided.
Can I match by attribute values?
Yes. Use XPath like book[@id='101'] in the match attribute.
Is <xsl:template> recursive?
It can be. Using xsl:apply-templates allows recursive descent through XML.
Can I include HTML inside templates?
Absolutely. HTML output is common in XML-to-HTML transformations.
Share Now :
