【发布时间】:2014-12-08 07:16:15
【问题描述】:
我正在使用 Python 中的 LXML 来验证具有匹配 XSD 的 XML。
该 XSD 导入了第二个“通用”XSD,其中包括一些通用定义。
问题是这些 XSD 在本地不作为文件存在。它们只是我保存在内存中的缓冲区,但是当 XSD 执行 <import> 或 <redefine> 时,它会在文件系统的当前目录中查找导入的文件。
有没有办法让它不这样做?可以提前提供进口的XSD?
LXML 使用 libxml2 和 libxslt 进行解析。
导入的 XSD 文件的打开源于 libxml2 代码的深处,并且不经过 python 的文件处理,因此仅覆盖 open() 是行不通的。似乎 libxml2 也没有任何工具可以为其提供文件解析器。它只是直接调用fopen()。
所以解决方案可能需要在更高级别,可能覆盖命名空间或类似的东西?
【问题讨论】: