【问题标题】:XSD Datatype string with restriction :max. 2 digits only numbers具有限制的 XSD 数据类型字符串:max。仅 2 位数字
【发布时间】: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 的初学者,这就是为什么我在问。
  • 没有实际问题,这是一个毫无意义的问题。试试看;也许它是正确的。 (我不知道 XSD,否则我会告诉你它是否适合我。)如果你有问题,然后问这个问题。 :-)
  • 我发现您收到的一些 cmets 相当放错地方,但本着良好的精神,我认为让您降到 -2 的人只是度过了糟糕的一天。这取决于人们想通读您的问题和/或花时间回答它的程度。如此简单的问题,您所触及的问题之多令人惊讶;它表明,当(甚至承认)不了解该主题时,人们不应该急于将问题标记为“毫无意义”。如果您编辑它,我会再次投票!...

标签: regex xsd


【解决方案1】:

简而言之,您的 XSD sn-p 可能是正确的,这里有一些需要考虑的事项:

您对 ma​​x 一词的使用让我认为也可以允许更少。在这种情况下,您的模式需要维护。

<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 的情况下 - 一个 + 符号作为前缀。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-19
  • 1970-01-01
  • 2023-01-18
  • 2021-04-02
  • 2019-04-30
  • 2018-03-04
相关资源
最近更新 更多