XML架构需要小数位数

XML架构需要小数位数,xml,xsd,Xml,Xsd,我想把一个数字的小数位数限制为正好2 例如-1.00是有效的,但是1、1.0和1.000都是无效的 这是一个类似的问题: 答案如下: <xs:simpleType name="twoPlacesDecimal" id="twoPlacesDecimal"> <xs:restriction base="xs:decimal"> <xs:fractionDigits fixed="true" value="2" /> </xs

我想把一个数字的小数位数限制为正好2

例如-1.00是有效的,但是1、1.0和1.000都是无效的

这是一个类似的问题:
答案如下:

<xs:simpleType name="twoPlacesDecimal" id="twoPlacesDecimal">
    <xs:restriction base="xs:decimal">
        <xs:fractionDigits fixed="true" value="2" />
    </xs:restriction>
</xs:simpleType>


不幸的是,这仅将小数位数限制为2,并允许使用零位或一位小数

我以前做过这项工作时,使用了正则表达式匹配器。可以使用的正则表达式如下所示:

<xsd:simpleType name="exactlyTwoAfterDecimal">
    <xsd:restriction base="xsd:token">
        <xsd:pattern value="^-?\d+\.\d\d$"/>
    </xsd:restriction>
</xsd:simpleType>

我不认为仅使用
总计
分位数
限制就可以做到这一点,但使用正则表达式模式限制可能是可行的,比如:

<xs:restriction base="decimal">
  <xs:pattern value="[+-]?\d+\.\d{2}"/>
</xs:restriction>


您可以使用正则表达式强制小数位数正好为2,但这明智吗?对于任何生成本应符合此模式的文档的人来说,您正在使他们的生活更加艰难。例如,他们将无法使用XSLT或XQuery生成的默认序列化,而是必须编写自己的序列化。将规范更改为在其接受的内容上更自由一点不是更好吗?

应该添加这一点-只接受非负数,但这是对正则表达式的一个微不足道的修改。如果要使十进制可选,并允许1和1.0等值,则需要使十进制可选,并允许这样的范围,:
@fourgablesguy您的正则表达式适用于10、1.0和1.00等值,但不适用于0-9。有没有关于如何让它为那些值工作的信息?Nvm我想出来了。正确的正则表达式应该是
\d+\.?\d{0,2}