YANG,叶子在列表中必须是唯一的
YANG, leaf must be unique in a list
我不知道如何为叶子创建一个 "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 触发错误消息。
您有列表的 unique
关键字用于此目的,无需 bash 您反对 must
表达式。它在其参数中使用一个或多个 space 分隔的模式节点标识符。
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 函数 returns 正在检查的叶子(初始上下文节点),而 .
代表 self::node()
并应用于您选择的任何内容(当前XPath 上下文节点集)。
另请注意:must
约束代表一个断言 - 它必须评估为 true()
,否则实例将被视为无效。因此,您的 > 1
条件将达到您所要求的相反。
我不知道如何为叶子创建一个 "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 触发错误消息。
您有列表的 unique
关键字用于此目的,无需 bash 您反对 must
表达式。它在其参数中使用一个或多个 space 分隔的模式节点标识符。
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 函数 returns 正在检查的叶子(初始上下文节点),而 .
代表 self::node()
并应用于您选择的任何内容(当前XPath 上下文节点集)。
另请注意:must
约束代表一个断言 - 它必须评估为 true()
,否则实例将被视为无效。因此,您的 > 1
条件将达到您所要求的相反。