Xpath 查询以查找其属性与其祖先元素的属性匹配的所有元素
Xpath query to find all elements whose attributes match those of their ancestor elements
使用这个例子HTML:
<body>
<ul>
<li><a href="one.html">One</a>
<ul>
<li><a href="one.html">One a</a></li> <!-- I want this one -->
<li><a href="one.html">One b</a></li> <!-- I want this one -->
</ul>
<ul>
<li><a href="two.html">Two</a></li>
<li><a href="three.html">Three</a></li>
<li><a href="four.html">Four</a></li>
<li><a href="five.html">Five</a>
<ul>
<li><a href="five.html">Five a</a></li> <!-- I want this one -->
<li><a href="five.html">Five b</a></li> <!-- I want this one -->
</ul>
</li>
</ul>
</li>
</ul>
</body>
我需要匹配任何 <li>
元素,其子 <a>
元素包含与其父元素 <li>/<a>
相同的 <href>
属性。
我已经试过了,但它不起作用,因为它选择了所有元素(因为它匹配第一个 <li>
项):
//li[a[@href=ancestor::li/a/@href]]
您可以试试这些 XPath :
//a[@href=//preceding-sibling::a/@href]
这是我在 Xpath 游乐场上使用上面的结果 XML
尝试
//li[a/@href=ancestor::li[1]/a/@href]
使用这个例子HTML:
<body>
<ul>
<li><a href="one.html">One</a>
<ul>
<li><a href="one.html">One a</a></li> <!-- I want this one -->
<li><a href="one.html">One b</a></li> <!-- I want this one -->
</ul>
<ul>
<li><a href="two.html">Two</a></li>
<li><a href="three.html">Three</a></li>
<li><a href="four.html">Four</a></li>
<li><a href="five.html">Five</a>
<ul>
<li><a href="five.html">Five a</a></li> <!-- I want this one -->
<li><a href="five.html">Five b</a></li> <!-- I want this one -->
</ul>
</li>
</ul>
</li>
</ul>
</body>
我需要匹配任何 <li>
元素,其子 <a>
元素包含与其父元素 <li>/<a>
相同的 <href>
属性。
我已经试过了,但它不起作用,因为它选择了所有元素(因为它匹配第一个 <li>
项):
//li[a[@href=ancestor::li/a/@href]]
您可以试试这些 XPath :
//a[@href=//preceding-sibling::a/@href]
这是我在 Xpath 游乐场上使用上面的结果 XML
尝试
//li[a/@href=ancestor::li[1]/a/@href]