2012-08-27 12 views

回答

0

我想不出有辦法做到這一點 - 你不能在驗證規則中進行算術運算。你堅持使用枚舉(在你的情況下似乎是可能的 - 如果我沒有弄錯它是256個可能的值)。

+0

是的,我可以用256個枚舉值,但它是最糟糕的方式,我希望 –

+0

恐怕是唯一辦法.... – MiMo

0

由於有限狀態自動機可以識別可以被360整除的數字集合,原則上可以用一個非常複雜的正則表達式來實現,但是對於您想要的範圍,枚舉實際上會很多更容易理解(並且正確寫入)。

因此,在XSD 1.0中,使用枚舉是定義所需類型的唯一方法並不完全正確,但它確實是迄今爲止最簡單和最好的方法。

在XSD 1.1,你可以使用一個斷言XPath 2.0中表示捕捉算術關係:

<xs:simpleType name="small-multiples-of-three-sixty"> 
    <xs:restriction base="xs:integer"> 
    <xs:minInclusive value="0"/> 
    <xs:maxInclusive value="91800"/> 
    <xs:assertion test="$value mod 360 eq 0"/> 
    </xs:restriction> 
</xs:simpleType> 
相關問題