You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-users@xalan.apache.org by Robin Aly <ro...@aly.de> on 2004/07/28 10:43:15 UTC
Validating against XML Schema
Hello All,
I want to validate a xml Document against a XML Schema on the local
file system. I construct the parser as follows. But I don't get a error
message on a defenetly incorrect xml file. What am I doing wrong?
Thanks and Regards
Robin
XercesDOMParser* parser = new XercesDOMParser();
parser->setValidationScheme(XercesDOMParser::Val_Always);
parser->setValidationSchemaFullChecking(true);
parser->setDoNamespaces(true);
parser->setDoSchema(true);
parser->setExternalSchemaLocation("http://www.robin.aly.de/namespaces/workinghours
working-hours.xsd");
parser->setExitOnFirstFatalError(true); // exception si le schema n'est
pas trouve
parser->setValidationConstraintFatal(true);
ErrorHandler* errHandler = (ErrorHandler*) new HandlerBase();
parser->setErrorHandler(errHandler);
/* end if initialization */
try {
// reading and parsing the document
cout<<"reading "<<argv[1]<<endl;
parser->parse(argv[1]);
DOMDocument* document = parser->getDocument();
if (document) {
DOMElement* root = document->getDocumentElement();// This is what we pass
to TraverserSchema
cout<<"NO ERROR"<<endl;
}
else {
cout<<"ERROR"<<endl;
}
}
// catching of the exceptions possibly throws by the DOM parser
catch (const XMLException& toCatch) {
char* message = XMLString::transcode(toCatch.getMessage());
cout << "Exception message is: \n"
<< message << "\n";
XMLString::release(&message);
return -1;
}
catch (const DOMException& toCatch) {
char* message = XMLString::transcode(toCatch.msg);
cout << "Exception message is: \n"
<< message << "\n";
XMLString::release(&message);
return -1;
}
catch (...) {
cerr<<"Other Exception"<<endl;
return 1;
}
--
Robin Aly (robin@aly.de)
Parkring 23a
68159 Mannheim
Telefon: 0621 159 70 45
Fax: +49 621 159 60 93