1

我创建了一个 RELAX NG 模式文档和一个符合该模式的 XML 实例文档。我正在使用 python lxml 库来解析和验证文件。

我正在研究使用 lxml.objectify API 并遵循这里的示例或多或少没有问题,直到我到达“断言架构”部分。

我在示例中看到它使用了 etree.XMLSchema 类型,但我认为/认为/希望我也可以通过某种方式传递 etree.RelaxNG 类型,但是唉:

relaxng_doc = etree.parse('schema/link.rng')
relaxng = etree.RelaxNG(relaxng_doc)
parser = objectify.makeparser(schema = relaxng)

给我:

Traceback (most recent call last):
File "C:\Users\rubin\Source\Projects\Even\even.py", line 26, in <module>
parser = objectify.makeparser(schema = relaxng)
File "lxml.objectify.pyx", line 1801, in lxml.objectify.makeparser  (src/lxml\lxml.objectify.c:19114)
File "parser.pxi", line 1261, in lxml.etree.XMLParser.__init__ (src/lxml\lxml.etree.c:80303)
TypeError: Argument 'schema' has incorrect type (expected lxml.etree.XMLSchema, got lxml.etree.RelaxNG)

我对这些东西还是很陌生,所以在我开始接受 lxml.objectify 的 makeparser 只能使用 W3C XML Schema 1.0 xsd 解析器之前,我想我会在这里问:我是否正确 lxml.objectify API 只能验证使用 W3C XML 模式,而不是 RELAX NG 模式?

4

0 回答 0