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;
                }
            }
        }
    }
}

results matching ""

    No results matching ""