Возврат нескольких строк с использованием XPATH - PullRequest
0 голосов
/ 06 апреля 2019

Исходный веб-сайт находится здесь на Нетис

Поскольку я не знаю всех терминологий, я собираюсь сохранить это как можно более нейтральным.Я пытаюсь собрать информацию с этого сайта в отдельные столбцы в google doc .Мне нужен жирный текст в одном столбце, связанная ссылка в следующем и описание заклинания в другом.Проблема возникает, когда описание ссылается на другое заклинание, выделенное курсивом, которое разбивает описание на несколько частей, видимых в C153 и C154.Я думаю, что было бы проще просто взять все между жирным шрифтом и переводом строки, но я не знаю контекста.

Из примера, такого как (Простите, если форматирование неверное, я 'я в основном догадываюсь);

<p>
 <b>
  <a href='link1'> 
  Bold Link 1
  </a>
 </b>
 :Followed by normal text
 <br>
 <b>
  <a href='link2'>
  Bold Link 2
  </a>
 </b>
 :Normal Text
 <i>with an italic</i>
 in between
 <br>
 <b>
  <a href='link3'>
  Bold Link 3
  </a>
 </b>
 :Back to this one
 <br>
</p>

Я могу заставить его вернуться :Followed by normal text Normal text in between :Back to this one

Но я хочу, чтобы он вернулся :Followed by normal text :Normal text with an italic in between :Back to this one

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

1 Ответ

1 голос
/ 09 апреля 2019

Если вы хотите выбрать каждого потомка текстового узла корневого элемента p, который также не является потомком a, вы можете использовать этот XPath:

/p//text()[not(ancestor::a)]

или более ограниченный, используя метод Кайяна:

/p//text()[count(.|/p//a//text()) != count(/p//a//text())]

Примечание : XPath 1.0 не имеет ни пересечений, ни заданных операторов дифференцирования, но имеет объединение по оператору | и количество элементов по функции count(). Dr.Майкл Кей обнаружил, что их было достаточно для проверки на членство в наборе: a элемент является членом B набора тогда и только тогда, когда {a} union B имеет такую ​​же мощность, что и B.Оттуда вы строите все остальные операции над множествами.

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