Updates
Latest Tweet
What's New?
Check out for latest innovation, a computer based training video collection
Like this Page
XSLT: Mastering XML Transformations Review by Giles G
Well organised chapters but be prepared to persevere if you're a beginner
Coming from a tech writing background, I bought this book back in early 2007, wishing to develop practical programming skills in XSLT 1.0, which I was utilising to transform single-sourced XML documentation into multiple outputs, such as HTML/Java Help and PDF.
Without an apparent specific target audience in mind, this book initially gives the appearance it's written for those wishing to learn XSLT with little or no prior XSLT programming knowledge. It has topics organised in a manner that covers the basics of XSLT programming principles in early chapters to more complex XSLT concepts further on. There are several appendices: an XSLT reference for all elements in the XSLT specification, an XPath reference and an XSLT and XPath function reference, all of which should prove useful once you start making headway into XSLT programming. The structure of this book is commendable.
Whilst Tidwell comes across as an intelligent, knowledgeable and enthusiastic XSLT programmer, describing XSLT concepts is not one of his strengths. Initially, XSLT can be a difficult programming language to get into, but unfortunately Tidwell frequently fails to put himself into the shoes of the novice, making assumptions about certain XSLT concepts in his descriptions that fail to come across clearly. One major weakness of this book is its insufficient coverage on XPath. Sure enough it has reference material to XPath axes and functions, but little coverage on HOW XPath is actually used in XSLT. This is a shame, considering that XPath is such a fundamental component of XSLT.
Tidwell uses fairly good XSLT code samples and snippets to help explain specific XSLT concepts. However, some of the early samples make use of XSLT code whose concepts are not covered until much later chapters in the book. Often, there were no clear indications as to whether one should read ahead to understand these concepts first or put them mentally on hold. I found this potential need to forward reference rather distracting. In other XSLT samples, code from different programming languages (such as Java) was utilised more than necessary.
In one chapter, Tidwell makes three successive attempts to explain the somewhat complex "Muench Method" for grouping XML nodes! Whilst I almost grasped the concepts involved after the first explanation, the subsequent explanations just plunged me into further confusion. Between each explanation, he adds comments such as "Well, that's crystal clear, isn't it?". This style of writing only contributed to the frustration felt upon making a sincere attempt to actually understand this concept. I ended up having to search material elsewhere to find an explanation I could actually understand.
After having practiced a little more XSLT myself and having reread a few more chapters, this book became easier to understand, partly because I developed a clearer understanding of the concepts involved and partly because I felt more acquainted with Tidwell's style of writing. With perseverance, a beginner can make substantial headway into XSLT programming using this book, although I wouldn't rely on it as a sole XSLT learning resource. I found that the XSLT 1.0 Pocket Reference by Evan Lenz a fantastic little reference book - it's concise, explicit descriptions of XSLT concepts really helped me understand some of the ones which were lacking in this book.
I guess if you come from a programming background and know a little about XPath, this book would probably work well for you. Otherwise, I strongly suggest supplementing it with another XSLT learning resource or Google searches on the Internet. There are loads of helpful code-snippets out there with decent-enough explanations to supplement them and XSLT programming principles can be learnt well by example.
Let's hope that Tidwell's next edition of this book is an improvement upon what is potentially a good learning resource.