我对创建模式是全新的,对创建xml几乎是全新的。我正在尝试开发一个简单的基于整数的类型(尽管我习惯使用基于字符串的类型),它将值限制为-1,然后甚至限制到254的整数。
到目前为止我发现:

   <xs:simpleType name="toffset">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="-1"/>
      <xs:maxInclusive value="254"/>
    </xs:restriction>

当然,该代码不处理将值>-1限制为偶数的问题。我考虑过创建一个枚举,但对于这么多的值来说,这似乎很难实现。如何实现所需的限制?

最佳答案

当然,使用断言的xsd 1.1机制更干净。在xsd 1.0中,用这种方式限制整数的唯一方法是使用模式方面,正如@kjhughes所建议的那样。但是,您可以对整数使用模式,它们不仅适用于字符串。
我想我会这样做:

<xs:simpleType name="toffset">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="-1"/>
      <xs:maxInclusive value="254"/>
      <xs:pattern value="-.*|.*[02468]"/>
    </xs:restriction>
</xs:simpleType>

在这里,大多数繁重的提升是由最小/最大约束完成的,并且模式仅用于限制值,以便(a)以“-”号开始,或(b)以偶数结束。模式不需要重复任何应用的约束,例如其他字符是数字。

关于xml - 如何在XSD中定义偶数范围?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27812193/

10-12 01:59