如何测试变量是否存在或者是否具有某个值

时间:2013-04-26 11:37:38

标签: xpath-2.0

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

伪代码:

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

...

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

现在可以定义变量$foo,具体取决于上面的 condition 。 XPath实现的正确行为是什么?

    如果条件为false,则
  1. 引发运行时错误,因此未定义$foo
  2. 引发运行时/编译时错误,因为它可以未定义?
  3. 我假设非现有变量没有默认值(例如“nil”)。
  4. ...?
  5. 有一个指向规范的指针会很棒。

2 个答案:

答案 0 :(得分:0)

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

因此,任何点上存在的变量列表在编译时都是已知的,并且使用未声明的变量是静态错误err:XPST0008

答案 1 :(得分:0)

规范方法是在没有为变量赋值的情况下引发错误:XPDY0002。但是因为我被允许:

  

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

我选择在我的实现中使用空字符串作为变量的默认值,而是发出警告。

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