2008-11-03 62 views
3

我想修剪所有XHTML段落末尾的尾部空白。我正在使用Ruby與REXML庫。使用XPath:查找根節點下每個段落的最後一個文本節點

說,在有效的XHTML文件我有以下幾點:

<p>hello <span>world</span> a </p> 
<p>Hi there </p> 
<p>The End </p> 

我想這結束了:

<p>hello <span>world</span> a</p> 
<p>Hi there</p> 
<p>The End</p> 

所以我想我可以使用XPath獲取只是文本我想要的節點,然後修剪文本,這將允許我結束我想要的(之前)。

我開始與以下XPath:

//root/p/child::text() 

當然,這裏的問題是,它返回的都是P標籤的所有子文本節點。這是這樣的:

'hello ' 
' a ' 
'Hi there ' 
'The End ' 

嘗試下面的XPath給我的最後一段,而不是爲根節點的孩子的每個段落的最後文本節點的最後文本節點。

//root/p/child::text()[last()] 

這隻回報:因此'The End '

我想從XPath來得到的是:

' a ' 
'Hi there ' 
'The End ' 

我能做到這一點使用XPath?或者我應該看看使用正則表達式(這可能比XPath更令人頭疼)?

回答

7

你的榜樣爲我工作

//p/child::text()[last()]
+0

雖然只得到最後一個結果,但他希望在整個文檔 – Jake 2008-11-03 04:08:15

+0

中的所有文字都沒有,它提供了他要求的確切數據集。它返回每個p的最後一個子文本元素(在這個例子中是三個) – nickf 2008-11-03 04:12:50

1

就在你不知道的情況下,XSL具有normalize-space()功能,將擺脫開頭和結尾空間。

相關問題