2011-02-22 37 views
2

對不起,但我真的在XPath noob。所以,這是我的問題。讓我們假設我們有結構像這樣的......如何按參數過濾節點,然後將位置()!= 1作爲結果?

<structure> 
    <item filter=0>1 do not display</item> 
    <item filter=1>2 display</item> 
    <item filter=1>3 display</item> 
    <item filter=0>4 do not display</item> 
</structure> 

如何應用過濾器structure[filter=1],並從得到的數據只選擇第一個元素? 我想這將是類似structure[filter=1][position() = 1]

PS:請推薦在線xlst測試工具。

謝謝。

回答

3

你幾乎自己做了。

/*/item[@filter = 1][1] 

看看這個例子(明確value-of只是爲了清楚):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> 
    <xsl:template match="/"> 
     <xsl:value-of select="*/item[@filter = 1][1]"/> 
    </xsl:template> 
</xsl:stylesheet> 

結果對這種結構良好的輸入:

<structure> 
    <item filter="0">1 do not display</item> 
    <item filter="1">2 display</item> 
    <item filter="1">3 display</item> 
    <item filter="0">4 do not display</item> 
</structure> 

將是2 display

要選擇所有項目,那場比賽@filter=1條件,除了他們的第一個使用該XPath表達式:

/*/item[@filter = 1][position() > 1] 
+0

+1正確答案。 – 2011-02-22 23:42:59