Выражение XPath для поиска потомков с атрибутом, но без потомков этих потомков - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь найти выражение XPath , которое выбирает всех потомков элемента с определенным атрибутом, , но ни одного из потомков этих элементов с этим атрибутом.

Чтобы показать, что я имею в виду, вот пример:

<div element-id="1" data-type="TreeView">
    <div element-id="2" data-type=Border">
        <div element-id="3" data-type="TreeViewItem" data-value="Shapes">
            <div element-id="4" data-type="TreeViewItem" data-value="Triagles">
                <div delement-id="5" data-type="TreeViewItem" data-value="Isosceles"></div>
            </div>
            <div element-id="6" data-type="TreeViewItem" data-value="Quadrilaterals">
                <div element-id="7" data-type=Border">
                    <div element-id="8" data-type="TreeViewItem" data-value="Square"></div>
                    <div element-id="9" data-type="TreeViewItem" data-value="Rectangle"></div>
                    <div element-id="10" data-type="TreeViewItem" data-value="Rhombus"></div>
                </div>
            </div>
            <div element-id="12" data-type="TreeViewItem" data-value="Pentagons">
            </div>
        </div>
    </div>
</div>

Если бы я использовал желаемое поисковое выражение в вышеупомянутом html, с элементом 1 ('element-id 'равно' 1 ') является текущим элементом и ищет всех потомков, где' тип данных 'равен' TreeViewItem '.Тогда выражение вернет только элемент 3.

Существуют другие элементы, в которых «тип данных» равен TreeViewItem, но, поскольку они все являются потомками элемента 3, они будут исключены из результатов поиска.

Другой пример: если бы элемент 3 был текущим элементом и осуществлял поиск всех потомков с желаемым выражением, где «тип данных» равен «TreeViewItem», то элементы 4, 6 и 12 будут возвращены.Но никто из их потомков не будет.

Также важное различие .Элементы не обязательно являются прямыми потомками текущего поискового элемента.Вот почему так важно искать потомков, а не прямых потомков.

В настоящее время у меня есть выражение XPath:

.//div[@data-type='TreeViewItem']

Но это возвращает всех потомков с этим атрибутом.И я не уверен, как исключить потомков потомков, у которых уже есть этот атрибут.

Поэтому, если бы кто-то мог помочь мне закончить это выражение, это было бы очень признательно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...