More Examples

You can use XSLT extension mechanisms to push XSLT processing beyond text or markup generation and to read information from non-XML sources.

Generating JPEG Files from XML Content

When converting XML content into HTML files for a web site, there are times when you want to have complete control over the look of a piece of text. In this example, we’ll use an extension function to convert the text of an XML element into a JPEG graphic. Our code will load a JPEG background graphic, draw the text from the XML document on top of it, and then write the graphic out to a new JPEG file. We’ll reuse the XML file from our first example to demonstrate the extension function.

Our stylesheet passes each <title> element to the extension function. When we invoke the extension, we’ll also pass in the name of the background JPEG, the name of the output file (which we’ll call title1.jpg, title2.jpg, etc.), and various information about the font name, font size, and other parameters. Here’s what our stylesheet looks like:

<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:jpeg="xalan://JPEGWriter" extension-element-prefixes="jpeg"> <xsl:output method="html"/> <xsl:template match="/"> <html> <head> <title> <xsl:value-of select="/book/title"/> </title> </head> <body> <xsl:for-each select="/book/chapter"> <xsl:choose> <xsl:when test="function-available('jpeg:createJPEG')"> <xsl:value-of select="jpeg:createJPEG(title, 'bg.jpg', concat('title', ...

Get XSLT now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.