2013-12-19 39 views
1

是否可以在XML模式中的兩個元素之間定義值限制?如何在XSD中的兩個元素之間定義限制

如以下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> 

回答

3

在XSD 1.1,定義一個斷言

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

的複雜類型定義的一部分。

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

如果您遇到了XSD 1.0處理器,則無法定義此約束。

相關問題