1

如果我想在 XML 模式中定义任何元素,例如在步骤 360 中的最小值为 0,最大值为 91800,则意味着可能的组合为 0,360,720 等等,而不使用枚举模式

我怎么能定义这个?

4

2 回答 2

0

我想不出任何方法来做到这一点——你不能在验证规则中做算术。

你坚持使用枚举(在你的情况下似乎是可能的——如果我没记错的话,它是 256 个可能的值)。

于 2012-08-28T15:28:32.207 回答
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>
于 2012-09-13T18:25:44.357 回答