//br/preceding-sibling::normalize-space(text())
我使用nokogiri获取无效的xpath表达式
答案 0 :(得分:10)
normalize-space是一个函数。你不能在那里使用它 您需要一个节点集。
也许你的意思是
//br/preceding-sibling::*
或者你可以在方括号内的谓词中使用normalize-space。将谓词视为节点集上的过滤器或选择器。所以你可以这样做:
//br/preceding-sibling::*[normalize-space()='Fred']
英文翻译为“文档中<br>
之前的所有元素,(标准化)文本为'Fred'”。在本文件中:
<html>
<p>
<h2>Fred</h2>
<br/>
</p>
<table>
<tr>
<td>
<br/>
</td>
</tr>
</table>
</html>
... xpath表达式选择<h2>
节点。
我用free XpathVisualizer tool available on codeplex想出来了。