我正在尝试提出XML验证的解决方案。我正在使用libxml2(C代码)。当DTD是物理文件时,正常验证就可以正常工作。相比之下,我将DTD文件作为缓冲区加载到内存中。内存缓冲区是在编译步骤期间从四个DTD文件生成的。有一个基本的DTD文件,每个下一个DTD文件都将上一个DTD文件作为一个实体。针对基本文件的XML验证工作得很好,因为它没有声明的实体。但是,下一个文件在前一个文件上包含一个实体。最初,当准备好所有四个DTD文件时,假定所有文件都在同一目录中,并且使用了系统实体。当所有文件作为缓冲区加载到内存时,这些实体将无法解析。最好的方法是什么?我正在考虑使用API替换实体(如果有)。请指教。谢谢。
其他信息。 File1.dtd 常规DTD文件NO实体 File2.dtd 包含:
<!ENTITY % file1 SYSTEM "File1.dtd">
%file1;
我正在从“从文件解析”方法移植到“从缓冲区解析”。 解析器不理解'%file1;'。