Я пытаюсь проверить XML с помощью схемы XSD в Qt.
XML и XSD, по-видимому, действительны, согласно Средство проверки схемы W3C .
Это код, в котором я выполняю проверки:
bool XMLFOMParser::isWellFormed(const std::string& text) const {
QXmlSchema schema;
bool ok = schema.load(QByteArray(SOMSchema_xsd));
std::cout<< SOMSchema_xsd << std::endl << "--------------" << std::endl;
std::cout << text << std::endl << "---------------" << std::endl;
QXmlSchemaValidator validator(schema);
bool result = validator.validate(QByteArray(text.data()));
return result;
}
text
содержит текст XML, который должен быть проверен.SOMSchema_xsd
содержит текст схемы xsd.
Когда я загружаю схему в QXmlSchema
, переменная ok
имеет значение true, а с cout
я вижу, что и схема, и xml загружены правильно.Я вижу их полностью.
Когда я выполняю проверку, result
ложно, и в консоли я вижу следующие сообщения:
Error XSDError in http://standards.ieee.org/downloads/1516/1516.2-2010/IEEE1516-DIF-2010.xsd, at line 1, column 0: Premature end of document.
Error XSDError in file:///my/program.exe, at line 2, column 251: Loaded schema file is invalid.
Я не знаю, почему я 'я получаю эти ошибки, поскольку:
- Файлы загружаются правильно в классы (я вижу их с помощью
cout
); QXmlSchema
не дает мне ошибок, когда xsdзагружено - Сайт W3C говорит мне, что XML проверяется без проблем.
Что я делаю не так?