7.11. “anyxml”声明

anyxml”语句在模式树中定义一个内部节点。它需要一个参数,它是一个标识符,后面是一个包含anyxml信息的子状态块。

anyxml”语句用于表示未知的XML块。 XML没有限制。例如,在RPC回复中这可能很有用。 NETCONF中的<get-config>操作中的<filter>参数就是一个例子。

anyxml节点不能被扩充(见7.17节)。

数据树中的零个或一个实例中存在anyxml节点。

由于使用anyxml限制了对内容的操作,所以不应该使用“anyxml”语句来定义配置数据。

应该指出的是,在YANG版本1中,“anyxml”是唯一可以模拟未知数据层次的声明。在很多情况下,这个未知的数据层次实际上是在YANG中建模的,但具体的YANG数据模型在设计时并不知道。在这些情况下,建议使用“anydata”(第7.10节)而不是“anyxml”。

7.11.1. anyxml子语句

+--------------+---------+-------------+
| substatement | section | cardinality |
+--------------+---------+-------------+
| config       | 7.21.1  | 0..1        |
| description  | 7.21.3  | 0..1        |
| if-feature   | 7.20.2  | 0..n        |
| mandatory    | 7.6.5   | 0..1        |
| must         | 7.5.3   | 0..n        |
| reference    | 7.21.4  | 0..1        |
| status       | 7.21.2  | 0..1        |
| when         | 7.21.5  | 0..1        |
+--------------+---------+-------------+

7.11.2. XMl编码规则

一个anyxml节点被编码为一个XML元素。 元素的本地名称是anyxml的标识符,其名称空间是模块的XML名称空间(请参阅第7.1.3节)。 anyxml节点的值被编码为这个元素的XML内容。

请注意,编码中使用的任何XML前缀对于每个实例编码都是本地的。 这意味着相同的XML可能会被不同的实现编码。

7.11.3. NETCONF <edit-config>操作

anyxml节点被视为不透明的数据块。 这些数据只能被整体修改。

NETCONF服务器忽略anyxml节点子元素上的任何“operation”属性。

NETCONF服务器处理<edit-config>请求时,anyxml节点的过程元素如下所示:

  • 如果操作是“merge”或“replace”,则创建该节点(如果该节点不存在),并将其值设置为XML RPC数据中找到的anyxml节点的XML内容。

  • 如果操作是“create”,则创建该节点(如果该节点不存在),并将其值设置为XML RPC数据中找到的anyxml节点的XML内容。 如果节点已经存在,则返回“data exists”错误。

  • 如果操作是“delete”,则该节点将被删除(如果存在)。 如果节点不存在,则返回“data missing”错误。

7.11.4. 使用示例

鉴于以下“anyxml”声明:

anyxml html-info;

以下是相同的anyxml值的两个有效的编码:

<html-info>
  <p xmlns="http://www.w3.org/1999/xhtml">
    This is <em>very</em> cool.
  </p>
</html-info>

<html-info>
  <x:p xmlns:x="http://www.w3.org/1999/xhtml">
    This is <x:em>very</x:em> cool.
  </x:p>
</html-info>

results matching ""

    No results matching ""