如何在没有常见子元素的 YANG 中对列表进行建模?



我有一个看起来像这样的XML。

<c>
<node>
<id1>value</id1>
<id2>value</id2>
</node>
<node>
<id3>value</id3>
<id4>value</id4>
</node>
</c>

如何在杨中建模此列表?这里的问题是每个列表都需要一个键。我试图做什么:

container c {
list node {
key ""; /* What is the key? */
leaf id1 {
type string;
}
leaf id2{
type string;
}
leaf id3 {
type string;
}
leaf id4 {
type string;
}
}
}

在YANG 中没有很好的建模方法。就像你说的,每个(配置真(列表都需要一个键。将叶子指定为键使该叶子成为必需的,因此您不能像示例中那样真正拥有实例文档 - 如果您将所有四个叶子都设置为键(您可以这样做,因为可能有多个列表键(每个节点都必须具有所有有效,并且只使其中几个成为键, 也不适用于您的示例。

请注意,配置 false 列表不需要有任何键。如果您不对配置(或 NETCONF/RESTCONF 相关数据(进行建模,那可能是您的出路。

list node {
config false;
// ...
}

否则,您别无选择-您需要引入另一个叶子作为条目的ID。

无论哪种方式,您都可能会使用unique语句(我假设基于您的叶子的名称(使列表中的条目唯一。它的工作方式与key类似,但如果您使用它,元素不需要出现在实例文档中 - 它只要求实例中出现的节点组合在列表的所有条目中都是唯一的。

list node {
config false;
unique "id1 id2 id3 id4";
// ...
}

注意:有一个类似的回答问题,其中包含更多详细信息。

最新更新