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]