在XPath中//和.//有什么区别?

时间:2016-10-06 18:13:50

标签: xml google-chrome xpath google-chrome-devtools

当我在Chrome开发者工具'上执行这些XPath表达式时通过google.com控制台,我得到了相同的结果

  • $x("(.//*[@id='gs_lc0'])")

  • $x("(//*[@id='gs_lc0'])")

XPath中dot的用法是什么?

1 个答案:

答案 0 :(得分:2)

在XPath中,//.//都是句法缩写:

  • ///descendant-or-self::node()/
  • 的缩写
  • .//self::node()/descendant-or-self::node()/
  • 的缩写

descendant-or-self轴包含上下文节点和上下文节点的所有后代。 因此,//.//之间的差异会减少到上下文节点的差异。

对于//,上下文节点是根节点; // absolute location path

对于.//,上下文节点取决于上下文; .//relative location path。在Google Developer Tools控制台的顶级评估中,上下文节点是根节点,因此您将看到相同的结果。

简而言之:

  • 如果要从整个文档中选择节点,请使用//
  • 如果您只想在上下文节点下选择节点,请使用.//