我有一个如下所示的 XML 文件,并希望使用类型替换方法创建一个 XML 模式,以便它可以验证下面的 XML 文件。但是我创建的架构是完全错误的。请告诉我如何对架构进行编码以验证下面的文件 XML。
细节:
- 储存的动物只有两种,一种是鸟,一种是鱼。
- 类型、名称和来源元素都是必需的
- 对于 type:bird,可以选择存储额外的颜色元素。
对于 type:fish,需要存储额外的 size 元素
<animals> <animal animalID="b-1" xsi:type="bird"> <name>Humming Bird</name> <origin>Asia</origin> <color>Blue</color> </animal> <animal animalID="b-2" xsi:type="bird"> <name>Horn Bill</name> <origin>Asia</origin> </animal> <animal animalID="f-2" xsi:type="fish"> <name>Whale</name> <origin>Europe</origin> <size>Large</size> </animal> <animal animalID="b-5" xsi:type="bird"> <name>Parrot</name> <origin>Europe</origin> </animal>
我提出了以下架构,我认为它完全错误。
<xsd:element name="bird" substitutionGroup="animals"
type="birdType"/>
<xsd:element name="fish" substitutionGroup="animals"
type="fishType"/>
<xsd:element name="animals">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="animal" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="animal">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="bird" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>