Hello!

SAX2Counter.exe which is included in XERCES already performs a check against an 
xsd. Maybe this is a good starting point.

Sincerely,
Daniel

Von: Franck Houssen [mailto:f...@hotmail.com]
Gesendet: Montag, 19. März 2012 13:29
An: c-users@xerces.apache.org
Betreff: How to validate a xml file that refers to an xsd file using sax parser 
provided by Xerces-C++ ?

Hello,

I try without success to validate a xml file that refers to an xsd file using 
sax parser provided by Xerces-C++ ?

The following code does not work ( parsing a not well-formed xml will report 
error as expected, but an invalid xml - with respect to xsd - will not report 
error ) :
XMLPlatformUtils::Initialize ();
SAXParser * pParser = new SAXParser ();
if ( pParser )
{
  pParser -> setDoSchema ( true );
  pParser -> setLoadSchema ( true );
  pParser -> setExternalNoNamespaceSchemaLocation ( xsdFile.c_str () );
  pParser -> setValidationScheme ( SAXParser::Val_Auto );
  pParser -> setValidationSchemaFullChecking ( true );
  pParser -> setValidationConstraintFatal ( true );

  SaxParserHandler handler; // SaxParserHandler derives from HandlerBase
  pParser -> setDocumentHandler ( &handler );
  pParser -> setErrorHandler ( &handler );
  pParser -> parse ( xmlFile.c_str () );

  delete pParser; pParser = NULL;
}
XMLPlatformUtils::Terminate ();

I want the parse to stop if the xml is not compliant with the xsd. Bonus if I 
don't have to handle "by hand" the xsd ( setExternalNoNamespaceSchemaLocation ) 
: is there a way to tell the parser to validate automatically the xml with xsd 
in case xml refers to a xsd ?

Can somebody help me on that ?

FH

Reply via email to