Xpath 查询以查找其属性与其祖先元素匹配的所有元素

时间:2021-06-08 00:17:09

标签: html xpath xpath-2.0

使用此示例 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> 相同的 <href> 属性的任何 <li>/<a> 元素。

我试过这个,它不起作用,因为它选择了所有元素(因为它匹配第一个 <li> 项目):

//li[a[@href=ancestor::li/a/@href]]

2 个答案:

答案 0 :(得分:3)

试试

//li[a/@href=ancestor::li[1]/a/@href]

答案 1 :(得分:1)

你可以试试这些 XPath :

//a[@href=//preceding-sibling::a/@href]

这是我使用上述 XML 在 Xpath Playground 上的结果

Xpath Playground Screenshot