用于引用数据节点和模式节点等的 yang 路径表达式

yang path expressions to refer to data nodes and schema nodes etc

考虑下面的阳模块

module mod {
    yang-version 1;
    namespace "http://example.com/mod";
    prefix m;
    revision "2016-09-09" {
       description "Initial revision.";
    }
    container foo {
        description 'container foo';
        leaf l {
            type string;
        }
    }
}

哪个路径表达式到达叶 l 是正确的?

/mod:foo/l
/m:foo/l
/foo/l

如果我在我的应用程序中激活了同一个模块的 2 个修订版,客户如何表达他对哪个修订版节点感兴趣?

并且,是否有路径表达式可用于引用叶 l 的 'description'?

Which path expression is correct in reaching to leaf l ?

在 RESTCONF GET 上下文中,使用 draft-ietf-netconf-restconf-16, Section 3.5.3, Encoding Data Resource Identifiers in the Request URI 中描述的方案。

A RESTCONF data resource identifier is encoded from left to right, starting with the top-level data node, according to the "api-path" rule in Section 3.5.3.1. The node name of each ancestor of the target resource node is encoded in order, ending with the node name for the target resource. If a node in the path is defined in another module than its parent node, or its parent is the datastore, then the module name followed by a colon character (":") MUST be prepended to the node name in the resource identifier. See Section 3.5.3.1 for details.

因此正确的 URI 应该是这样的:

/restconf/data/mod:foo/l

If I have 2 revisions of the same module active in my application, how does a client express which revision node he is interested in?

你不能表达这样的要求。这就是为什么服务器只允许实现 YANG 模块的单个修订版的原因之一。在 YANG 1.1 中,这是 explicitly 禁止的,而在 YANG 1.0 中,这只是隐含的。请注意,各个已实施的 YANG 模块可能会引用(导入)同一模块的多个修订版,但其中只有一个可能被公布为已实施(可能是最新的)。由于模块更新规则非常严格,定义不会在模块的较新版本中丢失,因此客户端是安全的。

is there a path expression available to refer the 'description' of leaf l ? my usecase for the 'description' is, something like this. A client submits a yang module to a server. Client wants to make sure that server is seeing the structure correctly. Client says , "show me the description of that leaf", or, "what is the default of a leaf" etc.

您似乎误解了 YANG 模型的作用。客户端不管理服务器的模型,它可能只管理该模型中描述的数据!这种事情属于服务器及其维护者的领域。

查询 YANG 模型(我知道)而不是它建模的数据的唯一标准方法是从服务器(get-schema)获取 YANG/YIN 文件,然后自己解析。

作为旁注。实现您的模块并从服务器接收有效响应的客户端本质上知道哪个描述映射到哪个 XML element/JSON 对象,因为它已经在实例文档和模型之间进行了“映射” (模式)在验证阶段。