Old but good
I don't use XML very often. When I come back to it, it's like learning XML all over again. That's why I like Megginson's book. It's clear, detailed and gives all the basics needed for competent, flexible data design.
I said "data design," not "document design" as some might have expected. Although XML grew out of SGML, a document markup system, it's used for lots more than just text formatting. That's why Megginson focusess so heavily on the DTD, the "data type definition" for any XML application. Any one document uses XML commands to organize a specific set of data, and the DTD specifies a well-formed organization. It's the grammar of the document, like a database's schema. It's what defines the principles used to organize the data. Best of all, Megginson describes DTDs in terms of five well-known and freely available DTDs.
This book is old by internet standards, however. DTDs are being supplanted by XML schemas, which are not mentioned. Conversions between formats are now managed by XSLT most often, not "architectural forms." The DocBook standard has moved to the Oasis consortium (oasis-open.org). The XML standards family has grown, but this book is locked to the time in which it was written.
Even then, I had one real complaint about this book. Megginson took great care to distinguish XML from its SGML parent, giving detailed descriptions of SGML features not present in XML. It was sometimes confusing to read around the discussions of features that aren't there. If necessary at all, the information would have been better placed in footnotes, appendices, or some text typographically set off from the main discussion.
I'll have to replace this book sooner or later, but I haven't found anything that discusses newer XML usages and still meets this standard of clarity. In the mean time, I can keep puttering along with this book - it's old, but hardly obsolete.
//wiredweird
For authors of dtds.
This is an excellent book for someone who is responsible for creating and maintaining dtds for large projects. The purpose of the book is not to teach the beginner what a dtd is. Rather it is meant to teach you to tell the difference between good dtd design and bad. The emphasis is on dtds that are for complex documents rather than those that are for transmission of database records. None the less, some of the material applies to both types of dtds. The author does not tell you what to do. Rather he tells you what issues you need to consider. There is a section that warns you of the problems that may arrise during the maintenance phase of a project. When a change is made to a dtd, there may be a backlog of legacy documents that were valid according to the old dtd but are no longer valid with the new one. I think this section of the book is a bit too methodical and long-winded. Even so the issue is crucial and needs some treatment.
Excellent reference on DTDs
This is not a book for beginners. There's a brief introduction to XML, but you need a fairly good grounding there before picking this book up. The author uses five industrial-strength model DTDs for documents as a basis for discussing the analysis and design of DTDs. These are briefly introduced, compared and contrasted. HTML is one of the five, not so much because it's a good example, but because it's widely known and used. The heart of the book is devoted to principles for analysis and design. These focus on the user -- ease of learning, of use, and of processing. Some desirable features tend to conflict, for example, there's a trade-off between simplicity and providing sufficient features to meet authors needs. Throughout the model DTDs are used to illustrate principled (or unprincipled) desgin. All in all, the book provides a good basis for reading, writing and understanding non-trivial, real-world DTDs.
Almost the perfect book about DTDs
The best book available... it covers everything you need to know about DTDs.I guess this book may have originated as an SGML book so has examples oriented more towards SGML authors. These examples are not oriented towards Internet Programmers.
Still, the author did a pretty good job at seperating XML and SGML specific details.
Simply put, If you need to design a DTD then you need this book.
A definite must for dtd authors
This book delivers exactly what it says it will: the _whole_ gist on the technical aspects of drafting a Document Type Definition and on the theoretical aspects of defining an optimal way of structuring information. The author dominates his subject and his discussion on the fine points of information structuring is clever and challenging. The only thing that is keeping me from giving it an otherwise well-deserved five-star is the utterly meagre index, a surprising fact in such a book!