【发布时间】:2015-07-13 19:50:33
【问题描述】:
我知道绝对 XPath 会从 XML 树的根节点返回被检查的节点。
但我无法理解 XPath 中用于检查/查找节点的.// 的含义。
【问题讨论】:
我知道绝对 XPath 会从 XML 树的根节点返回被检查的节点。
但我无法理解 XPath 中用于检查/查找节点的.// 的含义。
【问题讨论】:
.是当前节点;它是self::node() 的缩写。
// 是后代或自我轴;它是/descendant-or-self::node()/ 的缩写。
.// 将从当前节点开始沿后代或自身轴一起选择。将此与从文档根目录开始的// 进行对比。
考虑以下 HTML:
<html>
<body>
<div id="id1">
<p>First paragraph</p>
<div>
<p>Second paragraph</p>
</div>
</div>
<p>Third paragraph</p>
</body>
</html>
//p 将选择所有段落:
<p>First paragraph</p>
<p>Second paragraph</p>
<p>Third paragraph</p>
另一方面,如果当前节点位于div 元素(与"id1" 中的@id),那么.//p 将只选择当前节点下的段落 :
<p>First paragraph</p>
<p>Second paragraph</p>
请注意,当当前节点是id1 div 时,.//p 不会选择第三段,因为第三段不在该 div 元素下。
【讨论】: