我想将数字的小数位数限制为2。
例如 - 1.00有效,但1,1和1.000都无效。
这是一个类似的问题:Specify amount of decimal places of an xs:decimal in an XML schema
这就是答案:
<xs:simpleType name="twoPlacesDecimal" id="twoPlacesDecimal">
<xs:restriction base="xs:decimal">
<xs:fractionDigits fixed="true" value="2" />
</xs:restriction>
</xs:simpleType>
不幸的是,这只会将小数位数限制为2,并允许数字为零或一位小数。
答案 0 :(得分:3)
我不认为你可以单独使用total
和fractionDigits
限制来做到这一点,但是可能采用正则表达式模式限制,例如:
<xs:restriction base="decimal">
<xs:pattern value="[+-]?\d+\.\d{2}"/>
</xs:restriction>
答案 1 :(得分:3)
你可以使用正则表达式将小数位数强制为两个,但这是明智的吗?对于那些生成符合此模式的文档的人来说,你的生活更加艰难。例如,他们将无法使用XSLT或XQuery生成的默认序列化,而是必须编写自己的序列化。是不是更好的改变规范在它接受的东西中更自由一点?
答案 2 :(得分:2)
当我过去做过这个时,我使用了正则表达式匹配器。你可以使用的正则表达式是这样的:
<xsd:simpleType name="exactlyTwoAfterDecimal">
<xsd:restriction base="xsd:token">
<xsd:pattern value="^-?\d+\.\d\d$"/>
</xsd:restriction>
</xsd:simpleType>