Я пытаюсь найти выражение 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']
Но это возвращает всех потомков с этим атрибутом.И я не уверен, как исключить потомков потомков, у которых уже есть этот атрибут.
Поэтому, если бы кто-то мог помочь мне закончить это выражение, это было бы очень признательно!