xpath根据(相对)子内容选择父级

时间:2015-04-01 22:18:02

标签: html xml xpath

这个xpath返回带有类theclass的两个div,我希望根据它具有特定文本内容的span来匹配。 (实际使用跨度嵌套在许多节点下)所以我不想从父节点指定跨度的整个路径。

我想返回第一个div。

XPATH

//div[contains(@class, "theclass")][//span[text()="this"]]

HTML / XML

<html>
<div class="theclass">
<ul>
<li>
    <strong>f</strong>
    <span>this</span>
</li>
</ul>
</div>
<div class="theclass">
<ul>
<li>
    <strong>g</strong>
    <span>no</span>
</li>
</ul>
</div>
<div class="notclass">
<ul>
<li>
    <strong>h</strong>
    <span>not</span>
</li>
</ul>
</div>
</html>

1 个答案:

答案 0 :(得分:4)

通过添加div在当前父.的上下文中进行搜索:

//div[contains(@class, "theclass") and .//span="this"]

演示(使用xmllint):

$ xmllint index.html --xpath '//div[contains(@class, "theclass") and .//span="this"]'
<div class="theclass">
<ul>
<li>
    <strong>f</strong>
    <span>this</span>
</li>
</ul>