如何在XSD中定义两个元素之间的限制

时间:2013-12-19 09:09:05

标签: xml xsd xsd-validation

是否可以在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>

1 个答案:

答案 0 :(得分:3)

在XSD 1.1中,定义一个断言

<xs:assert test="metric2 gt metric1"/>

作为complexType定义的一部分。

Xerces,Saxon和Altova目前支持XSD 1.1。

如果您使用的是XSD 1.0处理器,则无法定义此约束。