【问题标题】:How to model a list in YANG with no common child elements?如何在 YANG 中建模没有公共子元素的列表?
【发布时间】:2020-02-17 16:17:27
【问题描述】:

我有一个看起来像这样的 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;
    }
  }
}

【问题讨论】:

    标签: xml data-modeling ietf-netmod-yang


    【解决方案1】:

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

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

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

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

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

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

    注意:有一个类似的answered question 有更多细节。

    【讨论】:

      猜你喜欢
      • 2018-08-11
      • 2018-05-07
      • 1970-01-01
      • 2012-10-04
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多