XML 架构:元素 A、元素 B 或两者

问题描述 投票:0回答:1

我正在尝试编写一个 XML 模式构造,该构造允许具有元素 A 或元素 B,或者同时具有 A 和 B。

我试过这个:

<xs:complexType name="RoleMapType">
    <xs:sequence>
        <xs:element minOccurs="0" name="Description" type="xs:string"/>
        <xs:element minOccurs="0" name="Schedule" type="xs:string"/>
        <xs:choice>
            <xs:element name="Loader" type="RoleMapLoaderType"/>
            <xs:element name="Dump" type="RoleMapDumpType"/>
            <xs:sequence>
                <xs:element name="Loader" type="RoleMapLoaderType"/>
                <xs:element name="Dump" type="RoleMapDumpType"/>
            </xs:sequence>
        </xs:choice>
    </xs:sequence>
</xs:complexType>

但我收到一条错误消息,指出 Loader 和 Loader 不明确。

如何强制执行这样的约束?

xml xsd
1个回答
0
投票

我认为以下内容不被视为含糊不清:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  
<xs:complexType name="RoleMapType">
    <xs:sequence>
        <xs:element minOccurs="0" name="Description" type="xs:string"/>
        <xs:element minOccurs="0" name="Schedule" type="xs:string"/>
        <xs:choice>
          <xs:sequence>
            <xs:element name="Loader" type="RoleMapLoaderType"/>
            <xs:element name="Dump" type="RoleMapDumpType" minOccurs="0"/>            
          </xs:sequence>
          <xs:element name="Dump" type="RoleMapDumpType"/>
        </xs:choice>
    </xs:sequence>
</xs:complexType>

<xs:complexType name="RoleMapLoaderType"/>

<xs:complexType name="RoleMapDumpType"/>

</xs:schema>
© www.soinside.com 2019 - 2024. All rights reserved.