2

我试图弄清楚 XPath 1.0 语法中允许使用哪种数字的官方定义。

通过反复试验,我相信我将其固定为:

^-?[0-9]*\.?[0-9]+$

换句话说:

  • 可选的-
  • +不允许领先
  • 没有指数
  • 小数点前后的多余零可以省略

这似乎适用于数字文字和使用number()字符串值,除了number()允许前导和尾随空格。

除了第二个项目符号之外,这似乎与xsd:decimal相同,但我在Numbers部分中找不到任何提及它或任何提及它对应的任何 XSD 类型。

这实际上是在任何地方定义的吗?如果有,在哪里?

4

1 回答 1

2

在输入这个问题的过程中,80% 的时间我都找到了答案,所以我想我应该把它贴在这里,以防其他人一直在寻找这个晦涩难懂的琐事。

Number s 的产生式在词法结构部分定义:

[30] 数字 ::= 数字('.' 数字?)?| '。' 数字
[31] 数字 ::= [0-9]+

前导减号在UnaryExpr产生式中处理:

[27] UnaryExpr ::= UnionExpr | '-' 一元表达式

并且接受的值集number()在该函数的定义中定义:

由可选空格后跟可选减号后跟数字后跟空格组成的字符串将转换为最接近 [(根据 IEEE 754 舍入到最近规则)表示的数学值的 IEEE 754 数字字符串;任何其他字符串都转换为 NaN

这里的“数字”是指上面的词汇产生[30]。

于 2015-01-06T09:43:29.973 回答