忽略针对 xsd 的 xml 验证中的元素顺序

Seg*_*las 2 xml validation xsd

Ia 处理电子邮件并将一些标头保存在 xml 文档中。我还需要根据 xml 模式验证文档。

正如主题所暗示的那样,我需要验证忽略元素顺序,但是据我所知,这似乎是不可能的。我对么?

如果我将标题放入 a 中<xsd:sequence>,顺序显然很重要。如果我使用<xsd:all>顺序将被忽略,但由于某种奇怪的原因,这意味着元素必须至少出现一次。

我的xml是这样的:

<headers>
  <subject>bla bla bla</subject>
  <recipient>rcp01@domain.com</recipient>
  <recipient>rcp02domain.com</recipient>
  <recipient>rcp...@domain.com</recipient>
</headers>
Run Code Online (Sandbox Code Playgroud)

但我认为即使主题和收件人元素交换,最终文件也是有效的。

真的无事可做吗?

xcu*_*cut 5

对的,这是可能的。只需创建一个选择(当然是在某种类型或元素内容模型中),并将 maxOccurs 设置为无界。

<xs:element name="headers">
    <xs:complexType>
        <xs:choice maxOccurs="unbounded">
            <xs:element name="subject" type="xs:string"/>
            <xs:element name="recipient" type="xs:string"/>
        </xs:choice>
    </xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)