说我有很多这样的元素:
<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
,并根据r
找到具有最高房价值的roomID
,这将是此处的第三个r
元素( with 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]
答案 0 :(得分:1)
我认为这有效:
<xsl:value-of select="//r[roomID=//room[val=max(//room[@id=//r/roomID]/val)]/@id]"/>
但是,似乎有点凌乱。
答案 1 :(得分:0)
你的xapth只有一个小错误在选择第一个(...)
之前,将表达式括在括号[1]
中。
试试:
(//room[val = max(//room[@id=//r/roomID]/val)]/@id)[1]