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

usage of current vs ../ in yang xpath expressions

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

container c {
   leaf f1 {
       type string;
   }

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

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

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

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

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