Ошибка проверки модели Ян. Элемент не разрешен нигде, ожидаемый конечный тег - PullRequest
0 голосов
/ 22 октября 2019

У меня есть следующая модель ЯНГ. Я хочу проверить модель по пользовательским XML-данным.

module turing-machine {

  namespace "http://example.net/turing-machine";

  prefix "tm";

  description
    "Data model for the Turing Machine.";

  revision 2013-12-27 {
    description
      "Initial revision.";
  }

  /* State data and Configuration */

  container turing-machine {
    list router {
      config false;
      leaf name {
        type string;
      }
      leaf interface {
        type string;
      }
    }
  }
}

XML-файл, который я хочу проверить:

<?xml version="1.0" encoding="utf-8"?>
<!-- file: turing-machine-config.xml -->
<config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <turing-machine xmlns="http://example.net/turing-machine">
    <router>
      <name>A</name>
    </router>
    <router>
      <interface>B</interface>
    </router>
  </turing-machine>
</config>

Проверка выполняется с помощью следующих команд:

yang2dsdl -t config model.yang
trang -I rng -O rnc model-config.rng model-config.rnc
yang2dsdl -s -j -b model -t config -v data.xml

В результате проверки:

Element `router` not allowed anywhere, expected element end-tag.

Обратите внимание, что, поскольку дочерние элементы не являются общими внутри маршрутизатора, и поэтому я не могу использовать «config true», потому что не могу выбрать ключ, я думаю,что обходной путь должен использовать конфигурацию false.

1 Ответ

0 голосов
/ 22 октября 2019

Проблема в том, что config используется вместо данных внутри xml и внутри команд проверки. Допустимый xml:

<?xml version="1.0" encoding="utf-8"?>
<!-- file: turing-machine-config.xml -->
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <turing-machine xmlns="http://example.net/turing-machine">
    <router>
      <name>A</name>
    </router>
    <router>
      <interface>B</interface>
    </router>
  </turing-machine>
</data>

Затем для проверки необходимо выполнить следующие команды. Обратите внимание, что -t данные необязательны, так как в любом случае данные являются параметром по умолчанию.

yang2dsdl -t data model.yang
trang -I rng -O rnc model-config.rng model-config.rnc
yang2dsdl -s -j -b model -t data -v data.xml
...