首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >杨-强制性选择

杨-强制性选择
EN

Stack Overflow用户
提问于 2018-10-05 13:22:14
回答 1查看 1.6K关注 0票数 2

来自RFC 7950#7.9.4

强制约束的行为取决于模式树中选择的最接近的祖先节点的类型,它不是不存在的(参见7.5.1节):

  • 如果架构树中不存在此类祖先,则强制执行约束。

  • 否则,如果该祖先是案例节点,则如果该案例中的任何其他节点存在,则强制执行约束。

  • 否则,如果存在祖先节点,则强制执行。

现在:第一点和最后一点似乎很简单,但我无法理解第二点。

如果第一个non-presence container祖先是case节点,那么如果case有多个子节点,那么约束必须强制执行吗?基本上,这意味着如果case包含一个uses,那么我必须强制执行该强制命令。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-08 07:05:45

强制选择意味着一个案例分支( case的数据节点后代)必须存在于一个有效的实例文档中-- RFC用术语“有效数据”来引用它。第二颗子弹是个例外。

第二个项目适用于嵌套的选择--如果一个选择的祖先是一个案例节点,那么您将处理嵌套在另一个选择中的选择。

代码语言:javascript
复制
module choice-case {
    yang-version 1.1;
    namespace "org:example:choice-case";
    prefix "cc";

    container top {
        choice choice {
            case mandatory-choice { // <-- case mentioned in 2nd bullet
                choice choice {
                    mandatory true; // <-- constraint not enforced until f is instantiated
                    case a-b-c { 
                        leaf a {type string;}
                        leaf b {type string;}
                        leaf c {type string;}
                    }
                    case d-e { 
                        leaf d {type string;}
                        leaf e {type string;}
                    }
                }
                leaf f {
                    type string;
                }
            }
        }
    }
}

在上面的示例中,强制选择约束是不强制的,直到在实例文档中也出现了叶f。如果实例化了来自a-b-cd-e分支的叶节点,则约束也将被强制执行,但条件将始终满足。

它是否试图说,如果第一个不存在容器祖先是一个案例节点,那么约束必须强制如果该案例有多个子?

不是的。如果实例文档中存在此类子实例,则强制执行约束。

基本上,这意味着如果案件有用途,我必须强制执行吗?

强制约束适用于实例文档,而不是架构--模式只指示约束。uses永远不会存在于强制约束的上下文中。只有由引用分组定义的实例化数据节点才可能存在于这样的上下文中,并且在强制执行约束时可以考虑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52666607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档