首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让yang2dsl在yang验证过程中忽略输入参数的顺序?

如何让yang2dsl在yang验证过程中忽略输入参数的顺序?
EN

Stack Overflow用户
提问于 2015-09-23 09:35:32
回答 1查看 299关注 0票数 0

我使用pyang的yang2dsl根据yang数据模型验证输入的xml实例。但是,当xml实例中的参数顺序与yang模型中的参数顺序不同时,它会抛出错误。是否有一个选项可以让它忽略参数的顺序?下面是我的xml代码(example.xml):

代码语言:javascript
复制
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="100">
<action>
<param1>aaa</param1>
<param2>bbb</param2>
</action>
</rpc>

这是我的杨模型,example.yang(为了简洁,我只粘贴了与之比较的部分):

代码语言:javascript
复制
module example {
    rpc action {
       input {
           leaf param2 {
               type string
           }
           leaf param1 {
               type string
           }
    }
}

yang2dsdl -t rpc example.yang架构已成功生成。

yang2dsdl -s -j -b示例-t rpc -v example.xml

错误:尚不允许元素"param1“;缺少必需的元素"param2”

尽管param1和param2在输入xml文件中,但由于它们的顺序与YANG模型中的顺序不同,因此会抛出错误。

有人能告诉我如何解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2015-12-31 20:43:00

对于rpcs和其他数据,YANG RFC似乎以不同的方式处理子元素的顺序。在rpcs中,顺序必须与模型中定义的顺序完全相同。对于其他数据,子元素的顺序并不重要。

因此,在您的示例中,rpc输入不是根据YANG标准准备的,应该进行修复。yang2dsdl工具运行得很好,您不应该期望有任何“忽略rpcs的订单”选项。

rpc XML Mapping Rules

输入参数被编码为rpc节点的元素的子XML元素,其顺序与在" Input“语句中定义的顺序相同。

如果RPC操作调用成功,并且没有返回任何输出参数,则包含在RFC4741中定义的单个元素。如果返回输出参数,它们将被编码为RFC4741,中定义的元素的子元素,其顺序与在" output“语句中定义的顺序相同。

container XML Mapping Rules

容器的子节点被编码为容器元素的子元素。如果容器定义了RPC输入或输出参数,则这些子元素的编码顺序与在“容器”语句中定义的顺序相同。否则,子元素将以任何顺序进行编码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32729651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档