I can't seem to get the validation with a dtd to work.  I am probably
missing something but I don't know what.

My DTD is:

<!ELEMENT A ( B, C ) >
<!ELEMENT B ( #PCDATA ) >
<!ELEMENT C ( #PCDATA ) >

My XML file is:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SCRIPT SYSTEM "jj.dtd" >
<A>
     <C>TEST</C>
</A>

I want to fail since the B tag is missing.

My C++ code is:

#include <iostream.h>
#include "dom/DOM.hpp"
#include "dom/DOM_NodeList.hpp"
#include "dom/DOMString.hpp"
#include "dom/DOM_DOMException.hpp"
#include "parsers/DOMParser.hpp"
#include "util/PlatformUtils.hpp"
#include "sax/ErrorHandler.hpp"
#include "sax/HandlerBase.hpp"

int
main( int ac, char* av[] )
{
     if ( ac != 2 ){
          cerr << "usage: " << av[0] << " xml file" << endl;
          return 1;
     }

     try
     {
          XMLPlatformUtils::Initialize();
     }
     catch( const XMLException& e )
     {
          cout << "Error during initialization! :\n"
               << e.getMessage() << "\n";
          return 1;
     }

     DOMParser parser;
     parser.setValidationScheme(DOMParser::Val_Always);
     ErrorHandler* errHandler = (ErrorHandler*) new HandlerBase();
     parser.setErrorHandler(errHandler);

     try
     {
          parser.parse( av[1] );
     }
     catch( const XMLException& e )
     {
          cerr << "\nFile not found: '" << av[1] << "'\n"
               << "Exception message is: \n"
               << XMLString::transcode(e.getMessage()) << "\n" ;
          XMLPlatformUtils::Terminate();
          return 1;
     }
     catch (const SAXParseException& e)
     {
          cerr << "An SAXParseException error occured during parsing,
got SAXParseException " << XMLString::transcode(e.getMessage()) << "\n"
;
          XMLPlatformUtils::Terminate();
          return 1;
     }
     catch (...)
     {
          cerr << "\nUnexpected exception during parsing: '" << av[1] <<
"'\n";
          XMLPlatformUtils::Terminate();
          return 1;
     }

     cout << "Parse successful!" << endl;

     XMLPlatformUtils::Terminate();

     return 0;
}




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to