相关疑难解决方法(0)

使用三个xml架构作为lxml中的一个组合架构进行验证?

我正在生成一个XML文档,其中为不同的部分提供了不同的XSD(也就是说,某些元素的定义在某些文件中,其他元素的定义在其他文件中)。

XSD文件不会互相引用。模式是:

  1. http://xmlgw.companieshouse.gov.uk/v2-1/schema/Egov_ch-v2-0.xsd
  2. http://xmlgw.companieshouse.gov.uk/v1-1/schema/forms/FormSubmission-v1-1.xsd
  3. http://xmlgw.companieshouse.gov.uk/v1-1/schema/forms/CompanyIncorporation-v1-2.xsd

有没有一种方法可以使用lxml针对所有模式验证文档?

这里的解决方案不是简单地针对每个架构进行单独验证,因为我遇到的问题是,由于XSD中未指定元素,验证失败。例如,当针对进行验证时http://xmlgw.companieshouse.gov.uk/v2-1/schema/Egov_ch-v2-0.xsd,出现错误:

  File "lxml.etree.pyx", line 3006, in lxml.etree._Validator.assertValid (src/lxml/lxml.etree.c:125415)
DocumentInvalid: Element '{http://xmlgw.companieshouse.gov.uk}CompanyIncorporation': No matching global element declaration available, but demanded by the strict wildcard., line 9
Run Code Online (Sandbox Code Playgroud)

因为所讨论的文档包含一个{http://xmlgw.companieshouse.gov.uk}CompanyIncorporation元素,该元素未在要验证的XSD中指定,而是在其他XSD文件之一中指定。

python xml xsd lxml

5
推荐指数
1
解决办法
2554
查看次数

标签 统计

lxml ×1

python ×1

xml ×1

xsd ×1