【发布时间】:2014-07-16 15:57:44
【问题描述】:
在 XSD 中是否有可能具有不同属性的相同元素?
我尝试过这样的事情:
<xsd:complexType name="Type1">
<xsd:attribute name="id" type="xsd:integer" use="required"/>
<xsd:attribute name="attribute1" type="xsd:integer" use="required"/>
</xsd:complexType>
<xsd:complexType name="Type2">
<xsd:attribute name="id" type="xsd:integer" use="required"/>
<xsd:attribute name="attribute2" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:element name="address">
<xsd:complexType>
<xsd:choice>
<xsd:choice>
<xsd:element name="elementName" type="Type1"/>
<xsd:element name="elementName" type="Type2"/>
</xsd:choice>
</xsd:choice>
</xsd:complexType>
</xsd:element>
怎么做? address 元素应该是 Type1 或 Type2。每种类型都有不同的属性。
【问题讨论】:
-
那么,您的实际要求是
elementName有一个一个attribute1或一个attribute2但不是两者都有? -
实际上,重新检查了您的模式(没有注意到可选的) - 任何 XML 处理器如何区分产生“type2”
elementName没有属性和“type1”的东西"elementName其中attribute1是强制性的——作为人类,我不知道如何识别这种情况。您希望计算机如何执行验证? -
计算机可以检查第一个选项是否适合或第二个。检查是type1还是type2。