繁体   English   中英

无序xsd:所有元素后跟另一个元素

[英]Unordered xsd:all elements followed by another element

如何为以下XML编写XSD?

<A></A>
<B></B>
<C></C>
<D></D>
<E></E>
<E></E>

A,B,C,D仅具有零或一 而且他们没有顺序。 可以是D,C,B,A 最后,有一个或多个E元素。

我尝试了多种方法,但无法完成。

您被XML Schema的非正交性所阻塞。 您认为以下方法应该有效:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="top">
    <xs:complexType>
      <xs:sequence>
        <xs:all>
          <xs:element name="A" minOccurs="0"/>
          <xs:element name="B" minOccurs="0"/>
          <xs:element name="C" minOccurs="0"/>
          <xs:element name="D" minOccurs="0"/>
        </xs:all>
        <xs:element name="E" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

但是,事实并非如此。 XSD的xs:all构造是一等公民。 它不能出现在xs:sequence

建议 :从您的要求中删除“任何订单”津贴:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="top">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="A" minOccurs="0"/>
        <xs:element name="B" minOccurs="0"/>
        <xs:element name="C" minOccurs="0"/>
        <xs:element name="D" minOccurs="0"/>
        <xs:element name="E" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

实际上,允许任何顺序的元素实际上在实践中都没有理论上的重要,特别是考虑到非正交性(例如上述情况)以及具有唯一粒子归因可能发生冲突的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM