2013-02-21 30 views
2

XSD是否可以添加用於比較兩個元素的約束? 說我有開始結束在DataRangeType下我想添加一個約束說Begin <= End。這是可行的嗎?XSD是否可以添加用於比較兩個元素的約束?

順便說一句,我使用XMLSpy的2013年

<xs:complexType name="DataRangeType"> 
    <xs:sequence> 
     <xs:element name="Begin" type="xs:date"/> 
     <xs:element name="End" type="xs:date"/> 
    </xs:sequence> 
</xs:complexType> 

非常感謝。

回答

3

它在XSD 1.1中通過斷言可行。我不相信這個約束在XSD 1.0中是可以表達的。

[附錄]你問一個例子。這個給你。

<xs:complexType name="DataRangeType"> 
    <xs:sequence> 
    <xs:element name="Begin" type="xs:date"/> 
    <xs:element name="End" type="xs:date"/> 
    </xs:sequence> 
    <xs:assert test="Begin &lt;= End"/> 
</xs:complexType> 
+0

我使用的是xsd 1.1,你能舉個例子嗎? – Gob00st 2013-02-21 16:51:21

+0

我試過斷言,但是XMLSPy給了我元素在元素下是不允許的。 – Gob00st 2013-02-21 16:59:34

+0

聽起來像你的軟件告訴你它不支持XSD 1.1。你對此有多自信? – 2013-02-21 17:20:58