Delphi Clinic C++Builder Gate Training & Consultancy Delphi Notes Weblog Dr.Bob's Webshop
Bob Swart (aka Dr.Bob) - Medical Officer Dr.Bob's Kylix Kicks
 Review: Delphi Developer's Guide to XML
See Also: Dr.Bob's Programming Books for Delphi, Kylix & C++Builder books co-authored by Bob Swart
Title:
Author:
Publisher:
ISBN:
Info:
Delphi Developer's Guide to XML
Keith Wood
Wordware
1556228120
526 pages (plus CD-ROM)

To start with the disturbing fact: This book is about XML, but not about XML as supported by Delphi 6. Or more specifically, it is about XML, but doesn't cover any of the new Delphi 6 XML features such as the XMLDocument component, the Data Binding Wizard, the XML Mapper, the XSLPageProducer or the Web Services and SOAP support as present in Delphi 6 Enterprise. Be aware of this, since the book does mention that it's compatible with Delphi versions 3 through 6 (which I consider a bit misleading).

OK, now that I've got this off my chest, what does the book cover? The book starts with a first part to introduce XML (a good primer for those of us who have little idea what the actual purpose of XML is and what you can do with it). In seven chapters, we learn about the history of XML (and XML vs. HTML), the XML syntax, the old DTD (Document Type Definition), XSLT (eXtensible Stylesheet Language Transformations), XLink, XPath and XPointer (used in XSL), and finally XML Schemas (the successor of DTDs to "define" an XML document). It sounds like a lot, but actually doesn't cover more than 71 pages - without using Delphi a single time!
The second part of the book covert the Document Object Model - all about parsing an XML document. DOM is one of the two main approaches you can take when parsing XML. The other is SAX (Simple API for XML), which is covered in part three. Especially the part about DOM suffers from the lack of information about the presence of the DOM interfaces and the TXMLDocument component in Delphi 6. After a general chapter about DOM, three chapters follow with the Microsoft DOM, CUESoft's DOM and Open XML's DOM.
Part three about SAX contains four chapters. The first one introduces the Simple API for XML (SAX), the second covers Microsoft's SAX Parser, while the third shows the use of SAX in Delphi, listing a number of ISAX interfaces. The last chapter of this part explains how to wrap external parsers for SAX, such as Microsoft's SAX parser, CUESoft's parser, and the Open XML's parser.
Part four is about Serving XML. This is mainly about viewing XML as data and not as documents. It describes a number of ways in which XML can be generated automatically, for example as text, from a database, using web modules (or InternetExpress), using DOM or SAX, and finally as MIDAS data packet. The first chapter of this part introduces the data: a movie-watcher database, which will be used in the remaining chapters. Very nice approach, although again I'm missing the new Delphi 6 support for XML. In my opinion, it would have been so much better to write four of five additional chapters. And so much more worthwhile to people who have Delphi 6 and have the feeling that they start where this book stops.
The last part of the book covers a number of applications that make use of XML, like an electronic e-mail sender, a customised client and XML examination application (both a Windows client and a Web client). The final chapter of the book even covers SOAP, but not the way Delphi 6 supports SOAP. In fact, I would not use the techniques in this chapter as they are far more complex than the Delphi 6 support (although they do help you understand what's actually happening).

All in all, this is a good book with some detailed coverage of XML and some nice example applications. The first part gives a solid introduction to those without XML knowledge or experience. However, the main thing missing is the lack of real Delphi 6 XML coverage (which makes the book "good" but not "very good").

(Bob Swart)


More Book Reviews

This webpage © 2002-2003 by webmaster drs. Robert E. Swart (aka Dr.Bob - www.drbob42.com). All Rights Reserved.