如何忽略 XPATH 中的元素

How to Ignore element in XPATH

我想要 select 所有 a 不在 <div id="not-take-inside">....</div> 元素内的标签。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div>
        <div><a href="#">TEXT</a></div>
        <div><a href="#">TEXT</a></div>
        <div><a href="#">TEXT</a></div>
    </div>
    <div id="not-take-inside">
        <ul>
            <li><a href="#">TEXT</a></li>
            <li><a href="#">TEXT</a></li>
            <li><a href="#">TEXT</a></li>
            <li><a href="#">TEXT</a></li>
            <li><a href="#">TEXT</a></li>
        </ul>
    </div>
    <div>
        <div><a href="#">TEXT</a></div>
        <div><a href="#">TEXT</a></div>
        <div><a href="#">TEXT</a></div>
        <div>
            <div><a href="#">TEXT</a></div>
            <div><a href="#">TEXT</a></div>
            <div><a href="#">TEXT</a></div>
        </div>
    </div>
</body>
</html>

我想要 select 所有 a 不在 <div id="not-take-inside">....</div> 元素内的标签。

我试了 XPATH 好像 //a[parent::*[not(@id='not-take-inside')]] 不行。

简单使用//a[not(ancestor::*[@id='not-take-inside'])]:)

你只需要select所有a没有@idancestor::属性节点,内容为not-take-inside:

//a[not(ancestor::*/@id='not-take-inside')]

不需要两个谓词。