我试图找出将选择字段从 yang 模型实现到其相应配置 xml 的正确语法。不幸的是,RFC 6020 和其他 Yang 相关网页中的文档似乎没有显示如何choice
在实际 XML 中使用与 Yang 模型相关的字段。
例如,这是我的 YANG 模型:
container MYMODEL {
container PacketOperationConf {
list RuleID {
key id;
leaf id {
type int32;
}
leaf priority {
type int32;
}
leaf name {
type string;
}
choice type {
case flow {
list action {
key order;
uses mymodel:action;
}
container match {
uses mymodel:match;
}
}
case function {
container function {
}
}
}
}
...
这个容器有相应的 XML:
<?xml version="1.0" encoding="UTF-8" ?>
<rpc message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<edit-config>
<target>
<running />
</target>
<config>
<MYMODEL xmlns="urn:com:tug:mymodel">
<PacketOperationConf>
<RuleID>
<id>101</id>
<type>
<flow>
<action>
<order>1</order>
<set-dl-src-action>
<address>01:02:03:04:05:06</address>
</set-dl-src-action>
</action>
</flow>
</type>
</RuleID>
</PacketOperationConf>
</MYMODEL>
</config>
</edit-config>
</rpc>
但是当我运行它时,yang2dsdl
我得到以下错误:
$ yang2dsdl -t edit-config -v rmbn-full-test-1.xml -d /tmp rmbn-full.yang
== Generating RELAX NG schema '/tmp/rmbn-full-edit-config.rng'
Done.
== Validating grammar and datatypes ...
rmbn-full-test-1.xml:13: element type: Relax-NG validity error : Element RuleID has extra content: type
Relax-NG validity error : Extra element RuleID in interleave
rmbn-full-test-1.xml:11: element RuleID: Relax-NG validity error : Element PacketOperationConf failed to validate content
rmbn-full-test-1.xml fails to validate
所以发生错误是因为它不知道如何处理该type
元素。type
元素是 yang 模型中我的选择部分的名称。
我已经尝试了各种这样的安排,但都没有奏效。我也无法在 SOF 或 Google 上找到关于以 XML 实现的选择示例的任何内容。