如何在Python中使用compactrelaxng模式验证XML文档?

2024-10-01 07:48:20 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在Python中通过compactrelaxng模式验证XML文档?在


Tags: 文档模式xmlcompactrelaxng
2条回答

如果要从命令行检查语法vsCompactRelaxNG语法,可以使用jingtrang模块中的pyjing。在

它支持.rnc文件,并显示比True或{}更多的细节。例如:

C:\>pyjing -c root.rnc invalid.xml
C:\invalid.xml:9:9: error: element "name" not allowed here; expected the element end-tag or element "bounds"

注意:它是Java的Python包装器,因此需要安装Java。

如果您想从Python内部检查语法,可以

  1. 使用pytrang(fromjingtrang包装器)将“Compact RelaxNG”(.rnc)转换为XML RelaxNG(.rng): pytrang root.rnc root.rng

  2. 使用lxml来解析转换后的.rng文件:https://lxml.de/validation.html#relaxng

应该是这样的:

^{pr2}$

lxml怎么样?在

从文件中:

>>> f = StringIO('''\
... <element name="a" xmlns="http://relaxng.org/ns/structure/1.0">
...  <zeroOrMore>
...     <element name="b">
...       <text />
...     </element>
...  </zeroOrMore>
... </element>
... ''')
>>> relaxng_doc = etree.parse(f)
>>> relaxng = etree.RelaxNG(relaxng_doc)

>>> valid = StringIO('<a><b></b></a>')
>>> doc = etree.parse(valid)
>>> relaxng.validate(doc)
True

>>> invalid = StringIO('<a><c></c></a>')
>>> doc2 = etree.parse(invalid)
>>> relaxng.validate(doc2)
False

相关问题 更多 >