如何在 YANG 中建模没有公共子元素的列表?
How to model a list in YANG with no common child elements?
我有一个 XML 看起来像这样。
<c>
<node>
<id1>value</id1>
<id2>value</id2>
</node>
<node>
<id3>value</id3>
<id4>value</id4>
</node>
</c>
这个列表如何在 YANG 中建模?这里的问题是每个列表都需要一个键。我尝试做的事情:
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 中没有很好的建模方法。就像你说的,每个 (config true) 列表都需要一个密钥。将叶子指定为键会使该叶子成为强制性的,因此您不能像示例中那样真正拥有实例文档 - 如果您将所有四个叶子都设为键(您可以这样做,因为可能有多个列表键)每个节点都有让所有这些都有效,并且只将其中几个作为键,对您的示例也不起作用。
请注意,配置错误列表不需要任何键。如果您不是建模配置(或 NETCONF/RESTCONF 相关数据),那可能是您的出路。
list node {
config false;
// ...
}
否则,你别无选择——你需要引入另一片叶子作为条目的 id。
无论哪种方式,您都可能会使用 unique
语句(我假设基于您的叶子的名称),使列表中的条目唯一。它的工作方式与 key
类似,但如果您使用它,元素不需要出现在实例文档中 - 它只需要出现在实例中的节点组合在列表的所有条目中是唯一的。
list node {
config false;
unique "id1 id2 id3 id4";
// ...
}
注意:有一个类似的 ,但有更多详细信息。
我有一个 XML 看起来像这样。
<c>
<node>
<id1>value</id1>
<id2>value</id2>
</node>
<node>
<id3>value</id3>
<id4>value</id4>
</node>
</c>
这个列表如何在 YANG 中建模?这里的问题是每个列表都需要一个键。我尝试做的事情:
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 中没有很好的建模方法。就像你说的,每个 (config true) 列表都需要一个密钥。将叶子指定为键会使该叶子成为强制性的,因此您不能像示例中那样真正拥有实例文档 - 如果您将所有四个叶子都设为键(您可以这样做,因为可能有多个列表键)每个节点都有让所有这些都有效,并且只将其中几个作为键,对您的示例也不起作用。
请注意,配置错误列表不需要任何键。如果您不是建模配置(或 NETCONF/RESTCONF 相关数据),那可能是您的出路。
list node {
config false;
// ...
}
否则,你别无选择——你需要引入另一片叶子作为条目的 id。
无论哪种方式,您都可能会使用 unique
语句(我假设基于您的叶子的名称),使列表中的条目唯一。它的工作方式与 key
类似,但如果您使用它,元素不需要出现在实例文档中 - 它只需要出现在实例中的节点组合在列表的所有条目中是唯一的。
list node {
config false;
unique "id1 id2 id3 id4";
// ...
}
注意:有一个类似的