XPath 1.0 中数字文字的官方定义是什么?

What is the official definition of number literals in XPath 1.0?

我正在尝试找出 XPath 1.0 语法中允许使用哪种数字的官方定义。

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

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

换句话说:

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

除了第二个项目符号外,这似乎与 xsd:decimal, but I can't find any mention of it in the section on Numbers 或任何提及的任何 XSD 类型相同。

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

在输入这个问题的过程中,我找到了 80% 的答案,所以我想我应该跟进并 post 它在这里,以防其他人一直在寻找这个晦涩的琐事。

Numbers is defined in the Lexical Structure节的制作:

[30] Number ::= Digits ('.' Digits?)? | '.' Digits
[31] Digits ::= [0-9]+

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

[27] UnaryExpr ::= UnionExpr | '-' UnaryExpr

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

a string that consists of optional whitespace followed by an optional minus sign followed by a Number followed by whitespace is converted to the IEEE 754 number that is nearest [(according to the IEEE 754 round-to-nearest rule) to the mathematical value represented by the string; any other string is converted to NaN

这里"Number"指的是上面[30]的词法产生