[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

relation between DOM, SAX, and Schema?

  • From: <david@m...>
  • To: <xml-dev@i...>
  • Date: Wed, 25 Nov 1998 21:04:30 -0500 (EST)

difference between dom and sax
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,

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@m...

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@i...
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/
To (un)subscribe, mailto:majordomo@i... the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo@i... the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa@i...)


Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
First Name
Last Name
Subscribe in XML format
RSS 2.0
Atom 0.3

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.

Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.