根据您的描述,在我看来,您想创建一个具有两个字段的结构的可重用定义:单个uri
和addresses
. 完成这项工作的最佳工具是YANG 的分组。RFC 说“分组就像传统编程语言中的“结构”或“记录”。以下分组应该是您正在寻找的:
grouping mapping {
leaf uri {
type inet:uri;
}
list address {
type inet:IpAddress;
}
}
然后您可以grouping
通过 以下示例中的uses
语句引用此类:
container specific_mapping {
uses mapping;
}
和
list my_mapping {
key "uri";
uses mapping;
}
以下实例文档与上述兼容:
<specific_mapping>
<uri>some uri</uri>
<address>address 1</address>
<address>address 2</address>
</specific_mapping>
和
<my_mapping>
<uri>some uri</uri>
<address>address 1</address>
<address>address 2</address>
</my_mapping>
<my_mapping>
<uri>other uri</uri>
<address>address 3</address>
<address>address 4</address>
</my_mapping>
该typedef
声明在YANG 1.1的本节中进行了解释。RFC 7950。它旨在指定单叶的类型,因此它不能用于创建您想要的结构。当您使用时,typedef
您定义了该类型的所有可能值的集合。这称为价值空间。您尝试使用的union
内置类型旨在组合其中列出的类型的值空间。list
不是类型,因此不能在那里使用。