XPath:使用substring-after只返回一个匹配项

时间:2013-12-08 16:08:49

标签: xpath substring

我使用XPath的问题是每当我使用“substring”函数时,我只得到一个匹配,我想得到它们。 另一个问题是每当我使用“substring”和operator |的组合时它只是不起作用(没有匹配)。

例如:http://www.tripadvisor.com/Hotel_Review-g52024-d653910-Reviews-Ace_Hotel_Portland-Portland_Oregon.html

在这个网页上我使用了查询

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

我有10场比赛,但其中一些以“已审核”开头。所以我添加了“substring-after” 并且没有得到任何比赛

原始语法:

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

1 个答案:

答案 0 :(得分:3)

使用纯XPath 1.0无法解决这个问题,如果您使用XPath 2.0或XQuery 1.0,则可以将substring-after调用放入路径的最后一步,例如: //*[@class='ratingDate']/substring-after(., 'REVIEWED')

如果你只有XPath 1.0,那么首先需要用XPath选择元素,然后用宿主语言迭代结果,为每个元素提取子字符串;如何做到这取决于主机语言和XPath API。