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

时间:2015-07-02 19:08:52

标签: regex xml xsd

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

任何帮助都会受到谴责。

3 个答案:

答案 0 :(得分:0)

您拥有的号码的正则表达式将是

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

请参阅demo

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

答案 1 :(得分: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次。
  • \.匹配文字点。

答案 2 :(得分:0)

xsd:string基础使用正则表达式方面的替代方法是对xsd:totalDigits个基础使用xsd:fractionDigitsxsd:minExclusivexsd: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>

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