XML模式 - 如何绑定一个属性的存在另一个属性
问题描述:
的存在,我有以下XML行:XML模式 - 如何绑定一个属性的存在另一个属性
<customer id="3" phone="123456" city="" /> <!--OK-->
<customer id="4" /> <!--OK-->
<customer id="3" phone="123456" /> <!--ERROR-->
<customer id="3" city="" /> <!--ERROR-->
“手机”和“城市”属性都是可选的,但如果“手机”的存在,也应该存在“城市”,反之亦然。是否可以将这种限制插入到XML模式中?
谢谢。
答
XML中的依赖关系(您称为“绑定”)的概念通过嵌套来管理。所以如果你想让两个字段相互依赖,你应该将它们定义为嵌套的可选元素的强制属性。
所以,如果你有超过架构的结构完全控制,你可以做这样的事情:
<customer id="1">
<contact city="Gotham" phone="batman's red phone" />
</customer>
凡contact
元素是内customer
可选的,但city
和phone
不到contact
强制性的。
该结构的相应的XSD将是这样的:
<xs:element name="customer">
<xs:complexType>
<xs:sequence>
<xs:element name="contact" minOccurs="0">
<xs:complexType>
<xs:attribute name="city" type="xs:string" use="required"/>
<xs:attribute name="phone" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:string"/>
</xs:complexType>
</xs:element>
也许使用=“需要”被需要“id”属性 - 和xs:长应该是它的类型很好的猜测。 – 2010-04-14 12:19:58
如果您不完全控制架构的结构会怎么样?是否可以使用原始文章的结构来做到这一点? – 2011-03-01 18:55:22