4.2.2. 数据建模基础
YANG
定义了数据建模的四种主要类型的数据节点。 在下面的每个小节中,这些示例都显示了YANG
语法以及相应的XML
编码。 YANG
语句的语法在6.3节中定义。
4.2.2.1. 叶节点(Leaf Nodes
)
叶子实例包含简单的数据,如整数或字符串。 它只有一个特定类型的值,没有子节点。
YANG
例子:
leaf host-name {
type string;
description
"Hostname for this system.";
}
XML
编码示例:
<host-name>my.example.com</host-name>
第7.6节详细介绍了“leaf
”声明。
4.2.2.2. 叶列表节点(Leaf-List Nodes
)
叶列表定义了特定类型的值序列。
YANG
例如:
leaf-list domain-search {
type string;
description
"List of domain names to search.";
}
XML
编码示例:
<domain-search>high.example.com</domain-search>
<domain-search>low.example.com</domain-search>
<domain-search>everywhere.example.com</domain-search>
第7.7节介绍了“leaf-list
”声明。
4.2.2.3. 容器节点(Container Nodes)
一个容器用于分组子树中的相关节点。 一个容器只有子节点,没有值。 容器可以包含任何类型的任何数量的子节点(叶子,列表,容器,叶子列表,动作和通知)。
YANG
例如:
container system {
container login {
leaf message {
type string;
description
"Message given at start of login session.";
}
}
}
XML
编码示例:
<system>
<login>
<message>Good morning</message>
</login>
</system>
第7.5节介绍了“container
”声明。
4.2.2.4. 列表节点(List Nodes
)
列表定义了一系列列表条目。每个条目就像一个容器,如果它定义了任何关键的叶子,它就被其关键叶子的值唯一标识。列表可以定义多个关键叶子,并且可以包含任何类型的任何数量的子节点(包括树叶,列表,容器等)。
YANG
例如:
list user {
key "name";
leaf name {
type string;
}
leaf full-name {
type string;
}
leaf class {
type string;
}
}
XML
编码示例:
<user>
<name>glocks</name>
<full-name>Goldie Locks</full-name>
<class>intruder</class>
</user>
<user>
<name>snowey</name>
<full-name>Snow White</full-name>
<class>free-loader</class>
</user>
<user>
<name>rzell</name>
<full-name>Rapun Zell</full-name>
<class>tower</class>
</user>
第7.8节介绍了“list
”声明。
4.2.2.5. 示例模块
这些语句被组合来定义模块:
// Contents of "example-system.yang"
module example-system {
yang-version 1.1;
namespace "urn:example:system";
prefix "sys";
organization "Example Inc.";
contact "joe@example.com";
description
"The module for entities implementing the Example system.";
revision 2007-06-09 {
description "Initial revision.";
}
container system {
leaf host-name {
type string;
description
"Hostname for this system.";
}
leaf-list domain-search {
type string;
description
"List of domain names to search.";
}
container login {
leaf message {
type string;
description
"Message given at start of login session.";
}
list user {
key "name";
leaf name {
type string;
}
leaf full-name {
type string;
}
leaf class {
type string;
}
}
}
}
}