7.12. "分组"声明

grouping”语句用于定义一个可重用的节点块,这些节点可以在模块或子模块中本地使用,也可以根据第5.5节中的规则使用其他模块。它需要一个参数,它是一个标识符,后面是一个包含详细分组信息的子语句块。

grouping”语句不是一个数据定义语句,因此,它不定义模式树中的任何节点。

分组就像传统编程语言中的“结构(structure)”或“记录(record)”。

一旦定义了分组,就可以在“uses”语句中引用它(参见7.13)。一个分组不能引用自己,也不能直接或间接地通过其他分组。

如果分组是在YANG模块或子模块的顶层定义的,那么分组的标识符必须在模块中是唯一的。

分组不仅仅是一种文本替换的机制;它还定义了一个节点集合。在分组中出现的标识符相对于定义分组的作用域,而不是在使用的位置。前缀映射、类型名称、分组名称和扩展使用都在“grouping”语句出现的层次结构中进行了评估。对于扩展,这意味着将直接子定义为“grouping”语句的扩展被应用到分组本身。

注意,如果一个分组在它的层次结构中定义了一个动作或一个通知节点,那么它就不能在所有的上下文中使用。例如,它不能在rpc定义中使用。参见第7.157.16节

7.12.1. grouping子语句

+--------------+---------+-------------+
| substatement | section | cardinality |
+--------------+---------+-------------+
| action       | 7.15    | 0..n        |
| anydata      | 7.10    | 0..n        |
| anyxml       | 7.11    | 0..n        |
| choice       | 7.9     | 0..n        |
| container    | 7.5     | 0..n        |
| description  | 7.21.3  | 0..1        |
| grouping     | 7.12    | 0..n        |
| leaf         | 7.6     | 0..n        |
| leaf-list    | 7.7     | 0..n        |
| list         | 7.8     | 0..n        |
| notification | 7.16    | 0..n        |
| reference    | 7.21.4  | 0..1        |
| status       | 7.21.2  | 0..1        |
| typedef      | 7.3     | 0..n        |
| uses         | 7.13    | 0..n        |
+--------------+---------+-------------+

7.12.2 使用示例

import ietf-inet-types {
  prefix "inet";
}

grouping endpoint {
  description "A reusable endpoint group.";
  leaf ip {
    type inet:ip-address;
  }
  leaf port {
    type inet:port-number;
  }
}

results matching ""

    No results matching ""