Example 2 of <xsl:apply-imports>
This example demonstrates how to use <xsl:apply-imports>
when you want to add to the functionality of a rule in an imported file, but you don't want to replace the rule entirely. This example uses three main files:
- The books.xml sample file, slightly altered.
- The sample.xsl style sheet sets the font as Arial and imports the other style sheet. When a book element is found, the Arial font is applied to the elements in the node. Then the
<xsl:apply-imports>
tag applies the matching rules in the imported sample-import style sheet. - The sample-import.xsl style sheet is the imported style sheet. It provides line breaks, and the formatting for bold, italic, and blue text.
Note To test this example, you need to use a script. For more information, see Initiate XSLT in a Script.
XML File (books.xml)
Use the Sample XML File (books.xml).
Main XSLT File (sample.xsl)
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:import href="sample-import.xsl"/> <xsl:output method="html"/> <xsl:template match="book"> <font face="Arial"> <xsl:apply-imports/> </font> </xsl:template> </xsl:stylesheet>
Imported XSLT File (sample-import.xsl)
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <!-- Override built-in template. --> <xsl:template match="text()"/> <xsl:template match="/"> <html> <body> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="book"> <i> <xsl:apply-templates select="title"/> </i> <xsl:text> By: </xsl:text> <xsl:apply-templates select="author"/> <br/> </xsl:template> <xsl:template match="title"> <b> <xsl:value-of select="."/> </b> </xsl:template> <xsl:template match="author"> <font color="blue"> <xsl:value-of select="."/> </font> </xsl:template> </xsl:stylesheet>
Try It!
- Go to the Sample XML File (books.xml).
- Copy books.xml and paste it into a file.
- Below the line
<?xml version="1.0"?>
, add the following line:<?xml-stylesheet type="text/xsl" href="sample.xsl"?>
- Test the file using one of the approaches outlined in Initiate XSLT in a Script.
Output
This is the formatted output:
This is the processor output:
<html> <body> <font face="Arial"><i><b>XML Developer's Guide</b></i> By: <font color="blue">Gambardella, Matthew</font><br></font> <font face="Arial"><i><b>Midnight Rain</b></i> By: <font color="blue">Ralls, Kim</font><br></font> ... <font face="Arial"><i><b>Visual Studio 7: A Comprehensive Guide</b></i> By: <font color="blue">Galos, Mike</font><br></font> </body> </html>