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