add DOM interface support to metacat
The current metacat database uses our proprietary API for accessing XML
documents. It uses a memory-resident model, where each document is
reconstructed from the database into a memory resident version, then returned to
the client. This is inefficient. A more standards compliant approach would be
to implement the DOM Level 2 interfaces on our persistent storage so that one
could query and retrieve parts of the document from the database as needed.
This "persistent DOM" would mean that applications could process large XML
documents in a small memory footprint, because only the parts of the document
needed at any given time would be in memory. The tradeoff would be performance,
in that a new database query would need to be issued for most DOM API calls.
Thus, we should keep our current API for downloading a document all at once as
well (and maybe consider being able to fire a series of SAX events as an
alternative to our current API).