#xpath
#xpath
Вопрос:
Это мой HTML:
<table dir = "rtl .......">
<tbody>
<script src = "get.aspx?type=jsamp;file=ajaxamp;rev=3"......>
<script language = "JavaScript" src = "get.aspx?type=jsamp;file=mcamp;rev=6"></script>
<script>..</script>
<tr>
<td class = "d2"...>..</td>
</tr>
<tr>..</tr> <--
<tr>..</tr> <--
<tr>..</tr> <-- these elements
<tr>..</tr> <--
<tr>..</tr> <--
<tr>..</tr> <--
<tr>..</tr> <--
<tr>
<td class = "d2"...>..</td>
</tr>
<script>..</script>
<tr>..</tr>
<tr>..</tr>
<tr>..</tr>
Как мне посчитать или выбрать все <tr>
элементы между двумя <td>
элементами, идентификатор которых равен d2
?
Ответ №1:
Путь к xpath будет длинным, так что приготовьтесь:
count(//tr[preceding-sibling::tr/td[@class = 'd2']][count(.|//tr[following-sibling::tr/td[@class = 'd2']])=count(//tr[following-sibling::tr/td[@class = 'd2']])])
Чтобы выбрать фактические узлы, а не просто количество, просто удалите первое количество :
//tr[preceding-sibling::tr/td[@class = 'd2']][count(.|//tr[following-sibling::tr/td[@class = 'd2']])=count(//tr[following-sibling::tr/td[@class = 'd2']])]
Здесь происходят разные вещи , в частности:
- Выберите начальный узел, выбрав дочерний узел предыдущего родственного узла tr / td с id= ‘2’
- Выберите конечный узел, выбрав дочерний узел следующего родственного узла tr / td с id=’2′
- Используйте метод кайсиана: http://www.dpawson.co.uk/xsl/sect2/muench.html#d9940e108 чтобы получить пересечение между двумя узлами.
Комментарии:
1. По состоянию на 18.02.2020 ссылка мертва.