2016-11-23 39 views
1

我无法弄清楚如何创建一个叶的“必须”,使其在列表中唯一。杨,叶必须在列表中是唯一的

这是带有叶子的列表,该叶子可能与此列表中的任何其他叶子的值不同。的代码

实施例:

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"; 
    } 

    } 

} 

所以我想myLeaf到,如果有已经在myList中以电流值存在的元件触发差错消息。

回答

2

您有该清单的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上下文节点集)。

另请注意:约定代表断言 - 它必须评估为true(),否则实例被认为无效。因此,您的> 1条件将达到您所需要的相反。

相关问题