以下是我需要针对 xsd 文件验证的 xml 文件。
XML 文件 1
<ROOT ElementType="1" >
<ELEMENT_ONE>
.
.
.
</ELEMENT_ONE>
<ELEMENT_ONE>
.
.
.
</ELEMENT_ONE>
</ROOT>
XML 文件 2
<ROOT ElementType="2" >
<ELEMENT_TWO>
.
.
.
</ELEMENT_TWO>
<ELEMENT_TWO>
.
.
.
</ELEMENT_TWO>
</ROOT>
XML 文件 3
<ROOT ElementType="3" >
<ELEMENT_THREE>
.
.
.
</ELEMENT_THREE>
</ROOT>
XML 文件 4
<ROOT ElementType="4" >
<ELEMENT_FOUR>
.
.
.
</ELEMENT_FOUR>
</ROOT>
XML 文件 5
<ROOT ElementType="5" >
<ELEMENT_FIVE>
.
.
.
</ELEMENT_FIVE>
</ROOT>
XML 文件 6
<ROOT ElementType="6" >
<ELEMENT_ONE>
.
.
.
</ELEMENT_ONE>
<ELEMENT_TWO>
.
.
.
</ELEMENT_TWO>
<ELEMENT_FIVE>
.
.
.
</ELEMENT_FIVE>
<ELEMENT_ONE>
.
.
.
</ELEMENT_ONE>
<ELEMENT_TWO>
.
.
.
</ELEMENT_TWO>
</ROOT>
下面是需要验证上述 xml 文件的 xsd 文件。
<xsd:element name = "ROOT">
<xsd:complexType>
<xsd:sequence>
<xsd:choice>
<xsd:element ref = "agent:ELEMENT_ONE" minOccurs = "1" maxOccurs = "unbounded"/>
<xsd:element ref = "agent:ELEMENT_TWO" minOccurs = "1" maxOccurs = "unbounded"/>
<xsd:element ref = "agent:ELEMENT_THREE" minOccurs = "1" maxOccurs = "1"/>
<xsd:element ref = "agent:ELEMENT_FOUR" minOccurs = "1" maxOccurs = "1"/>
<xsd:element ref = "agent:ELEMENT_FIVE" minOccurs = "1" maxOccurs = "1"/>
</xsd:choice>
</xsd:sequence>
<xsd:attribute name = "ElementType" use = "required">
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:enumeration value="1"/>
<xsd:enumeration value="2"/>
<xsd:enumeration value="3"/>
<xsd:enumeration value="4"/>
<xsd:enumeration value="5"/>
<xsd:enumeration value="6"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
上述 xsd 验证适用于案例 1 到 5。XML 文件 6 可以有任意数量的 ELEMENT_ONE 或 ELEMENT_TWO 或只有一个 ELEMENT_FIVE。如何在 xsd 验证中包含案例 6?
如果我不能在这个 xsd 文件中包含案例 6,那么是否有更好的模式来处理上述情况?
提前感谢大家的反馈。