所需经费如下:
我从代码中得到以下错误
lxml.etree.RelaxNGParseError: Element or text conflicts in interleave, line 6
下面的示例代码
from io import StringIO
from lxml import etree
XML = StringIO('''
<root xmlns="http://www.w3.org/2005/Atom">
<link rel="a1" />
<link rel="b1" />
<link rel="a2" />
<link rel="b2" />
</root>
''')
RNG = StringIO('''
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="root" ns="http://www.w3.org/2005/Atom">
<interleave>
<zeroOrMore>
<ref name="aLink"/>
</zeroOrMore>
<oneOrMore>
<ref name="bLink"/>
</oneOrMore>
</interleave>
</element>
</start>
<define name="aLink" ns="http://www.w3.org/2005/Atom">
<element name="link">
<choice>
<attribute name="rel">
<value>a1</value>
</attribute>
<attribute name="rel">
<value>a2</value>
</attribute>
</choice>
</element>
</define>
<define name="bLink" ns="http://www.w3.org/2005/Atom">
<element name="link">
<choice>
<attribute name="rel">
<value>b1</value>
</attribute>
<attribute name="rel">
<value>b2</value>
</attribute>
</choice>
</element>
</define>
</grammar>
''')
rng_tree = etree.parse(RNG)
rng_schema = etree.RelaxNG(rng_tree)
rng_schema.validate(XML)发布于 2022-04-09 15:10:01
我担心这是Relax规范禁止的典型案例
7.4.对交织的限制
对于模式p1 p2,
中。
https://www.oasis-open.org/committees/relax-ng/spec-20011203.html#interleave-restrictions
https://stackoverflow.com/questions/71795580
复制相似问题