0

我正在开发一个“独立”的 xpath 解析器(未集成到 XSLT 中)。规范是否定义了如何检查变量是否存在?

伪代码:

Host language: if condition then set variable "foo" to "bar"

...

XPath: if $foo='bar' then ... 

$foo现在可以根据上述条件定义或不定义变量。XPath 实现的正确行为是什么?

  1. 如果条件为假因此$foo未定义,则引发运行时错误?
  2. 引发运行时/编译时错误,因为它可能 未定义?
  3. 我假设不存在的变量没有默认值(例如“nil”)。
  4. ...?

有一个指向规范的指针会很棒。

4

2 回答 2

0

该规范不允许更改变量。(除了为子表达式定义的变量,如 for 循环)

因此,在任何时候存在的变量列表在编译时都是已知的,使用未声明的变量是一个静态错误err:XPST0008 。

于 2013-04-26T11:49:40.673 回答
0

如果变量没有被赋值,规范的方法是引发 err:XPDY0002 。但既然我被允许:

如果表达式可以有效地返回值或引发动态错误,则实现可以选择返回值或引发动态错误。

我选择在我的实现中使用一个空字符串作为变量的默认值并给出警告。

我自己的答案很可能是(在再次阅读规范之后)“它是实现定义的”。

于 2013-04-27T15:53:45.333 回答