On Sat, May 05, 2007 at 10:40:22PM +0200, Joachim Zobel wrote: > Am Samstag, den 05.05.2007, 15:28 -0400 schrieb Daniel Veillard: > > > if you're calling the callbacks from libxml2 just to build a tree it's > > bad, either use one of the parsers or build the tree with the tree API. > > Other uses are not suported, in the sense that I may break randomly > > how the callback works. > > > I don't know why you are doing this but this sounds extremely fishy, > > would you care to explain, because I'm trying to guess and mostly I see > > only bad reasons. > > THis is IMHO necessarily so. Apache has so called filters that can > modify the outgoing contents. mod_xml2 is such a filter. It runs the > libxml2 parser to turn a stream of text buffers (called buckets by > apache) into a stream of sax events (called sax buckets by me). Other > filters can then modify these sax events. The sax buckets automatically > turn back into text when they are treated as such, so no filter is > necessary on the network end. > > One of such filter is mod_i18n. It checks the stream of sax events it > passes until it detects a certain attribute and then starts building a > small partial tree, which is modified and then turned back into sax > events.
But mod_i18n should know it is operating on top of libxml2 parser, so why doesn't it use the libxml2 allocation routines ? The SAX interfaces at the C level are really parser specific, and libxml2 SAX2 have been heavilly modified to improve performances, so I don't see why it would use a different allocator then. > The point with this is that it stays streaming as much as possible and > it is also possible to do tree manipulation. It is in many cases a > usable workaround for the sax/dom dilemma and I am already thinking > about using the same trick for another module. > > It does however require to call the SAX2 callbacks. That sounds quite complex, though there is certainly good reasons for this :-) Daniel -- Red Hat Virtualization group http://redhat.com/virtualization/ Daniel Veillard | virtualization library http://libvirt.org/ [EMAIL PROTECTED] | libxml GNOME XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/ _______________________________________________ xml mailing list, project page http://xmlsoft.org/ [email protected] http://mail.gnome.org/mailman/listinfo/xml
