Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

XPath 概述

XSLT 使用 XML 路径语言 (XPath) 标准来指定和查找输入文档的 XML 层次结构中的元素。XPath 强大的表达式语法使您能够定义用于选择 XML 输入文档部分的复杂标准。

节点和轴

XPath 将文档层次结构的每一部分视为一个 节点。对于提交脚本、作脚本、事件脚本和 SNMP 脚本,重要的节点类型是 元素节点文本节点属性节点。考虑以下 XML 标记:

这些 XML 标记元素显示以下类型的 XPath 节点的示例:

  • <host-name>my-router</host-name>- “元素”节点

  • my-router- 文本节点

  • inactive="inactive"- 属性节点

XPath 将节点视为排列在某些 上。以下列表包括一些常用轴。但是,XPath 还有许多其他轴,此处未列出。

  • ancestor - 从节点向上到其一系列父节点的点

  • child - 指向元素节点的直接子节点列表

  • attribute - 指向元素节点的属性集列表

  • follow-sibling - 指向位于节点后面但位于同一父节点下的节点

  • descendant - 包含节点的所有后代

XSLT 从一个特定节点计算每个 XPath 表达式,该节点称为 上下文节点或简称为上下文)。上下文节点是 XSLT 处理器当前正在查找的节点。XSLT 在遍历文档层次结构时更改上下文。它评估来自该特定上下文节点的 XPath 表达式。

注意:

在 Junos OS 提交脚本中,上下文节点概念对应于 Junos OS 层次结构级别。例如, /configuration/system/domain-name XPath 表达式将上下文节点 [edit system domain-name] 设置为层次结构级别。

建议在所有提交脚本中包含该<xsl:template match="configuration">模板。此元素使您能够从脚本中的编程指令(如 <xsl:for-each><xsl:if>)中的所有 XPath 表达式中排除/configuration/根元素。因此,XPath 表达式可以从 Junos 层次结构级别开始(例如 system/domain-name)。有关详细信息,请参阅提交脚本所需的样板

路径和谓词语法

XPath 表达式包含两种类型的语法:路径语法和谓词语法。路径语法指定要检查哪些节点,根据其在当前上下文节点的文档层次结构中的一个轴上的路径位置。路径语法的几个示例如下:

  • accounting-options- 选择名为 accounting-options 当前上下文子项的元素节点。

  • server/name- 选择名为 name 的元素节点,该节点是已命名 server 为当前上下文的子元素的子元素的子节点。

  • /configuration/system/domain-name- 选择名为domain-name的元素节点,该节点是文档根元素 (configuration) 的子元素的子元素。system

  • parent::system/host-name- 选择名为 host-name 的元素节点,该元素节点是当前上下文节点的父元素的 system 子元素。您可以将轴缩写 parent:: 为两个句点 (..)。

谓词语法允许您在路径语法选择的每个节点上执行测试。结果集仅包括通过测试的节点。谓词出现在路径节点后的方括号 ([ ]) 内。以下是谓词语法的几个示例:

  • server[name = '10.1.1.1']- 选择一个名为 server 当前上下文的子元素,并且具有一个值 name 为 10.1.1.1 的子元素。

  • *[@inactive]- 选择任何节点 (* 匹配任何节点),该节点是当前上下文的子项,且属性 (@ 从轴中 attribute 选择节点) inactive名为 。

  • route[starts-with(next-hop, '10.10.')]- 选择一个名为 route 的元素,该元素是当前上下文的子元素,并且具有一个值 next-hop 以字符串 10.10 开头的子元素。

    starts-with 函数是 XPath 中内置的众多函数之一。XPath 还支持关系测试、相等性测试以及此处未列出的更多功能。

XPath 运算符

XPath 支持许多运算符,例如:

  • 逻辑运算符,如 AND| (或)

  • 比较运算符,如 =!=<>

  • 数值运算符,例如 +-*

XSLT 脚本是 XML 文档。在 XSLT 中,必须以与在 XML 中相同的方式表示小于符号。因此,您必须将小于<()运算符表示为, &lt; 将小于或等于<=()运算符表示为 &lt;=

有关 XPath 函数和运算符的更多信息,请参阅全面的 XPath 参考指南。XPath 在 http://w3c.org/TR/xpath 的 W3C 规范中进行了完整描述。