Switching between DOM and SAX

david at megginson.com david at megginson.com
Mon Sep 21 04:42:33 BST 1998


Don Park writes:

 > >Sure, but in SAX (event stream) to DOM conversion, you need to
 > >capture *all* the SAX events if you are to be able to satisfy the
 > >guarantees that the DOM model makes.  You can't just decided to
 > >start DOMifying at some random element, because by then you have
 > >forgotten what the parent element is.  You either have to reify
 > >the SAX events and store them as such, or else create the DOM
 > >Nodes on the fly whether the user claims to want them or not.
 > 
 > 
 > Right.  Lazy evaluation is not possible when building DOM using SAX.

The problem is really with the XML parsing model as much as with SAX
-- XML is designed to be parsed only from the top down, though in the
past I have suggested ways that the parsing could be parallelised.  It 
is easy to imagine lazy evaluation on top of a database, but very hard 
to imagine it from a physical XML document.

That said, I can think of two possible solutions to the
lazy-evaluation problem, including the one which Don has already
named:

1. Cache the event stream in a compact format.

2. Reparse the document on demand (i.e. when the user climbs out of
   the subtree and/or tries to do something with the document node) -- 
   in this case, you need only store the treeloc of the element.

The first solution is still greedy, but would be reasonably fast and
less resource-hungry than a naive DOM implementation.  The second
solution could be very slow when someone tried to climb out of a
subtree, but it would not make great demands on memory.

Essentially, you should choose #1 if you think that users are likely
to need to climb out of the subtree fairly often, and #2 if you think
that it will be rare.


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