Задать вопрос
@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]


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

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

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

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

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