我对创建模式是全新的,而对创建XML则几乎是全新的。我正在尝试开发一个简单的基于整数的类型(尽管我会选择基于字符串的类型),该类型将值限制为-1,然后甚至将整数限制为254。
到目前为止,我已经弄清楚了:
<xs:simpleType name="toffset">
<xs:restriction base="xs:integer">
<xs:minInclusive value="-1"/>
<xs:maxInclusive value="254"/>
</xs:restriction>
Run Code Online (Sandbox Code Playgroud)
该代码当然不会处理将大于-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>
Run Code Online (Sandbox Code Playgroud)
在这里,大多数繁重的工作都是由最小/最大约束完成的,并且该模式仅用于限制值,因此它要么(a)以“-”符号开头,要么(b)以偶数结尾。模式不需要重复适用的约束,例如其他字符是数字。