pike.ida.liu.se
Home>Projects>XML

Mission
*Make Pike the best language for the XML world.


Pike Conference Brainstorming Session
*Which problems have you found using XML in Pike? (speed, bugs...)
*Which features are missing in the current XML support? (XSLT, XPath, SAX, XQuery...)
*How can they be added?
*Continue working on Parser.XML?
*Take libraries like sablotron/expat or libxml/libxsl?
*Could (and should) an XSLT parser in one of those libraries be integrated with Parser.XML.DOM?
*Is there a chance to get the XSLT/XPath implementation from Roxen Platform?
*Hardship of implementing of W3C's sucking documentation which contains several white spots...
*Better to implement most things in C, as the current Pike implementation is not fast enough.
*Glue existing XML libs.
*Libs need to be evaluated.
*Need to be able to hook into any level of the xml parsing process...
*Skip XSLT and go straight to implementing XQuery.
*What will the Pike XML layer be used for?
*What are the most used operations done on XML data?
(inserting, deleting, moving nodes...)
*What else?
(XML output, ...)


roadmap
Currently all Pike modules concerning XML parsing and handling, except for Parser.HTML which can be forced into handling XML as well, depend on spider.XML. Since this module is not actively developed and is missing XML name space support it makes sense to replace it with a third party XML parser. The spider.XML interface is a callback centered interface that possibly maps well onto the SAX model. Hence the current development direction is to add a new XML parser with SAX interface and create a glue interface on SAX that behaves like spider.XML.

libxml seems to be the better choice.

further discussion
a few whiteboard captures related to the discussion:
*the relation of the various xml standards
*a scetch of the relation of the xml apis
*this graph places the xml library into pike. the encircled area shows the current pike xml implementation. libxml should replace spider.XML and provide a compatible interface to allow the current implementation that builds on spider.XML to continue to work. other APIs that libxml (and libxslt, gdome or other libs that build on libxml) provide may also be accessed directly allowing the current code to be phased out gradually


Implementation
Marek has stepped forward to start with the implementation of the glue to libxml2.

Coordination
Martin is trying to coordinate the effort.