//br/preceding-sibling::normalize-space(text())
我用 nokogiri 得到无效的 xpath 表达式
归一化空间是一个函数。你不能在那里使用它。
你需要一个节点集。
也许你的意思是
//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>
节点。
我使用 codeplex 上提供的免费 XpathVisualizer 工具解决了这个问题。