Как игнорировать элемент в XPATH - PullRequest
0 голосов
/ 17 октября 2018

Я хочу выбрать все 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>

Я хочу выбрать все a теги, которые не находятся внутри <div id="not-take-inside">....</div> элемента.

Я пробую XPATH вроде //a[parent::*[not(@id='not-take-inside')]] не работает.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Вам нужно только выбрать все a s, у которых нет атрибута ancestor:: узла @id с содержанием not-take-inside:

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

Нет необходимости в двух предикатах.

0 голосов
/ 17 октября 2018

Простое использование //a[not(ancestor::*[@id='not-take-inside'])]:)

...