Hello!
I`ve a little problem with
setExternalSchemaLocation(setExternalNoNamespaceSchemaLocation) function from
XalanSourceTreeParserLiaison class.
I'm using xalan-C++ for doing some actions with some set of xml-files.
Some of these files must validating against schema, which location specify in
config file ("external" schema). Other files must be validating against
schema, which location specify in parsed xml file (via xsi:shemaLocation
attribute, "internal" schema)
How can I switch between these schema location ("external"/"internal")? I
mean, if I use
theLiaison->setExternalNoNamespaceSchemaLocation("blah.xsd")
for file (before parsing) foo.xml, then all next parsing files bar1.xml,
bar2.xml... bar666.xml etc. will be validating against this "external" schema
(blah.xsd), but it must validate against "internal" schema. How "turn off"
external schema validation?
For example:
class foo
{
/*...*/
//parse xml file
XalanDocument*bar(const char*);
//check what kind of validation we need ("external" or "internal")
bool isNeedExternalSchemaLocation(const char*);
/*...*/
XalanSourceTreeParserLiaison*m_Liaison;
//externalSchemaLocation URI
const XalnDOMChar*extSchema;
}
XalanDocument*foo::bar(const char*file)
{
const LocalFileInputSource inpsource(XalanDOMString(file).c_str());
if(isNeedExternalSchemaLocation(file))
//turn on "external" schema location
m_Liaison->setExternalNoNamespaceSchemaLocation(extSchema);
else
//turn on "internal" schemaLocation (or "turn off"
externalSchemaLocation) ... BUT HOW???
return m_Liaison->parseXMLStream(inpsource);
}
I search answer for this question on xalan-c-users, xerces-c-users lists, also
i`m trying look in source code, but without results(( Can you help me or
suggest direction?
Thanks in advance)
PS Sorry for my English )