6.4. XPath评估

YANG依靠XML路径语言(XPath)1.0 [XPATH]作为指定许多节点间引用和依赖关系的符号。实现不需要实现XPath解释器,但必须确保在数据模型中编码的需求得到执行。执行的方式是执行决定。 XPath表达式必须在语法上是正确的,所有使用的前缀必须存在于XPath上下文中(见第6.4.1节)。实现可以选择手动实现它们,而不是直接使用XPath表达式。

XPath表达式中使用的数据模型与XPath 1.0 [XPATH]中使用的数据模型相同,具有与XSLT 1.0所使用的根节点子节点相同的扩展名(请参见[XSLT]中的第3.1节)。具体而言,这意味着根节点可以具有任意数量的元素节点作为其子节点。

数据树没有文档顺序的概念。一个实现需要选择一些文档顺序,但是如何做是一个实现的决定。这意味着YANG模块中的XPath表达式不应该依赖于任何特定的文档顺序。

XPath 1.0中的数字是IEEE 754 [IEEE754-2008]双精度浮点值;参见[XPATH]中的第3.5节。这意味着int64uint64decimal64类型的某些值(请参见第9.29.3节)不能在XPath表达式中精确表示。因此,在XPath表达式中使用具有64位数值的节点时,应该谨慎行事。特别是涉及到对比的数字比较可能会产生意想不到的结果。

例如,请考虑以下定义:

  1. leaf lxiv {
  2. type decimal64 {
  3. fraction-digits 18;
  4. }
  5. must ". <= 10";
  6. }

具有值10.0000000000000001的“lxiv”叶的实例将成功通过验证。