是以下代码段中的..和current()的用法正确吗? 意思是,有时current()和../是等价的吗?
container c {
leaf f1 {
type string;
}
leaf f2 {
type string;
when "../f1 = 'abc'";
}
leaf f3 {
type string;
when "current()/../f1 = 'abc'";
}
}
答案 0 :(得分:1)
在示例中使用current()
的方式是正确的,但是多余的。 current()
返回初始上下文节点,因为所有表达式都在其上下文中以初始上下文节点开头,因此无需明确说明这一点。
这并不意味着current()
在表达式的开头等同于../
。后者可以扩展为parent::node()/child::node()
,它返回初始上下文节点的父节点的所有子节点。返回节点集将包含初始上下文节点及其所有兄弟节点。这不是current()
返回的内容 - 它最多是类似的。
相同的是.
或者self::node()
。如果表达式以.
开头,则它可能返回与current()
相同的节点,但这完全取决于使用.
的上下文。