HI, I am trying to use Xerces C++ 2.2 to validate xml against an external schema, and this external schema may be from memory. So the input pamameter is an InputSource object. So I have to use SAX2XMLReader::loadGrammar() to load the schema ( I can't use SAX2XMLReader::setProperty(XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation,...). The schema does not specify "targetNamespace", and the xml file does not specify namespace either. The following code can't pass validation with Xerces 2.2 library, but CAN pass with Xerces 2.8 library.
Can anybody tell me what I can do? I can only use Xerces C++2.2 library. SAX2XMLReader* parser = XMLReaderFactory::createXMLReader(); parser->setFeature(XMLUni::fgSAX2CoreValidation, true); parser->setFeature(XMLUni::fgXercesSchemaFullChecking, true); parser->setFeature(XMLUni::fgXercesUseCachedGrammarInParse, true); DefaultHandler handler; MySAX2Handler error_handler; parser->setContentHandler(&handler); parser->setErrorHandler(&error_handler); parser->setEntityResolver(&handler); parser->loadGrammar(*inputSchema*, Grammar::SchemaGrammarType, true); parser->parse(xmlFile.c_str());
