7.19. “扩展”声明
“extension
”语句允许定义YANG
语言中的新语句。这个新的语句定义可以被其他模块导入和使用。
“extension
”语句的参数是一个标识符,它是扩展名的新关键字,后面必须跟着一个包含详细扩展信息的子语句块。 “extension
”语句的目的是定义一个关键字,使其可以被其他模块导入和使用。
扩展名可以像普通的YANG
语句一样使用,如果语句名由“extension
”语句定义,则语句名后跟一个参数,并且可以包含一个可选的子语句块。该语句的名称是通过组合定义扩展名的模块的前缀,冒号(“:
”)和扩展的关键字来创建的,没有交织空白。扩展的子语句由“extension
”语句定义,使用本规范范围之外的某种机制。语法上,子语句必须是YANG
语句,包括使用“extension
”语句定义的扩展名。在扩展中的YANG
语句必须遵循第14节中的语法规则。
扩展可以允许细化(参见7.13.2节)和偏差(参见7.20.3.2),但是定义的机制超出了本规范的范围。
7.19.1. extension
子语句
+--------------+---------+-------------+
| substatement | section | cardinality |
+--------------+---------+-------------+
| argument | 7.19.2 | 0..1 |
| description | 7.21.3 | 0..1 |
| reference | 7.21.4 | 0..1 |
| status | 7.21.2 | 0..1 |
+--------------+---------+-------------+
7.19.2. “argument
”声明
可选的“argument
”语句将一个字符串作为参数,该字符串是关键字参数的名称。 如果不存在“argument
”语句,则关键字在使用时不需要参数。
这个参数的名字在YIN
映射中使用,它被用作XML
属性或元素名称,具体取决于参数的“yin-element
”语句。
7.19.2.1. “argument
”子语句
+--------------+----------+-------------+
| substatement | section | cardinality |
+--------------+----------+-------------+
| yin-element | 7.19.2.2 | 0..1 |
+--------------+----------+-------------+
7.19.2.2. “yin-element
”声明
“yin-element
”语句是可选的,它将字符串“true
”或“false
”作为参数。 此语句指示参数是映射到YIN
中的XML
元素还是映射到XML
属性(请参阅第13节)。
如果没有“yin-element
”语句,则默认为“false
”。
7.19.3. 使用示例
要定义一个扩展:
module example-extensions {
yang-version 1.1;
...
extension c-define {
description
"Takes as an argument a name string.
Makes the code generator use the given name
in the #define.";
argument "name";
}
}
要使用扩展名:
module example-interfaces {
yang-version 1.1;
...
import example-extensions {
prefix "myext";
}
...
container interfaces {
...
myext:c-define "MY_INTERFACES";
}
}