如果我想在 XML 模式中定义任何元素,例如在步骤 360 中的最小值为 0,最大值为 91800,则意味着可能的组合为 0,360,720 等等,而不使用枚举模式
我怎么能定义这个?
如果我想在 XML 模式中定义任何元素,例如在步骤 360 中的最小值为 0,最大值为 91800,则意味着可能的组合为 0,360,720 等等,而不使用枚举模式
我怎么能定义这个?
我想不出任何方法来做到这一点——你不能在验证规则中做算术。
你坚持使用枚举(在你的情况下似乎是可能的——如果我没记错的话,它是 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>