0

我们知道 Netconf 使用 yang 作为数据建模语言。它还包含 XML。为什么 XML 本身不用作建模语言?是什么阻止了 XML 作为数据建模语言?

4

1 回答 1

2

请注意,NETCONF 协议相关的 RFC 不强制要求任何特定的数据模型。

数据建模和内容问题超出了 NETCONF 协议的范围。假设设备的数据模型对应用程序来说是众所周知的,并且双方都知道诸如数据的布局、包含、键控、查找、替换和管理等问题,以及施加的任何其他约束通过数据模型。

NETCONF 在特定于设备数据模型的元素内携带配置数据。该协议将该元素的内容视为不透明数据。设备使用功能来宣布设备实现的数据模型集。能力定义详细说明了数据模型所施加的操作和约束。

设备和管理器可以支持多种数据模型,包括标准和专有数据模型。

RFC6241,第 5.2 节

您还应该注意,YANG 有一种基于 XML 的格式,称为 YIN,因此从技术上讲,它也可以被视为一种基于 XML 的数据建模语言。

YANG 模块可以被翻译成另一种基于 XML 的语法,称为 YIN。翻译后的模块称为 YIN 模块。本节介绍两种格式之间的双向映射规则。

YANG 和 YIN 格式包含使用不同符号的等效信息。YIN 表示法使开发人员能够用 XML 表示 YANG 数据模型,因此可以使用丰富的基于 XML 的工具进行数据过滤和验证、代码和文档的自动生成以及其他任务。可以使用 XSLT 或 XML 验证器等工具。

YANG 和 YIN 之间的映射不会修改模型的信息内容。不保留注释和空格。

RFC7950,第 13 节

然而,YANG 最初设计时考虑到了 NETCONF,并且是目前在 NETCONF 会话中对对等方交换的数据进行建模的首选方式。

为什么不使用现有的基于 XML 的数据模型,例如 XML Schema (XSD) 和 RelaxNG?

当时的论点之一是可读性。人类的可读性是 YANG 的一个高优先级目标——你应该能够通过硬编码所有内容来实现一个模块,有些模块实际上需要你通过节点​​描述中的规范文本来实现。除了机器之外,基于 XML 的数据模型的可读性不是很好。我会让你判断 YANG 是否比 XML 更具可读性,因为这完全是主观的(你可以通过并排阅读 YANG 和 YIN 格式的模块来测试这一点)。

使用更具体的语言(YANG)在同行之间实现最大的互操作性(换句话说,标准化)也容易得多。想象一下使用抽象 XML 语言(如 XSD)的每个人的混乱。就 XSD 而言,一切都只是元素和属性——您无法立即判断定义是表示通知、rpc、操作还是只是简单的数据节点。你必须依靠评论来处理这些事情。当然,其他人可能会为此使用处理指令。或任何其他 XML 构造...

于 2021-07-15T07:42:24.183 回答