setDocumentLocator in validating parser (xmlproc)

James Kew james.kew at gmail.com
Sat Mar 19 00:02:05 CET 2005


"Cees Wesseling" <cees at pcraster.nl> wrote in message 
news:6b22838c.0503181241.705ee9e2 at posting.google.com...
> it seems that xmlproc, the default Validating parser, in my setup does
> not call back to setDocumentLocator. Is there anyway to get a locator
> in my handler?

It's a known bug with a simple patch -- I don't know why it wasn't fixed in 
PyXML 0.8.4.
http://sourceforge.net/tracker/?func=detail&aid=835638&group_id=6473&atid=106473

I had the same problem a while ago; I ended up doing a monkeypatch to 
xml.sax.drivers2.drv_xmlproc to add the missing call:

import xml.sax.drivers2.drv_xmlproc

# Override the set_locator method.
def set_locator(self, locator):
    # Existing code.
    self._locator = locator
    # ...but also call the ContentHandler.
    # drv_xmlproc already implements the Locator interface.
    self._cont_handler.setDocumentLocator(self)

setattr(xml.sax.drivers2.drv_xmlproc.XmlprocDriver, "set_locator", 
set_locator)

HTH,

James Kew
http://jameskew.blogspot.com





More information about the Python-list mailing list