имя листа и имя типа могут совпадать в ян

Ниже приведен пример правильного утверждения ян или нет? он действителен pyang, но JNC не может обработать

grouping TLId {
leaf age {
type Age;
mandatory true;
}
}

typedef Age {
type string {
pattern '[0-9][0-9]';
}
}

Пожалуйста, предложите

1 ответ

Ваш фрагмент YANG действителен.

Typedef присваивается другому пространству имен по сравнению с идентификаторами узла схемы - никогда не может быть конфликта имен между конечным идентификатором и идентификатором typedef, как описано в Разделе 6.2.1 RFC7950:

Каждый идентификатор действителен в пространстве имен, которое зависит от типа определяемого элемента YANG. Все идентификаторы, определенные в пространстве имен, ДОЛЖНЫ быть уникальными.

o Все имена производных типов, определенные в родительском узле или на верхнем уровне модуля или его подмодулей, используют одно и то же пространство имен идентификаторов типов. Это пространство имен ограничено всеми узлами-потомками родительского узла или модуля. Это означает, что любой узел-потомок может использовать этот typedef, и он НЕ ДОЛЖЕН определять typedef с тем же именем.

o Все листы, листовые списки, списки, контейнеры, варианты выбора, rpcs, действия, уведомления, anydatas и anyxmls, определенные (напрямую или с помощью оператора "uses") в родительском узле или на верхнем уровне модуля или его подмодулей. использовать одно и то же пространство имен идентификаторов. Это пространство имен ограничено родительским узлом или модулем, если только родительский узел не является узлом case. В этом случае пространство имен ограничено ближайшим узлом-предком, который не является узлом наблюдения или выбора.

Другие вопросы по тегам