Python - 使用lxml进行多模式验证
我正在处理一个由第三方创建的模式(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文件。