我正在使用 RELAX NG 开发模式。我对此很陌生,所以很可能我忽略了一些明显的东西,但似乎没有一种方便的方法来指定一个元素的出现次数,就像在 XML Schema 语言中那样。
例如,假设我想指定一个A
元素可能包含 2 - 5 个B
元素。我不想使用zeroOrMore
oroneOrMore
标记,因为我实际上确实有元素数量的上限。在 XML Schema 中,我可以使用minOccurs
和maxOccurs
属性来紧凑地指定它。我已经阅读了官方的 RELAX NG 教程,浏览了规范,并进行了一些基本的谷歌搜索,但我无法找到任何使用 RELAX NG 的便捷方法。我能想到的最好的,你需要做这样的事情:
<element name="A">
<ref name="B"/>
<ref name="B"/>
<optional><ref name="B"/></optional>
<optional><ref name="B"/></optional>
<optional><ref name="B"/></optional>
</element>
<define name="B">
<element name="B">
<text/>
</element>
</define>
这是可行的,但是当您需要更多的出现次数时会开始看起来很丑。在我的实际模式中,我有一种元素类型,它可能出现多达 256 次,因此手动指定的可选元素会很笨重。如果需要,我会这样做,但我想知道是否有更优雅的方式来表达我的出现限制。