杨,叶子在列表中必须是唯一的

时间:2016-11-23 10:47:25

标签: xpath ietf-netmod-yang

我无法弄清楚如何制作一个" must"对于使其在列表中唯一的叶子。

这是包含叶子的列表,此叶子可能与此列表中的任何其他叶子的值不同。

代码示例:

list myList {
  key name;

  leaf name {
    type uint32;
  }

  container myContainer {

    leaf myLeaf {
      type uint32;
    }
    must "count(/myList/myContainer/myLeaf = .) > 1" { //Dont know how to create this must function.
      error-message "myLeaf needs to be unique in the myList list";
    }

  }

}

所以如果myList中已存在具有当前值的元素,我希望myLeaf触发错误消息。

1 个答案:

答案 0 :(得分:3)

为此目的,您拥有列表的unique关键字,无需抨击must表达式。它在其参数中需要一个或多个空格分隔的模式节点标识符。

    list myList {
      key name;
      unique "myContainer/myLeaf";

      leaf name {
        type uint32;
      }

      container myContainer {

        leaf myLeaf {
          type uint32;
        }

      }

    }

如果你真的想要一个must来处理这个问题(你不应该这样做),你可以这样做:

    leaf myLeaf {
      must "count(/myList/myContainer/myLeaf[current()=.])=1";
      type uint32;
    }

current() XPath函数返回正在检查的叶子(初始上下文节点),而.代表self::node()并适用于您选择的任何内容(当前XPath上下文节点集)。

另请注意:must约束表示断言 - 它必须求值为true(),否则实例被视为无效。因此,> 1条件将达到您所要求的相反水平。