[XML-SIG] Reconsidering the DOM AP

Ken MacLeod ken@bitsko.slc.ut.us
29 Jun 2000 18:54:08 -0500


Sean McGrath <sean@digitome.com> writes:

> [Ken MacLeod]
> 
> >Looking at Pyxie.py, I
> >don't see why Pyxie could not have used Python SAX and DOM and have
> >been just as simple.  As far as I can tell, Pyxie is merely different.
> 
> >This is not an argument against Pyxie's convenience functions which
> >make Pyxie so easy to use and what draw so many people to it!  My
> >concern is that this could have easily been done _with_ SAX and DOM
> >and avoided unnecessary incompatibility.
> 
> For the event handling stuff [...] the convenience of event handlers
> named after element type names.

> The big differences come in the tree process stuff which
> is what I personally use day in day out.
> 
> 1)Pyxie uses a "cursor" location metaphor and a
> cut/paste approach [...]

> 2)Pyxie blends the ease of use of tree-oriented processing
> with the memory efficiency of event-oriented processing
> using a sparse-tree facility. [...]

> 3)Pyxie allows you to mix logical navigation with
> parsing and content insertion in a way I find
> very useful in my day to day work. [...]

> 4) Pyxie is unashamedly focused on the logical
> model of XML documents. It does not concern itself
> with general entity references, DTD info etc. etc.

Considering the amount of effort already in this module, it would
definitely be argumentative of me to try to "convince" you that this
could be done, possibly just as easily to use, over SAX and DOM (using
pulldom, a SAX filter, or similar, for example).

What I would do is ask that the next time someone is looking for a
good module to write would be to take a look at pulldom
(SAX+[mini]DOM) and consider writing a SAX filter that has all the
Pyxie value-add.  Effectively, this would be Pyxie but using SAX/DOM.

In this way, we could wait until there's viable proof that it would
work as simply and then we could look at merging these very valuable
ideas back together in to a more cohesive whole.

  -- Ken