relation between DOM, SAX, and Schema?
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@m... http://www.megginson.com/ 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...)
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format