XSLT Fallback Tutorial 🎯

beginner
19 min

XSLT Fallback Tutorial 🎯

Welcome to the XSLT Fallback tutorial at CodeYourCraft! Today, we'll explore how to handle errors and ensure your XSLT transformations run smoothly. 💡

What is XSLT Fallback?

XSLT Fallback is a technique used in XSLT (Extensible Stylesheet Language Transformations) to provide alternative stylesheets that can be used when the primary one fails. It's particularly useful when dealing with various XML documents that may have different structures. 📝

Why Use XSLT Fallback?

In real-world scenarios, XML documents might not always have a consistent structure. Using XSLT Fallback, we can create multiple stylesheets to handle different document structures, ensuring our XSLT transformations continue to work seamlessly. ✅

Getting Started

Let's dive into an example to understand XSLT Fallback better.

Example 1 - Primary Stylesheet (primary.xsl)

xml
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>Main Page</title> </head> <body> <h1>Error: Unable to process the XML document</h1> </body> </html> </xsl:template> </xsl:stylesheet>

In this example, we have a primary stylesheet that returns an error message when the XML document can't be processed.

Example 2 - Fallback Stylesheet (fallback.xsl)

xml
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xdt="xdl:transform" exclude-result-prefixes="xdt"> <xsl:import href="primary.xsl"/> <xsl:template match="document(* | processing-instruction())"> <!-- Ignore any unknown nodes --> </xsl:template> <xsl:template match="*"> <!-- Default template for all elements --> <xsl:apply-templates select="@*|node()"/> </xsl:template> </xsl:stylesheet>

Our fallback stylesheet imports the primary stylesheet and ignores unknown nodes, ensuring that it can handle any XML structure.

Combining Stylesheets

To use both stylesheets, we need to combine them when applying the XSLT transformation. Here's an example using XSLTProcessor in PHP:

php
php $xml = new SimpleXMLElement($xmlString); $processor = new XSLTProcessor(); $primary = new DomDocument(); $primary->load('primary.xsl'); $fallback = new DomDocument(); $fallback->load('fallback.xsl'); // Combine stylesheets $processor->importStyleSheet($primary); $processor->importStyleSheet($fallback); // Apply transformations echo $processor->transformToXML($xml); ?` ## Putting It All Together By using XSLT Fallback, we can handle various XML document structures and ensure our XSLT transformations continue to work smoothly. 💡
Quick Quiz
Question 1 of 1

Which XSLT stylesheet handles unknown nodes?

Happy coding! 🎯