在yang xpath表达式中使用current vs ../

时间:2017-01-19 21:17:36

标签: ietf-netmod-yang

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

container c {
   leaf f1 {
       type string;
   }

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

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

1 个答案:

答案 0 :(得分:1)

在示例中使用current()的方式是正确的,但是多余的。 current()返回初始上下文节点,因为所有表达式都在其上下文中以初始上下文节点开头,因此无需明确说明这一点。

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

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