Creating a Photo Album with an Extension Element

As a final example, we’ll create an extension element that generates an HTML table that displays all of the photographs in a given directory. The extension element takes three parameters: the directory, how many images are displayed on each row of the table, and whether the filename should be displayed under the photograph. The generated table displays a reduced version of each photograph; each small photo is a link to the actual file. The generated file looks like Figure 9-13.

A photo album generated by an extension element
Figure 9-13. A photo album generated by an extension element

We’ll look at three versions of this extension here. The first two are written in Java, one version for Xalan and one version for Saxon. These two processors use different mechanisms to access the code; they also have different mechanisms to return the tree of HTML elements back to the stylesheet. The third version is written in C# for the .NET platform. The .NET version is written as an extension function rather than an element, although it still returns the tree of HTML elements we need. The HTML generated by the three implementations is the same.

All of the versions of our extension use this XML source file:

<?xml version="1.0"?>
<!-- photo-album.xml -->
<photo-album
  directory="c:\photos" 
  imagesPerRow="5" 
  includeFilenames="yes"/>

The XML source contains the three parameters we need for our extension: ...

Get XSLT, 2nd Edition 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.