将 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>
如果没有 HistoryEntry
和 UserFiles
元素,我会使用 xsd:choice
来表示 ProjectInformation
和 Installations
。但是如何将HistoryEntry
和UserFiles
元素带入游戏呢?!
是否有允许这样做的标准 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>
我有以下两个(不可更改的)XML 文件,它们具有 相同的 命名空间,我需要为它们创建一个 XSD:
伪xml示例#1:
<Project>
<ProjectInformation/>
<HistoryEntry/>
<UserFiles/>
</Project>
伪xml示例#2:
<Project>
<Installations/>
</Project>
如果没有 HistoryEntry
和 UserFiles
元素,我会使用 xsd:choice
来表示 ProjectInformation
和 Installations
。但是如何将HistoryEntry
和UserFiles
元素带入游戏呢?!
是否有允许这样做的标准 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>