XForms Essentials

Author: Micah Dubinko

ISBN: 0596003692

Publisher: O'Reilly & Associates

Reviewed by: Dean Wilson

HTML forms are a necessary evil, outdated and overworked they are prime targets for a long awaited overhaul. From out of the shadows we have the only contender to step up to the challenge and push forward; XForms.

XForms Essentials has an enviable pedigree, with Micah Dubinko an editor and author of the XForms specification itself, writing the book the information is almost straight from the horses mouth. While the accuracy of the books content can't be argued with the terse style of his writing isn't ideal for someone with no previous exposure to the XForms spec.

Despite the books short length, eleven chapters in under 200 pages, it attempts to cover an ambitious amount of ground. This includes an introduction to HTML forms, the XPath required to understand XForms and even a little of the behemoth known as XML Schema. Unfortunately it overextends itself and leaves some of the chapters in a no-mans land, too superficial for beginners (Chapter 4 on XML Schema) and not enough meat for advanced readers (Chapter 11 Extending XForms.)

Two factors sank the book for me, firstly its lack of accessibility and the fact that it never managed to grab my attention, this is not a book you glance at and impulse buy! Secondly it lacks the one thing that could have made the subject matter spring to life; information on the current implementations. The author must have been placed in an awkward position when writing, the implementations are both thin on the ground and major adoption isn't looking too promising in the near future.

After this review was first submitted to the London PM mailing list an XML.com article called Ten Favorite XForms Engines was published by the books author. This article is exactly what I feel the book was missing, it introduces the current implementation options and shows how you can use the spec in the here and now. The article addresses some of my criticisms and is a high enough quality to warrant inclusion in the next edition.

I think this book was released before its time. The excellent (actually the highlight of the book in my view), chapter on combining XForms and CSS show that the author can bring the subject away from dry explanations of the spec. This combination of practical aspects and insights into the rational behind the decisions in the spec make it both an interesting read and contrasts the potential of the standard against the existing kludges and work arounds. This was the only part of the book that indicated the real concrete benefits provided by XForms beyond what can already be done with HTML forms when combined with some client and server side scripting.

Unfortunately the books lack of any discussion regarding existing applications and current implementation support leaves this as a lonely bright spot in the book. With some more display of the external support of the standard, either case studies or implementations, the book could have been the only one you need. As it stands its coverage is both accurate and quite comprehensive, albeit dry and rather academic. The second edition warrants watching for.

Update: This review is odd in that I've had a chance to look back over it before it was put online. After sending it to the list I asked for it to be left off the site for a while so I could update it based upon some extremely apt and thought provoking comments from Robin Berjon. In addition to pointing me at the article mentioned above and correcting me on the status of the spec, Robin didn't so much argue with me as point out the bits I didn't think about enough and raised the awkward questions I really hoped no one would think of. This review benefited a lot from his observations.

My view of the book is more positive than it was, it has aged gracefully and still covers the essentials. What's ironic is that the chapter I felt was missing, a section on implementation details, is the section that would have aged the most. My rating is slightly higher than last time: 6/10