[
Lists Home |
Date Index |
Thread Index
]
Also a good one would be XML::Twig module for Perl, which allows the
loading of only those nodes that are needed.
Ilya
> -----Original Message-----
> From: Nicolas Lehuen [mailto:nicolas.lehuen@ubicco.com]
> Sent: Friday, January 25, 2002 2:14 PM
> To: Clark C . Evans; Sterin, Ilya
> Cc: xml-dev@lists.xml.org
> Subject: Re: [xml-dev] Push and Pull?
>
>
> SAXDOMIX [1] could be classified as semi-random-access,
> push-flow-control-interface. It enables you to parse a
> document in the SAX model, and switch when desired to the DOM
> model to build partial trees that are pushed into a
> controller. It is semi-random access because you have full
> random access on the partial trees, but sequential access
> between them.
>
> dom4j also implements this idea, in a less generic way (but
> much more simple and easy to use), and calls it 'tree pruning' [2].
>
> This approach is quite interesting for XML document with a
> fixed-depth repetitive structure, such as a list of elements
> with a complex structure. It simplifies your code by making
> it possible to use tree accessors (imagine how it would be
> great with dom4j XPath accessors !), instead of having to
> deal with a stack and/or a state-machine, without forcing the
> whole document to be loaded in memory.
>
> Regards,
> Nicolas
>
>
> [1] http://www.devsphere.com/xml/saxdomix/
> [2]
> http://dom4j.org/faq.html#How%20does%20dom4j%20handle%20very%2
> 0large%20XML%2
> 0documents?
>
> N.B. the anchor contains a '?', so the link is not valid in
> Outlook Express. Sigh.
>
> ----- Original Message -----
> From: "Clark C . Evans" <cce@clarkevans.com>
> To: "Sterin, Ilya" <Isterin@ciber.com>
> Cc: <xml-dev@lists.xml.org>
> Sent: Friday, January 25, 2002 8:01 PM
> Subject: Re: [xml-dev] Push and Pull?
>
>
> > On Fri, Jan 25, 2002 at 11:29:51AM -0700, Sterin, Ilya wrote:
> > | >In SAX, the parser is has the
> > | >control loop and thus this makes SAX parsers easy to
> write. In DOM
> > | >the control loop is owned by the library's user.
> > |
> > | That said, it again brings us down to that SAX parsers all (most)
> > | follow the push model, and DOM based follow the pull model.
> >
> > DOM [1] uses a random-access, pull-flow-control interface.
> > SAX [2] uses a sequential-access, push-flow-control
> interface. XPP [3]
> > uses a sequential-access, pull-flow-control interface.
> >
> > | > I've only just begun playing with random access push models...
> > | > this is more or less events that can be replayed
> > |
> > | For the push model to be replayed, probably means that it
> will have
> > | to keep a parts in memory, or reparse all over again?
> >
> > Yes. To offer random access an interface will probably
> elect to keep
> > an in-memory representation. Although a random access
> interface could
> > be done over a database (see Tamino), etc.
> >
> > | This means that we are back to in memory parsers right,
> or is there
> > | some other concept behind it?
> >
> > Right. The examples above give you 3 permutations, one
> > could develop an interface which used random-access but
> > push-flow-control. I started to put together an interface for this
> > about a year back... it had a way for events
> > to be "re-played". I stopped after I didn't see an
> > obvious application of the technique.
> >
> > ;) Clark
> >
> > [1] http://www.w3.org/DOM/
> > [2] http://www.saxproject.org/
> > [1] http://www.extreme.indiana.edu/soap/xpp/
> >
> > --
> > Clark C. Evans Axista, Inc.
> > http://www.axista.com 800.926.5525
> > XCOLLA Collaborative Project Management Software
> >
> > -----------------------------------------------------------------
> > The xml-dev list is sponsored by XML.org <http://www.xml.org>, an
> > initiative of OASIS <http://www.oasis-open.org>
> >
> > The list archives are at http://lists.xml.org/archives/xml-dev/
> >
> > To subscribe or unsubscribe from this list use the subscription
> > manager: <http://lists.xml.org/ob/adm.pl>
> >
>
|