[xsd-users] How to validate XML using a in-memory schema
Raul Huertas
raulh39 at tid.es
Fri Sep 29 05:00:24 EDT 2006
It works!
However, I need to make some minor changes to your suggestions:
First check the "How do I parse an XML instance to a Xerces-C++ DOM
document?" question on the C++/Tree Wiki FAQ[1]; it has the code that
does the XML to DOM parsing. You will need to add the following
includes at the beginning:
#include <xercesc/framework/MemBufInputSource.hpp>
#include <xsd/cxx/xml/string.hxx>
also:
#include <xercesc/validators/common/Grammar.hpp>
And the following code after the "Enable/Disable validation" lines:
std::string my_xsd ="<xs:schema ....>...";
const XMLByte*bytes=reinterpret_cast<const XMLByte*>(my_xsd.c_str());
MemBufInputSource mis (bytes, my_xsd.size (), "/schema.xsd");
Wrapper4InputSource wmis (&mis, false);
parser->loadGrammar (wmis, Grammar::SchemaGrammarType, true);
parser->setFeature (XMLUni::fgXercesUseCachedGrammarInParse, true);
void* id=(void*)([1]"file:///schema.xsd");
parser->setProperty (
XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation,
id
);
I haven't actually tested this code so let
me know whether it works or not ;-).
Yes, it works, thank you very much.
Regards,
Raul.
References
1. file://localhost/schema.xsd
More information about the xsd-users
mailing list