具有限制的 XSD 数据类型字符串:max。仅 2 位数字
Posted
技术标签:
【中文标题】具有限制的 XSD 数据类型字符串:max。仅 2 位数字【英文标题】:XSD Datatype string with restriction :max. 2 digits only numbers 【发布时间】:2012-08-24 13:15:35 【问题描述】:我有要求:最大。 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>
【问题讨论】:
简而言之,您的 XSD sn-p 可能是正确的,这里有一些需要考虑的事项:
您对 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>
【讨论】:
我认为使用数字基类型在这里不适用,因为它允许 - 在 unsignedShort 的情况下 - 一个 + 符号作为前缀。以上是关于具有限制的 XSD 数据类型字符串:max。仅 2 位数字的主要内容,如果未能解决你的问题,请参考以下文章
如何使用混合值(整数和字符串)限制更改XML / XSD中的complexType?