我正在 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/