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
the document.

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,
etc.).

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

-- 
David Megginson                 david at megginson.com
           http://www.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;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)




More information about the Xml-dev mailing list