以下は、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 または 1 つの ELEMENT_FIVE を含めることができます。ケース 6 を xsd 検証に含めるにはどうすればよいですか?
ケース 6 をこの xsd ファイルに含めることができない場合、上記のシナリオを処理するためのより良いスキーマはありますか?
フィードバックをお寄せいただきありがとうございます。