我正在开发一个“独立的”xpath解析器(未集成到XSLT中)。规范是否定义了如何检查变量是否存在?
伪代码:
Host language: if condition then set variable "foo" to "bar"
...
XPath: if $foo='bar' then ...
现在可以定义变量$foo
,具体取决于上面的 condition 。 XPath实现的正确行为是什么?
$foo
?有一个指向规范的指针会很棒。
答案 0 :(得分:0)
规范不允许更改变量。 (对于为for循环中的子表达式定义的变量,除了ofc)
因此,任何点上存在的变量列表在编译时都是已知的,并且使用未声明的变量是静态错误err:XPST0008。
答案 1 :(得分:0)
规范方法是在没有为变量赋值的情况下引发错误:XPDY0002。但是因为我被允许:
如果表达式可以有效地返回值或引发动态错误,则实现可以选择返回值或引发动态错误。
我选择在我的实现中使用空字符串作为变量的默认值,而是发出警告。
我自己的答案很可能(在再次阅读规范之后)“它的实现已定义”。