Как проанализировать файл XSD с RapidXML - PullRequest
0 голосов
/ 13 февраля 2019

Имеет ли RapidXML возможность проверять / анализировать XML-файл со связанной с ним схемой, то есть XSD-файл?Я исходил из того, что синтаксический анализатор XML будет иметь возможность делать оба конгруэнтно.Если нет, почему считается ненужным проверять / анализировать связанную схему?Я проверил документацию RapidXML и не нашел упоминания о схеме или xsd.

В настоящее время я анализирую XML-файлы likeso:

  rapidxml::file<> xmlFile("BeerLog.xml");
  rapidxml::xml_document<> doc;
  doc.parse<0>(xmlFile.data());

Следующий sudo-код может дать вам лучшее представление о том, что яищу:

  rapidxml::file<> xmlFile("BeerLog.xml", "BeerLog.xsd");  

или даже:

  rapidxml::file<> xmlFile("BeerLog.xml");    
  rapidxml::file<> xsdFile("BeerLog.xsd");
  rapidxml::xml_document<> doc;
  doc.parse_with_schema<0>(xsdFile.data(), xmlFile.data());

1 Ответ

0 голосов
/ 14 февраля 2019

Ваше впечатление неверное, доступ к содержимому XML и проверка по схеме - это совершенно разные темы, даже если первое полезно для второго.Особенно легковесные и быстрые парсеры не поддерживают валидацию, и быстрый взгляд на документацию показывает это:

Соответствие W3C.RapidXml не является синтаксическим анализатором, совместимым с W3C, в первую очередь потому, что он игнорирует объявления DOCTYPE

Учитывая также, что существуют довольно разные языки схем (XSD, RNG, DTD, ...), даже поддержка одного не будетэто то, что вы хотели бы.

Вы также должны принять во внимание, что существует множество XML-файлов, которые просто правильно сформированы и не соответствуют какой-либо схеме - кто-то может захотеть обработатьих все же.

...