将 xsd:choice 与 xsd:any 或 xsd:sequence 混合?

Mixing xsd:choice with xsd:any or xsd:sequence?

我有以下两个(不可更改的)XML 文件,它们具有 相同的 命名空间,我需要为它们创建一个 XSD:

伪xml示例#1:

<Project>
    <ProjectInformation/>
    <HistoryEntry/>
    <UserFiles/>
</Project>

伪xml示例#2:

<Project>
    <Installations/>
</Project>

如果没有 HistoryEntryUserFiles 元素,我会使用 xsd:choice 来表示 ProjectInformationInstallations。但是如何将HistoryEntryUserFiles元素带入游戏呢?!

是否有允许这样做的标准 XSD 机制?

Unordered 被高估了。只需使用 xs:sequence 而不是 xs:any 即可避免 XSD 1.0 中的唯一粒子属性违规:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Project">
    <xs:complexType>
      <xs:choice>
        <xs:sequence>
          <xs:element name="ProjectInformation"/>
          <xs:element name="HistoryEntry"/>
          <xs:element name="UserFiles"/>
        </xs:sequence>
        <xs:element name="Installations"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>