如何在Xerces C中启用cta-full-xpath-checking功能?

时间:2018-10-09 20:05:24

标签: c++ xpath xsd xerces xerces-c

我正在使用xerces c ++ 3.2.0来针对XSD 1.1验证XML

根据其docs,xerces使用XPath 2.0的子集而不是完整的XPath检查,因此我需要“启用某些xerces功能”

此功能:

http://apache.org/xml/features/validation/cta-full-xpath-checking

我在XMLUni中找不到它,所以我自己创建了它:

parser = XMLReaderFactory::createXMLReader();
parser->setFeature(L"http://apache.org/xml/features/validation/cta-full-xpath-checking", true);

现在,当我运行我的代码时,它会崩溃:

  

XXXXXX.exe中0xXXXXXXXX处未处理的异常:Microsoft C ++异常:内存位置0xXXXXXXXX处xercesc_3_2 :: SAXNotRecognizedException。

它得到的结果与我运行时相同:

parser = XMLReaderFactory::createXMLReader();
parser->setFeature(L"banana gun!", true);

如果我注释掉最后一行,它将起作用,但是不使用完整的XPath检查(即,没有断言)

我在这里想念什么?


请注意,如果我以这种方式设置其他功能(例如,模式全面检查)

parser = XMLReaderFactory::createXMLReader();
parser->setFeature(L"http://apache.org/xml/features/validation/schema-full-checking", true);

它起作用,结果与:

parser = XMLReaderFactory::createXMLReader();
parser->setFeature(XMLUni::fgXercesSchemaFullChecking, true);

,但不具有cta-full-xpath-checking功能。为什么?

0 个答案:

没有答案