You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在YANG中建模允许重复元素的有序数值数组?

解决YANG中有序重复值列表的建模问题

针对你需要构建包含非唯一数值的有序列表(示例:[0, 0, 0, 1, 0, 5, 17, 0, 0])的需求,结合YANG规范的约束,分两种场景给出可行方案:

场景1:列表为状态数据(无需用户配置)

如果该列表是设备上报的状态数据(而非用户配置项),可以使用无键列表,无需定义key,同时满足重复值和有序要求:

list items {
  config false;
  ordered-by system;
  leaf value {
    type uint8;
  }
}

注意:无键列表仅允许用于config false的场景,且必须设置ordered-by system,顺序由系统逻辑维护。

场景2:列表为配置数据(需要用户配置)

若为用户可配置的列表,YANG规范强制要求列表必须有唯一key,此时推荐使用位置索引作为key——该索引并非冗余节点,而是用来明确标识元素在有序列表中的位置:

list item {
  key "index";
  leaf index {
    type uint32;
    description "元素在有序列表中的位置索引(建议从0开始递增)";
  }
  leaf value {
    type uint8;
    description "列表元素的数值";
  }
  ordered-by user;
}

通过index,用户可以精准控制列表顺序,同时允许value重复。虽然XPath路径会有所变化,但这是符合规范的最小侵入方案,避免了无意义的冗余节点。

为什么不能直接绕开key约束?

  • YANG的leaf-list硬性要求元素值唯一,无法支持重复场景;
  • 配置型list必须定义key,这是规范强制要求,用于确保每个列表元素可被唯一标识,避免配置冲突。

内容的提问来源于stack exchange,提问作者nullromo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 04:10:22