If you compile libxml2 with "--without-docb" option then
XPath child axis traversal is broken due to the following
ifdef in the xmlXPathNextDescendantOrSelfElemParent()
function:

        while (cur != NULL) {
            switch (cur->type) {
                case XML_ELEMENT_NODE:
                /* TODO: OK to have XInclude here? */
                case XML_XINCLUDE_START:
                case XML_DOCUMENT_FRAG_NODE:            
                    if (cur != start)
                        return(cur);
                    if (cur->children != NULL) {
                        cur = cur->children;
                        continue;
                    }
                    break;
#ifdef LIBXML_DOCB_ENABLED
                /* Not sure if we need those here. */
                case XML_DOCUMENT_NODE:
                case XML_DOCB_DOCUMENT_NODE:
#endif
                case XML_HTML_DOCUMENT_NODE:
                    if (cur != start)
                        return(cur);
                    return(xmlDocGetRootElement((xmlDocPtr) cur));
                default:
                    break;
            }   

It seems that the right thing to do is to simply move the
"case XML_DOCUMENT_NODE:" out of this particular ifdef but
I am not familiar enough with DOCB stuff to tell the consequences
of this.

Best,
Aleksey



_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@gnome.org
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to