最近我有一个例子,在xml消息中整数字段包含前导零。不幸的是,这些零具有相关性。有人可能会争论为什么在架构定义中选择了整数。但这不是我的问题。在允许的情况下,我有点惊讶地领先零。所以我查了specs当然告诉我超类型是decimal。但正如预期的规范并没有真正告诉你为什么某些选择在哪里。所以我的问题是什么才允许允许前导零?我的意思是数字通常没有前导零。
另一方面,我认为在前导零上添加限制的唯一方法是使用模式。
答案 0 :(得分:3)
我的回忆是XML Schema工作组允许XSD小数中的前导零,因为它们以正常的十进制表示法允许:1,01,001,0001等等。所有都表示正常数字表示法中的相同数字。 (但我实际上并不记得它已被讨论过了,所以也许这只是我相信这是正确的事情,而其他工作组成员有其他理由对此感到满意。)
你是正确的,建议问题的根源是使用xsd:integer作为符号的类型,使用数字字符串,其中前导零是重要的(例如在美国邮政编码中);我认为你可能会过分慷慨地说可以争论这个决定。可以提出哪些可能的论据支持这种明显错误的选择?
答案 1 :(得分:2)
尽管数字通常没有前导零,但解析数字几乎总是允许前导零。
您不希望完全禁止数字的前导零,因为您希望选项可以写出0.12
之类的数字,而不仅仅是.12
。由于您希望允许浮点数至少有一个前导零,因此只允许一个前导零,并且仅适用于浮点数,会感觉有点限制。
有时数字确实有前导零,例如ISO8601格式的日期中的组件; 2014-05-02
。如果你想解析一个组件,如果允许前导零就很方便,这样你就不必编写额外的代码来解析它。
XML规范只使用相同的规则集来解析通常用于大多数格式和大多数编程语言的数字。