имя листа и имя типа могут совпадать в ян
Ниже приведен пример правильного утверждения ян или нет? он действителен 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. В этом случае пространство имен ограничено ближайшим узлом-предком, который не является узлом наблюдения или выбора.