如果我想定義XML架構中的任何元素,例如最小值爲0且最大值爲91800,則在步驟360中表示可能的組合爲0,360,720等等,而不使用枚舉模式如何在XML模式中定義步長中的任何元素
我如何定義這個?
如果我想定義XML架構中的任何元素,例如最小值爲0且最大值爲91800,則在步驟360中表示可能的組合爲0,360,720等等,而不使用枚舉模式如何在XML模式中定義步長中的任何元素
我如何定義這個?
我想不出有辦法做到這一點 - 你不能在驗證規則中進行算術運算。你堅持使用枚舉(在你的情況下似乎是可能的 - 如果我沒有弄錯它是256個可能的值)。
由於有限狀態自動機可以識別可以被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>
是的,我可以用256個枚舉值,但它是最糟糕的方式,我希望 –
恐怕是唯一辦法.... – MiMo