我有要求:最高。 2位数 - 只有数字,以下代码是正确的:
<xsd:simpleType name="cstCODE">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{2}" />
<xsd:maxLength value="2" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
答案 0 :(得分:2)
简而言之,您的XSD代码段可能是正确的,以下是需要考虑的事项:
您使用 max 一词会让我觉得可能也会允许更少。在这种情况下,您的模式需要维护。
<xsd:simpleType name="cstCODE">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{1,2}"/>
<xsd:maxLength value="2"/>
</xsd:restriction>
</xsd:simpleType>
使用xsd:string作为基本类型(似乎是一个数值)也很有趣(可能是无意的);在一个人想要在线上允许空值而不使用nillable的情况下,这是一个重要的区别。那么您的模式可能如下所示:
<xsd:simpleType name="cstCODE">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{0,2}"/>
<xsd:maxLength value="2"/>
</xsd:restriction>
</xsd:simpleType>
这里的另一个问题可能是与正/负数和/或0填充有关。这是模式可能变得更复杂的地方。
如果使用xsd:string作为基本类型是学习曲线的一部分,那么您可以使用数字基类型以及随附的方面实现相同的“范围”限制。偶尔我会重温这个chart;在那里,您可以选择符合您需求的类型,单击它,并查看适用于它的约束方面。例如,如果我选择unsignedShort,那么:
<xsd:simpleType name="cstCODE">
<xsd:restriction base="xsd:unsignedShort">
<xsd:totalDigits value="2"/>
</xsd:restriction>
</xsd:simpleType>