根据lxml的官方文档,如果想要针对xml架构文档验证xml文档,则必须
schema
参数传递可能有变化,但无论你怎么做,本质都是一样的 - 架构是“外部”指定的(而不是在实际的xml文档中指定它)。
如果您遵循此过程,确实会发生验证,但如果我理解正确,则完全忽略了xsi
中schemaLocation和noNamespaceSchemaLocation属性的整个概念。这引入了一大堆限制,从事实开始,您必须自己处理实例< - >模式关系(将其存储在外部或编写一些hack以从根元素检索模式位置)在实例文档中,您无法使用多个模式验证文档(例如,当每个模式管理自己的名称空间时)等等。
所以问题是:也许我错过了一些完全无足轻重的事情或做错了?或者我关于lxml关于模式验证的限制的陈述是真的吗?
总结一下,我希望能够:
也许我应该寻找一个不同的图书馆?虽然,这真是一种耻辱,但lxml是python的事实上的xml处理库,并且在性能/功能/便利性方面被大家认为是最好的(并且在某种程度上是正确的)< / p>
答案 0 :(得分:3)
警告:这不是完整的答案,因为我对lxml的了解并不多。
可以告诉你:
xsi:schemaLocation="urn:schema1 schema1.xsd urn:schema2 schema2.xsd