ЯНГ - обязательный выбор - PullRequest
       8

ЯНГ - обязательный выбор

0 голосов
/ 05 октября 2018

С RFC 7950 # 7.9.4 :

Поведение ограничения [обязательного] зависит от типа ближайшего узла-предка выбора в дереве схемы, котороене отсутствие (см. раздел 7.5.1):

  • Если в дереве схемы такого предка нет, ограничение применяется.

  • В противном случае, если этот предок является узлом дела, ограничение применяется, если существует какой-либо другой узел из дела.

  • В противном случае оно применяется, если узел предка существует.

Теперь: первая и последняя точка кажутся довольно простыми, но я не могу получить вторую.

Он пытается сказать, что еслисначала non-presence container ancestror - это узел case, затем ограничение должно быть применено, если у case имеется более одного дочернего элемента?По сути, это означает, что я должен выполнить обязательное, если case содержит uses?

1 Ответ

0 голосов
/ 08 октября 2018

Обязательный выбор означает, что ровно одна ветвь дела (потомки узла данных дела) ДОЛЖНА существовать в действительном экземпляре документа - RFC ссылается на это с помощью термина "действительные данные".Второй маркер является исключением.

Второй маркер применяется к вложенным выборам - если предок выбора является узлом случая, вы имеете дело с выбором, вложенным в другой выбор.

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-c или d-e, ограничение также будет принудительно выполнено, но условие всегда будет выполнено.

Он пытается сказать, что если сначала неКонтейнер присутствия ancestror является узлом дела, тогда ограничение должно применяться, если дело имеет более одного дочернего элемента?

Нет.Ограничение применяется, если в экземпляре документа есть экземпляры таких потомков.

По сути, это означает, что я должен применять обязательное, если в этом случае используются случаи?

Обязательные ограничения применяются к документам экземпляра, а не к схеме - схема диктует только ограничения.uses никогда не будет существовать в контексте, где применяются обязательные ограничения.В этом контексте могут существовать только созданные экземпляры узлов данных, определенные ссылочной группировкой, и это может учитываться при применении ограничения.

...