I feel sure this is simple but after a day of reading code and googling I'm not 
getting it. 

I want to implement a resolveEntity callback on a simple SAX parser in libxml2 
so I can supply a DTD. I have the following

        xmlSAXHandlerPtr hdlrPtr = calloc( 1, sizeof( xmlSAXHandler ) );
        
        hdlrPtr->startDocument  = &startDocument;
        hdlrPtr->endDocument    = &endDocument;
        hdlrPtr->resolveEntity  = &resolveEntity;
                
        int result = xmlSAXUserParseMemory( hdlrPtr, NULL, buf, size );

my resolveEntity code is never called even when fed a document which has a 
SYSTEM entity in the DOCTYPE. The startDocument and endDocument callbacks are 
called. 

<!DOCTYPE testxml SYSTEM "TestXML.dtd">
...

Is this the wrong callback? I see the xmlParserOption enum which includes DTD 
loading and validation but there's nothing in the simple SAX interface which 
seems to use that, it appears to be a level further up, I'm just trying to use 
xmlSAXUserParseMemory() and calls at that level. Since the handler contains a 
resolveEntity function I would have expected it to be called. 

What basic misunderstanding do I have here? 
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
https://mail.gnome.org/mailman/listinfo/xml

Reply via email to