是否可以在XML Schema中定义两个元素之间的值限制?
与以下XSD类似:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://mydomain.com"
xmlns="http://mydomain.com"
elementFormDefault="qualified">
<xs:element name="form">
<xs:complexType>
<xs:all>
<xs:element name="metric1" type="xs:integer" />
<xs:element name="metric2" type="xs:integer" />
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
有没有办法定义metric2的值应该大于公制1的值?因此,以下XML文档在验证时将失败:
<?xml version="1.0"?>
<form xmlns="http://www.ziya.gov.cn">
<metric1>5</metric1>
<metric2>3</metric2>
</form>
答案 0 :(得分:3)
在XSD 1.1中,定义一个断言
<xs:assert test="metric2 gt metric1"/>
作为complexType定义的一部分。
Xerces,Saxon和Altova目前支持XSD 1.1。
如果您使用的是XSD 1.0处理器,则无法定义此约束。