An Archetypical O'Reilly Book
This is the sort of book that put O'Reilly on the map. Concise, practical, step-by-step, the kind of book that allows you to get significant amounts of actual work done by the time you finish the third chapter or so. The introduction to XML in chapter two is one of the best I've ever seen, and I've often recommended it for people as an XML Executive Summary, even those who will never write a line of Perl.
Like that late 2006 early 2007 meme says: "It does just what it says on the tin."
Review of Perl & XML--XML for Perl Programmers
XML has begun to appear everywhere. XML has long served in hidden roles on servers and in configuration files. Microsoft Word 2003 for Windows now supports reading and writing XML to in it's wordprocessingML format. Unlike MS Word's horrible "Save As Web Page" feature, wordprocessingML, or wordML for short, is a clean usable format. The adoption of XML in a user space as common as MS Word in an accessible format means that developers have a rich opportunity in XML.
The book Perl and XML focuses on the where Perl and XML meet. In asking the questions "Why Perl?", the authors Erik Ray and Jason McIntosh point to Perl's ability to handle text, strings, and regular expressions. The authors also point out in a clear and concise manner the strengths of XML as a means for structuring data.
The book focuses on working with XML using Perl. Tutorials of the basics of either language are best found in another book. The author of the book recommends Learning Perl for those people starting out in Perl. The book does not assume much knowledge of XML, so it's really an XML book for Perl programmers. If you'd like a more in depth discussion of XML, you might check out Erik Ray's Learning XML.
Surveying many conventional XML tools and applications, the book addresses big picture items such as tree processing and streams as well as specific items such as RSS and SOAP. Approaching XML from both a practical point of view and strategic point of view, the author provides detailed examples and observes which strategies work well for handling XML in Perl.
Originally, I picked up Perl and XML to address a couple of small projects where I had to deal with XML. The examples in Perl and XML were well written and provided the information I needed to try out common Perl tools for handling XML. Unfortunately, I found that XML processing in Perl was unacceptably slow for the two projects I had at hand. In a short amount of time, I hacked together a faster solution without relying on an XML parser. That said, I gleaned a great deal from Perl and XML which I imagine I will be putting to use soon.
If you're not currently working with XML, you may find yourself working sooner than you think. I couldn't more highly recommend Perl and XML for thorough treatment of the subject even if you end up hacking your own solution.
Good book, but lots of errors in the code
I liked the way this book was structured - it was a quick read over a thanksgiving family visit, and it gave a good overview of what XML is and what XML isn't, and what tools are available already in Perl to use it. I particularly liked the middle of the book, and how it dealt with trees and event streams. First there was in short intro chapter on why you'd want to parse XML as an event stream, and some simple modules that give back event streams. Then the next chapter would be a longer one on SAX - the definitive way to do event streams. Same thing with trees and DOM. It ends with some examples of real-life XML processing, such as consuming and producing RSS feeds. The book also has the best description of Unicode I've ever read, and did it with just a few pages.
What ticked me off about this book were the egregious errors in the sampe code. The very first piece of code they show in chapter 3 is a 100-line XML parser that doesn't need any support modules. The problem is that it doesn't recognize any XML because the regular expressions are wrong, which was pretty confusing for me (I'm relatively new to Perl, so I figured they were just "another way of doing it" that I didn't understand). I downloaded the examples frm the O'Reily website, and they're wrong there too - so it's not just a printing error. Worse, the example XML file I tried to test the parser on was also from the tarfile I downloaded - but it was invalid XML! (example 3.4). So I was trying to learn XML with a sample parser that didn't work, on invalid XML! This is not the quality I am expecting from O'Reilly!
(In fairness, both of these errors were in the online errata, but I'm not sure if they were corrected in the 7/04 reprint)
There are other errors in the code too - so be sure and check back with the errata page if you're going to seriously use the code. If they'd run their sample code before printing, I'd probably give this book a better rating.
Good Overview Of XML And Supporting Perl Modules
I have wanted to learn about XML, but I found the pure XML books dry and too theoretical. However, putting XML in the context of something familiar, i.e. Perl, made it much more accessible. This book gives a nice overview of XML parsing using event based and tree based parsers that are available as Perl modules. The book presents SAX and DOM standards compliant modules as well as modules with more Perlish interfaces, e.g. XML::Grove and XML::Twig. It discusses the pros and cons of event vs. tree parsing of XML as well as a few advanced technologies such as database integration and SOAP. The only knock I have on the book is that the examples are a bit contrived and do not show how to solve meaningful problems.
Nice overview but lacks in useful examples
Unfortunately, this book suffers from the same affliction that most programming books suffer from. There are absolutely no useful code examples in the book. Yes, as an experienced engineer, I can substitute my own code where the book prints to the screen or searches for monkeys, but hey, I paid for my ticket, sometimes I'd like to be told exactly what to do. If I wanted to figure out everything on my own, I wouldn't have purchased a book in the first place.