寻找模式,以便我的XSD可以强制格式化

问题描述 投票:-1回答:3

我是新手,但我在XSD中设置一个模式,格式为999.999,左侧数字必须介于1和999之间,右侧数字介于0-999之间。

任何帮助,将不胜感激。

regex xml xsd
3个回答
0
投票

在这种情况下,“之间”可以用两种不同的方式理解,具体取决于您是否需要正好三位数。

如果每侧只需要三个:

[1-9][0-9]{2}\.[0-9]{3}

如果您只需要一个介于1/0和999之间的数字:

[1-9][0-9]{0,2}\.[0-9]{1,3}

说明:

  • [0-9]匹配任何数字,[1-9]匹配除零之外的任何数字。
  • x{n}匹配x n次,x{n,m}匹配x n次和m次。
  • \.匹配一个字面点。

0
投票

正确数字的正则表达式将是

[1-9][0-9]{0,2}\.[0-9]{1,3}

demo

在XSD中,您不需要任何锚点,因为默认情况下会锚定pattern属性值。


0
投票

xsd:string基础使用正则表达式方面的替代方法是使用xsd:totalDigitsxsd:fractionDigitsxsd:minExclusive等数字方面对xsd:decimal基数:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > 
  <xsd:element name="x">
    <xsd:simpleType>
      <xsd:restriction base="xsd:decimal"> 
        <xsd:totalDigits value="6"/> 
        <xsd:fractionDigits value="3"/> 
        <xsd:minInclusive value="1"/>
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:element>
</xsd:schema>

根据您的要求,这可以更好地控制可接受的内容,特别是如果您的数据基本上是数字的。

© www.soinside.com 2019 - 2024. All rights reserved.