This specification gives a rather thorough description of the syntax rules that make a data object into an XML document. It uses the XML processor idea, introduced here, to help explain some of this syntax, and to constrain some aspects of the behavior of programs that process XML documents.
However, the specification does not define an Application Programming Interface which an application can use for interaction with an XML Processor. In fact, one of the specification's weak points is the discussion of exactly what information an application can expect to receive from an XML document.
While this shortcoming is acknowledged, it has not caused me any great loss of sleep. I have seen immense amounts of work invested by very smart people in an attempt to create truly interoperable APIs; examples would include SQL, Posix, and the X Window System. Achieving real interoperability at the API level has proved so difficult in practice as to be open to question as a design goal. Furthermore, it is hard to be sure of coming up with an API that is of equal utility for all aspects of interacting with an XML document; the needs of an authoring system, of a browser, and of a full-text indexer are dramatically different.
The real saving grace is the syntax. It is commonplace, even fashionable, to belittle the importance of syntax. But a document format which can unambiguously express complex hierarchical data structures, and which can reliably be parsed in a variety of computing environments, is in itself something of a rare and special achievement. If this is the only level of interoperability that XML ever achieves, it will still prove to have been a significant step forward in the history of distributed computing.
Back-link to specCopyright © 1998, Tim Bray. All rights reserved.