Validation 允许松弛模式中元素的任意顺序

Validation 允许松弛模式中元素的任意顺序,validation,xsd,relaxng,Validation,Xsd,Relaxng,我有一个松弛模式,看起来很像这样: <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="xml"> <zeroOrMore> <element name="multi"> <data type="string"/> </element>

我有一个松弛模式,看起来很像这样:

<grammar xmlns="http://relaxng.org/ns/structure/1.0">
  <start>
    <element name="xml">
      <zeroOrMore>
        <element name="multi">
          <data type="string"/>
        </element>
      </zeroOrMore>
      <optional>
        <element name="optional">
          <data type="string"/>
        </element>
      </optional>
    </element>
  </start>
</grammar>
无效:

<xml>
  <optional/>
  <multi/>
  <multi/>
</xml>

那么,如何允许任意顺序,但保留约束?我尝试将整个内容包装在一个块中,这允许任意顺序,但也允许任意数量的可选标记通过。

如果我正确理解您的问题,您尝试通过使用以下模式来实现:


这将验证任何序列或零个或一个可选元素,以及零个或多个多元素,包括您的示例。

如果我正确理解您的问题,您试图通过使用以下模式来实现:

这将验证任何序列、零个或一个可选元素以及零个或多个多元素,包括您的示例

<xml>
  <optional/>
  <multi/>
  <multi/>
</xml>
<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
    <start>
        <element name="xml">
            <interleave>
                <zeroOrMore>
                    <element name="multi">
                        <data type="string"/>
                    </element>
                </zeroOrMore>
                <optional>
                    <element name="optional">
                        <data type="string"/>
                    </element>
                </optional>                
            </interleave>
        </element>
    </start>
</grammar>