Tidwell, D. (2001) XSLT, O’Reilly, Sebastapol.

This book is an excellent introduction and reference. The style manages to be friendly, detailed and yet brisk without being overbearing. We would certainly list it amongst the books worth reading before coming on one of our XML courses.

For those with no prior knowledge of XML, the first chapter starts with a useful whistle-stop tour through the rest of the XML world, including a potted history of XML, an overview of XML itself plus a description of DTDs and Schemas. It also thumbnails other useful standards such as SVGA, SAX and DOM.

This chapter also explains how to install the author's favourite XSLT processor, Xalan, although the book is careful to point out Xalan-specific information wherever it occurs in the book and to explain how other processors handle matters such as extensions.

In time-honoured fashion the next chapter then proceeds to the standard Hello World example.

The following chapter takes you through the XPath language used by XSLT to locate elements in XML documents.

After this comes a comprehensive and structured tour through XSLT. This is, like the rest of the book, liberally sprinkled with examples. Many of these are complete self-contained stylesheets making it easy to try them out and experiment with. As usual with O'Reilly titles, the examples are all available online.

Chapter 8 deals with adding extensions to XSLT processors. Despite focussing on Xalan, it includes niceties such as dealing gracefully with the different extension mechanisms of the various processors. It also illustrates some useful tricks, such as creating multiple output files from an XSLT stylesheet (something missing from the standard).

The final chapter is a complete real example: an application using XSLT together with many extensions to generate JPEG graphics, PDF documents and ZIP files as well as HTML documents.

The appendices of the book contain a comprehensive reference for every XSLT element and XPath function: even this section is packed with examples: at least one for every element and function.

The few niggles I have about this book are minor. It attempts to be all things to all people: a tutorial with copious examples and a detailed reference work; like most such attempts, it fails, but only just! The intended audience is never explicitly stated: a non-programmer would have a very difficult time reading this book. The density of examples sometimes makes for a page turning frenzy in order to understand a simple point.

Another minor complaint: the relationship between XPath and XSLT is never really explained.

Finally, although it appears to be a reference work, some obscure topics (such as template priorities) are not even mentioned, other than in the reference, where they are not explained.

Despite these reservations, this is a fine work, and provides a very usable introduction and reference to XSLT.