@Shimpanze

Как найти following-sibling И сам узел?

Здравствуйте!

<root>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li><div><a>6</a></div></li>
<li>7</li>
<li>8</li>
</root>


Как в данном коде найти все узлы перед узлом li/div/a И сам узел от которого отталкиваемся (li/div/a)?

Должно вернуть:

<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li><div><a>6</a></div></li>


Пробовал так:

//li[div/a]/self::node()[self::node() and self::node()/preceding-sibling::li]


Не работает, почему-то. Хотя и должно.

Спасибо!
  • Вопрос задан
  • 1090 просмотров
Решения вопроса 1
alekciy
@alekciy
Вёбных дел мастер
У вас в заголовке вопроса ошибка. following это после узла. Правильно выражение будет таким:
//li[div/a]/(preceding-sibling::li|self::li)
Если есть какое-то непонимание в данном выражении, то спрашивайте. Могу пояснить на каждом шаге адресации.

Есть есть желание глубже разобраться в XPath, то рекомендую вводное видео: XPath это сильно!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы