xpath - 在 xpath 中使用父点符号来查找 XML 树中的另一个分支

标签 xpath notation

我正在 XML 上运行 xslt,该 XML 一度将我的当前节点置于树中的以下“item”元素处:

host/device/item

通过实验,我发现以下 xpath 将 xslt 返回到 XML 树的“host”分支,然后成功找到“host”元素的“trigger”孙元素。

../.././setting/trigger

它可以工作,但是 xpath 语法对我来说似乎很奇怪。当您从右向左从 . 读取时,点父符号 ../../. 有意义。但是子短语符号 setting/trigger 仅当您从左到右阅读时才有意义。整个xpath的“最终含义”相当于说:

host/setting/trigger

xpath 的中间 ../. 部分(或者无论它有多少个父 ../ 级别)在创建最终含义主机/设备/触发器

最佳答案

由于 . 表示 self,因此您可以将其解释为被忽略。 ./././././././*./* 含义相同,与* 含义相同.

关于读取 XPath,将其从上下文节点 host/device/item 分解

../.././setting/trigger 中,/ 字符分隔节点测试,因此,LtoR:

.. 您现在位于主机/设备,

.. 您现在是主持人

.您仍在主持人

设置您现在位于主机/设置

trigger 您现在位于 host/setting/trigger

如果你阅读它的 RtoL,那么你必须明白,你正在阅读具有相反含义的每个节点测试,而不是遵循节点测试,并且你的上下文就是你想要结束的位置,因此:

来自host/setting/trigger(您所需的端点)

trigger(读作..),您现在位于host/setting

设置(再次,..),您现在是主持人

. (.),您仍在主机

..(读作*)您可能现在位于主机/设备

..(读作*)您可能现在位于主机/设备/项目

关于xpath - 在 xpath 中使用父点符号来查找 XML 树中的另一个分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5370544/

相关文章:

java - 选择包含特定 linkText 的元素之前的元素

regex - 如何使用XPath正则表达式匹配URL

c++ - 设计用于标记和传输树的 C++ DSL

XPath 和 XML : Multiple namespaces

.net - 如何使用 xpath 谓词排除满足条件的节点以外的所有节点?

java - 带有包含 if 语句的 While 循环的方法的大 O 表示法

c++ - 指针符号和数组

c - 通过基数和指数显式定义浮点值

PHP try-catch 支持简写吗?

java - 如何使用 Selenium 将值输入到表格中的一组文本字段