Python - 使用lxml进行多模式验证

9 投票
1 回答
1137 浏览
提问于 2025-04-16 00:36

我正在处理一个由第三方创建的模式(schema),想用lxml来验证它。但是这个模式分散在不同的xsd文件中,这些文件之间相互引用。

举个例子,有一个叫“extension.xsd”的文件(它是基于“master”模式的),里面有这样一行:

<redefine schemaLocation="master.xsd">

当我尝试用lxml来验证它时(先解析,然后使用XMLSchema,再验证一个我知道是有效的文档),我只能验证“extension”,而不能验证“master”。换句话说,验证失败了(因为在XML文件中,有些元素只在“master”中存在,而在“extension”中不存在)。

我该如何解决(或绕过)这个问题呢?谢谢!

1 个回答

1

如果lxml不支持“重新定义”,最好的办法就是修复这个问题并提交一个补丁。 :)

如果不行的话,另一种解决方法就是自己解析master.xsd文件,然后把extension.xsd里的更改应用上去,最后输出一个包含所有内容的单一xsd文件。

撰写回答