2012-03-29 56 views
0

說我有以下XML snipit:XPath查找最後3個項目在先前的範圍

<ul> 
    <li>alice</li> 
    <li>bob</li> 
    <li>carla</li> 
    <li>dave</li> 
    <li>eric</li> 
    <li>fanny</li> 
</ul> 
<team>Team 1</team> 

我想最後的3名成員(戴夫·埃裏克·範妮)。

我可以用//team/preceding::li抓住所有團隊成員。

我不成功抓住最後3名成員範圍

//team/preceding::li[last()-3 to last()]或位置 //team/preceding::li[position() > last()-3]

+0

我冒昧地更正了你的XPath('之前'是在三處進行的'繼續')。 – 2012-03-29 17:09:00

回答

2

在解決preceding::的情況下,訂單反過來 - 然後返回到文檔訂單。

xml sel -t -c '//team/preceding::li[position() <= 3]' foo.xml 
<li>dave</li><li>eric</li><li>fanny</li> 
1

對於XML

<ul> 
    <li>alice</li> 
    <li>bob</li> 
    <li>carla</li> 
    <li>dave</li> 
    <li>eric</li> 
    <li>fanny</li> 
</ul> 

使用

//li[position() > last() - 3] 

它選擇恰好3最後節點。

+0

這隻適用於有一個列表的情況。我有很多。 – zhon 2012-03-29 17:21:52

+0

@zhon,您能否提供真實的樣品來重現您的需求? – 2012-03-29 17:37:25

+0

Thx @kirill,chris很好地回答了// team/preceding :: li [position()<= 3] – zhon 2012-03-29 17:58:22

相關問題