2015-10-18 74 views
1

这是我在做什么,从XHTML检索所有文字:如何在XPath 1.0中使用带有后缀的text()?

//p/text() 

工作正常,但他们都去一个接一个,没有任何分隔符。我想在它们之间添加一个空格。我想:

//p/concat(text(), " ") 

没有运气:

XPath error : Invalid expression 
//p/concat(text(), " ") 
     ^

我使用xmllint版本20902

回答

3

XPath是真的选择不操作。通过超越选择文本来安排它在选定的项目之间有间距,你从单纯的选择到操纵过关。 对于操作,请考虑XSLT而不是XPath。

这就是说,如果你可以的XPath 2.0(通过另一种工具 - xmllint仅支持的XPath 1.0),你可以加入选择的串在一起,通过string-join():但是

string-join(//p/text(), ' ') 

注意的是,//p/text()将错过div,span等文字。也许你的意思是//*/text()//text()?还要注意的是,即使在XPath 1.0中,你也可以通过string(/)得到所有的文本,尽管这样也不能满足你增加空间的愿望。

相关问题