relation between DOM, SAX, and Schema?
david at megginson.com
david at megginson.com
Thu Nov 26 02:06:05 GMT 1998
Mark D. Anderson writes:
> This current thread regarding data vs. API prompts a few
> questions I've had for a while.
> 1. Is the difference between DOM and SAX one of programming
> style only (implementation efficiency aside)?
> http://www.megginson.com/SAX/event.html seems to say so.
> Or is there more to it than "trees vs. events": that SAX
> is in the end a driver API that must accomodate anything
> a low-level parser wants to offer, while in the end DOM
> is a least-common-denominator procedural model for browsers?
An event-based API is the equivalent of a depth-first, LR traversal of
a tree; a tree can be (re)generated from the events. The difference
is implementation efficiency, but that's a very big one: an
event-based API makes it possible to process a very large document
using relatively constant resources, but makes arbitrary queries and
transformations difficult; a tree-based API makes queries and
transformations easy, but resource usage increases with the size of
It is possible to design a tree-based interface that allows partial
processing before the entire tree has been built, but in general,
event-based APIs do a better job of that. For streaming information
(say, from a real-time news feed or an e-commerce server), event-based
APIs are probably the only workable choice.
> 2. How does/will metadata affect either?
> Once the many XML-based schema proposals (DCD, XSchema, etc.)
> are consolidated, when I parse some XML with respect to a schema,
> I would like my annotated tree (grove, whatever) to be able to tell me
> meta-info about the nodes using that schema (what is its default, is
> this optional, what is the description string for this data type
> or this element type, etc.). I would like to use the very same API
> to ask questions not just about element values, but about the
> element metadata as well. It seems that right now neither
> DOM nor SAX is ready for this?
As long as the schema is an XML document (and all current proposals
are), then you can load the document into a separate DOM tree or read
it as a separate event stream. There will almost certainly be
libraries that will do this for you automatically and let you ask
queries (what is the maximum integer value of a <degrees> element,
SAX could also handle this with an additional metadata event interface
without disrupting existing implementations, but the library approach
seems more flexible.
All the best,
David Megginson david at megginson.com
xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)
More information about the Xml-dev