On Fri, 18 May 2012 18:54:14 +0200
Manfred Lotz <manfred.l...@arcor.de> wrote:

> Hi there,
> I was playing with SAX2Count and among others I tried the following 2 
> test cases where I took the xml stuff from the samples as well.
> 
> 1. I have a personal.xml where I changed the DTD name to something
> which does not exist.
> 
> When now calling: SAX2Count -v=never personal.xml 
> I get
> 
> Fatal Error at file ....
>   Message: unable to open DTD document ...
> 
> 2. I have a personal-schema.xml where I changed the schema name to
> something not existing.
> 
> When now calling: SAX2Count -v=never personal-schema.xml
> I get
> 
> Warning at file...
>    Message: unable to open primary document entity ....
> 
> 
> Question: Why do I get a warning in case 2 but a fatal erros in case
> 1? What could I do to prevent the DTD not found message to be fatal.
> 
> 
> 

Well I added this in the error handler which does work:


void SAX2CountHandlers::fatalError(const SAXParseException& e) {
        const XMLCh *emsg = e.getMessage();

    const XMLCh *dtdmsg = XMLString::transcode("unable to open DTD
    document");

        // We want to make it a warning if dtd will not be found
        if ( XMLString::compareString(emsg, dtdmsg) ) {
          warning(e);
          return;
        }
    fSawErrors = true;
    XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " <<
        StrX(e.getSystemId()) << ", line " << e.getLineNumber()
                              << ", char " << e.getColumnNumber()
                              << "\n  Message: " <<
        StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; }           


However, I could imagine there is something better I could do.

-- 
Manfred


Reply via email to