4.2.7. 选择(Choices)

YANG允许数据模型使用“choice”和“case”语句将不兼容的节点分隔为不同的选项。 “choice”语句包含一组“case”语句,用于定义不能一起出现的模式节点集合。 每个“case”可能包含多个节点,但每个节点可能只出现在“choice”下的一个“case”中。

choicecase节点仅出现在模式树(schema tree)中,而不出现在数据树中。 概念模式之外不需要额外的层次结构。 一个case的存在是由一个或多个节点的存在表示。

由于只有一个选择的情况在任何时候都是有效的,所以当在数据树中创建一个节点时,所有其他情况下的所有节点都被隐式删除。 服务器处理约束的执行,防止配置中存在不兼容。

YANG示例:

  1. container food {
  2. choice snack {
  3. case sports-arena {
  4. leaf pretzel {
  5. type empty;
  6. }
  7. leaf beer {
  8. type empty;
  9. }
  10. }
  11. case late-night {
  12. leaf chocolate {
  13. type enumeration {
  14. enum dark;
  15. enum milk;
  16. enum first-available;
  17. }
  18. }
  19. }
  20. }
  21. }

XML编码示例:

  1. <food>
  2. <pretzel/>
  3. <beer/>
  4. </food>

第7.9节介绍了“choice”的声明。