Я пытаюсь найти решение для проверки XML. Я использую libxml2 (код C). Нормальная проверка корректно работает, когда DTD представляет собой физический файл. Напротив, у меня DTD-файл загружен в память в качестве буфера. Буферы памяти были сгенерированы на этапе компиляции из четырех файлов DTD. Существует базовый файл DTD, и каждый следующий файл DTD включает в себя предыдущий файл как объект. Проверка XML для базового файла работает просто отлично, так как у него нет объявленных сущностей. Однако следующий файл включает в себя объект предыдущего файла. Первоначально, когда все четыре файла DTD были подготовлены, предполагалось, что все они будут находиться в одном каталоге, и использовался системный объект. Когда все файлы загружены в память как буферы, эти объекты не могут быть разрешены. Каков будет лучший подход здесь? Я думал заменить сущности, используя API (если есть). Пожалуйста посоветуй. Спасибо.
Дополнительная информация.
File1.dtd
обычный файл DTD НЕТ сущностей
File2.dtd
содержит:
<!ENTITY % file1 SYSTEM "File1.dtd">
%file1;
Я портирую с подхода "анализ из файла" на "анализ из буфера".
Парсер не понимает "% file1;"