2

我在一个 XML 上运行一个 xslt,它在某一时刻将我的当前节点放在树中的以下“项目”元素中:

host/device/item

我通过实验发现,以下 xpath 将 xslt 带回 XML 树的“host”分支,然后成功定位“host”元素的“trigger”大子元素。

../.././setting/trigger

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

host/setting/trigger

xpath的中间../.部分(或者../它是多少父级别)总是被忽略以创建最终含义是否总是正确的host/device/trigger

4

1 回答 1

4

由于.意味着自我,您可以将其解释为被忽略。 ./././././././*表示与 相同./*,即与 相同*

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

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

..你现在在主机/设备上,

..你现在在房东

.你还在主机

setting你现在在主机/设置

trigger你现在在主机/设置/触发器

如果您阅读 RtoL,那么您必须了解,您正在阅读具有相反含义的每个节点测试,而不是遵循节点测试,并且您的上下文是您想要结束的地方,所以:

host/setting/trigger(您想要的端点)

trigger(读作..),你现在在host/setting

setting(再次,..),您现在是主机

.( .),你还在主机

..(读作*)你现在可能在主机/设备

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

于 2011-03-20T19:19:17.033 回答