Как включить функцию проверки cta-full-xpath в xerces c? - PullRequest
0 голосов
/ 09 октября 2018

Я использую xerces c ++ 3.2.0 для проверки XML на соответствие XSD 1.1

Согласно его документам , 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);

Теперь, когда я запускаю свой код, он вылетает:

Необработанное исключение в 0xXXXXXXXX в XXXXXX.exe: исключение Microsoft C ++: xercesc_3_2 :: SAXNotRecognizedException в расположении памяти 0xXXXXXXXX.

Он получает тот же результат, что и при запуске:

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-проверяяе .почему?

...