2016-05-11 29 views
0

說我有這樣的一羣元素:的XPath獲取某個節點回用最大值

<rs> 
<r> 
    <roomID>ID2</roomID> 
</r> 
<r> 
    <roomID>ID2</roomID> 
</r> 
<r> 
    <roomID>ID3</roomID> 
</r> 
<r> 
    <roomID>ID2</roomID> 
</r> 
</rs> 

<rooms> 
<room id="ID1"> 
    <val>200</val> 
</room> 
<room id="ID2"> 
    <val>100</val> 
</room> 
<room id="ID3"> 
    <val>200</val> 
</room> 
</rooms> 

我通過rs需要週期,並找到具有基於roomID最高的房值r ,這將是這裏的第三個r元素(roomID = ID3)。

如果我這樣做:

<xsl:variable name="max1" select="max(//room[@id=//r/roomID]/val)"/> 

,我得到200,這是正確的。但是有什麼辦法可以從中得到特定的ID嗎?如果我只是使用最大值從room元素中取回ID,我不知道它是否從同一節點回來。事情是這樣的:

//room[val=max(//room[@id=//r/roomID]/val)]/@id[1] 

回答

1

我想這個作品:

<xsl:value-of select="//r[roomID=//room[val=max(//room[@id=//r/roomID]/val)]/@id]"/> 

似乎有點凌亂,但。

0

您的xapth只有一個小錯誤在選擇第一個[1]之前,將表達式放在括號(...)中。 Try:

(//room[val = max(//room[@id=//r/roomID]/val)]/@id)[1]