Xerces-C++ Schema validation

N

Nuno

Hello,

I'm looking for a way of validating/parsing the xsd file (schema), i
only been able of validating the xml file with the corresponding
schema, but what i want is only validate the xsd file, to check if the
schema is valid.

I'm using Xerces-C++ and the only thing that i found is a way of
parsing the xml file with the xml schema like this:

SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
...
parser->loadGrammar(xsdFile.c_str(), Grammar::SchemaGrammarType,
true);
parser->setFeature(XMLUni::fgXercesUseCachedGrammarInParse, true);
parser->parse(xmlFile.c_str());

But when i try this with only the xsd file
(ex:parser->parse(xsdFile.c_str());) the parser gives me these errors:
ERR: Unknown element 'xs:element'
ERR: Attribute 'ref' is not declared for element 'xs:element'
ERR: Unknown element 'xs:schema'
ERR: Attribute '{http://www.w3.org/2000/xmlns/}xs' is not declared for
element 'xs:schema'
ERR: Unknown element 'xs:element'
ERR: Attribute 'name' is not declared

My question is:
is there any way in Xerces-C++ to validate one xsd file only, not the
xml file against it's schema?

Thanks
Nuno
 
Joined
May 16, 2011
Messages
3
Reaction score
0
Hi Nuno,

I have a problem where i want to validate my xml file against xsd both located at my current working directory. Please have t look to the code snippet below:

XercesDOMParser *domParser = new XercesDOMParser;
LocalFileInputSource fin(X("./sample.xsd"));

domParser->setExternalSchemaLocation(X("./sample.xsd"));

Grammar *gmr = domParser->loadGrammar(fin, Grammar::SchemaGrammarType);

if (gmr == NULL)
{
cerr << "couldn't load schema" << endl;
//return false;
}

ParserErrorHandler errorHandler; //Derived from SetErrorhandler Class

domParser->setErrorHandler(&errorHandler);
domParser->setValidationScheme(XercesDOMParser::Val_Auto);
domParser->setDoNamespaces(true);
domParser->setDoSchema(true);
domParser->setValidationConstraintFatal(true);


domParser->parse("./sample.xml");
cerr << domParser->getErrorCount() << endl;
if (domParser->getErrorCount() == 0)
cerr << "XML file validated against the schema successfully" << endl;
else
cerr << "XML file doesn't conform to the schema" << endl;

when I try to execute above code, i get "couldn't load schema" error message.
I am not getting the exact point of problem here, Is this the way we use DOM Parser to validate xml?
Seems that you have already implemented this logic, please help in getting out of this error.
It's urgent.
Thanks a lot in advance.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,150
Members
46,697
Latest member
AugustNabo

Latest Threads

Top