1

以下代码段中 .. 和 current() 的用法是否正确?意思是,有时 current() 和 ../ 是等价的?

container c {
   leaf f1 {
       type string;
   }

   leaf f2 {
      type string;
      when "../f1 = 'abc'";
   }

   leaf f3 {
      type string;
      when "current()/../f1 = 'abc'";
   }
}
4

1 回答 1

1

您在示例中使用的方式current()是正确的,但是是多余的。current()返回初始上下文节点,并且由于所有表达式都从其上下文中的初始上下文节点开始,因此显式声明这一点毫无意义。

这并不意味着current()等价于../表达式的开头。后者可以扩展为parent::node()/child::node(),它返回初始上下文节点的父节点的所有子节点。返回的节点集将包含初始上下文节点及其所有兄弟节点。这不是current()返回的 - 它充其量是相似的。

什么是等价的,.或者,或者,写成,self::node()。如果表达式以 开头.,它可能会返回与 相同的节点current(),但这完全取决于使用的上下文.

于 2017-01-20T07:44:41.403 回答