2013-12-08 5 views
1

Моя проблема с использованием XPath - всякий раз, когда я использую функцию «подстроки», я получаю только одно совпадение, и я хочу получить их все. Другая проблема - всякий раз, когда я использую комбинацию «подстроки» и оператора | он просто не будет работать (нет совпадений).XPath: Использование substring-after возвращает только одно совпадение

Например: http://www.tripadvisor.com/Hotel_Review-g52024-d653910-Reviews-Ace_Hotel_Portland-Portland_Oregon.html

на этой странице я использовал запрос

//SPAN[@class='ratingDate relativeDate']/@title | //*[@class='ratingDate']/text() 

я получил 10 матчей, но некоторые из них начинают с «Отзыв». так что я добавил «подстрока-после» и не получили никаких совпадений

оригинальный синтаксис:

//SPAN[@class='ratingDate relativeDate']/@title | substring-after(//*[@class='ratingDate']/text(), 'Reviewed ') 

ответ

3

С чистого XPath 1.0 вы не можете решить, что, если вы используете XPath 2.0 или XQuery 1.0 вы можете поместить вызов substring-after на последний шаг пути, например //*[@class='ratingDate']/substring-after(., 'REVIEWED').

Если у вас только XPath 1.0, вам сначала нужно выбрать элементы с XPath, а затем перебрать результат на вашем языке хоста, чтобы извлечь подстроку для каждого элемента; как вы это делаете, зависит от языка хоста и API XPath.

Смежные вопросы