在XSD中创建动态属性

时间:2019-07-17 19:44:16

标签: xsd

我想创建一个XSD,使我的子节点具有取决于父节点的其他属性。

例如:我用唯一属性 name 删除了 标记,还标记了 ,而将 Animal标记了,在标签卵生中,我希望 现在具有属性 name eggSize

<Animal name="TheCat"/>
<Oviparous>
  <Animal name="TheChiken" eggSize="20">
</Oviparous>

可以吗?

1 个答案:

答案 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>