0

我正在研究一个杨模型。在这个我需要有一个列表,其中一个叶键(索引)应该始终按递增顺序排列。我需要在 yang 模型中为此添加约束。有什么解决方案吗?

4

1 回答 1

0

您可以添加一个must约束来确保这一点。

module increasing-index {
    namespace "org:example:increasing-index";
    prefix "oeii";

    list item {    
        must "not(preceding-sibling::item) or preceding-sibling::item/index < index" {
            error-message "Items must be ordered by index value in increasing order.";
        }
        key index;
        leaf index {
            type uint32;             
        }
    }
}

上述条件not(preceding-sibling::item) or preceding-sibling::item/index < index的含义如下:要么没有前项,要么没有前项的索引值小于当前项的索引值。列表中的每个项目都必须满足条件。

<?xml version="1.0" encoding="utf-8"?>
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <oeii:item xmlns:oeii="org:example:increasing-index">
    <oeii:index>12</oeii:index>
  </oeii:item>
  <oeii:item xmlns:oeii="org:example:increasing-index">
    <oeii:index>13</oeii:index>
  </oeii:item>
  <oeii:item xmlns:oeii="org:example:increasing-index">
    <oeii:index>10</oeii:index>
  </oeii:item>
</config>
Error at (9:3): failed assert at "/nc:config/oeii:item": Items must be ordered by index value in increasing order.

注意:如果列表是ordered-by system(默认),实现模型的设备可以以任何它喜欢的方式对列表条目进行排序——即使没有这样的约束,它也可以通过增加索引值来排序,所以这样的约束可能是多余的语义糖.

于 2018-05-23T07:37:04.943 回答