You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Relax NG中如何定义可任意交错重复的两类node节点校验规则?

解决方案

Relax NG完全支持两类节点任意交错重复的规则,你的校验报错是因为原有规则强制了两类节点的出现顺序:必须先全是Value1类型的<node>,再全是Value2类型的<node>,不允许穿插。
修改后的规则如下:

<rng:start>
    <rng:element name="root">
        <!-- 每个node可以是两类中的任意一种,允许重复、任意顺序 -->
        <rng:oneOrMore>
            <rng:choice>
                <!-- 第一类node:fixedValue为Value1 -->
                <rng:element name="node">
                    <rng:element name="variableValueElement">
                        <rng:data type="string"/>
                    </rng:element>
                    <rng:element name="fixedValueElement">
                        <rng:value type="string">Value1</rng:value>
                    </rng:element>
                </rng:element>
                <!-- 第二类node:fixedValue为Value2 -->
                <rng:element name="node">
                    <rng:element name="variableValueElement">
                        <rng:data type="string"/>
                    </rng:element>
                    <rng:element name="fixedValueElement">
                        <rng:value type="string">Value2</rng:value>
                    </rng:element>
                </rng:element>
            </rng:choice>
        </rng:oneOrMore>
    </rng:element>
</rng:start>

规则说明

  • 外层rng:oneOrMore保证<root>下至少存在1个<node>节点,若允许空节点可替换为rng:zeroOrMore
  • 内层rng:choice规定每一个<node>都可以是两类中的任意一种,没有排列顺序限制,完全满足你两类节点任意交错、重复出现的需求。

内容的提问来源于stack exchange,提问作者Pick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:18:04