我想创建一个XSD,使我的子节点具有取决于父节点的其他属性。
例如:我用唯一属性 name 删除了 标记,还标记了 ,而将 Animal标记了,在标签卵生中,我希望 现在具有属性 name 和 eggSize 。>
<Animal name="TheCat"/>
<Oviparous>
<Animal name="TheChiken" eggSize="20">
</Oviparous>
可以吗?
答案 0 :(得分:0)
对于初学者,我将假设您有一个根节点,并且您的TheChicken的Animal节点是自动关闭的
<Animals>
<Animal name="TheCat"/>
<Oviparous>
<Animal name="TheChiken" eggSize="20" />
</Oviparous>
</Animals>
为此,以下架构将对其进行描述。请注意,“动物”节点是在具有不同属性的不同位置定义的。
<?xml version="1.0" encoding="utf-16"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Animals">
<xs:complexType>
<xs:sequence>
<xs:element name="Animal">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="Oviparous">
<xs:complexType>
<xs:sequence>
<xs:element name="Animal">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="eggSize" type="xs:integer" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>