Почему листовой узел с именем типа не работает в модели Янга? - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть эта простая модель Ян

leaf type {
    type string;
    description "some description";
}

Это не работает.Может кто-нибудь объяснить, является ли строка 'type' недопустимой для имени листа в ян?

1 Ответ

0 голосов
/ 10 апреля 2019

A leaf аргумент оператора должен быть идентификатором, и нет никаких ограничений, запрещающих использование ключевых слов YANG, где ожидается идентификатор (все встроенные ключевые слова также являются идентификаторами).И leaf type {...}, и leaf leaf {...} являются действительными операторами YANG.

Оператор "leaf" используется для определения конечного узла в дереве схемы.Он принимает один аргумент, который является идентификатором, за которым следует блок подстановок, в котором содержится подробная конечная информация.

RFC7950, раздел 7.6

Вот чтоСпецификация говорит об идентификаторах:

Идентификаторы используются для идентификации различных видов элементов YANG по имени.Каждый идентификатор начинается с заглавной или строчной буквы ASCII или символа подчеркивания, за которым следуют ноль или более букв ASCII, цифр, символов подчеркивания, дефисов и точек.Реализации ДОЛЖНЫ поддерживать идентификаторы длиной до 64 символов и МОГУТ поддерживать более длинные идентификаторы.Идентификаторы чувствительны к регистру.Синтаксис идентификатора формально определяется правилом «идентификатор» в разделе 14. Идентификаторы могут быть указаны в виде строк в кавычках или без кавычек.

RFC7950, раздел 6.2

Правило грамматики, упомянутое выше:

identifier          = (ALPHA / "_")
                     *(ALPHA / DIGIT / "_" / "-" / ".")

Вот что говорится о пространстве имен операторов leaf (пространство имен налагает требование уникального имени в своей области с целью предотвращения конфликтов имен):

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

RFC7950, раздел 6.2.1

...