我擁有如下所示的XML。使用節點(或類似節點)的絕對路徑作爲密鑰獲得唯一結果集
<CONTAINER>
<SEARCHFOR />
<ITEM/>
<ITEM/>
<ITEM/>
<ITEM/>
<ITEM/>
<CONTAINER>
<SEARCHFOR />
<ITEM/>
<ITEM/>
<CONTAINER>
<SEARCHFOR />
<ITEM id="1" />
<ITEM/>
<ITEM/>
<CONTAINER>
<ITEM id="2" />
</CONTAINER>
</CONTAINER>
</CONTAINER>
</CONTAINER>
我正在尋找與ITEM節點範圍最接近的SEARCHFOR節點。看我的其他問題,我的意思是在這裏。
Find nearest ancestor/sibling that matches criteria
我需要首先找到的感興趣的項目節點,然後從那裏工作了爲SEARCHFOR節點。換句話說,// SEARCHFOR作爲我的表達是不夠的。我有一個表達式,它將SEARCHFOR節點定位在距每個ITEM節點最近的範圍內。這工作得很好,看起來像......
for $v in
//ITEM
return
($v/(ancestor::CONTAINER/SEARCHFOR|preceding-sibling::SEARCHFOR))[last()]
然而,結果列表中不是唯一的。我收到11個結果,每個ITEM節點都按預期結果。我想要一個只包含3個項目的獨特結果集。我已經在這裏看到了在XSL中使用分組的建議,但是我不能使用我正在使用的工具來做到這一點,但我可以使用XPath 2.0語法。我也看到使用normalize-space()來獲得獨特的結果,但是我的XML沒有任何文本。我的獨特性需要由每個節點的絕對路徑決定。
感謝您的任何援助, 邁克爾
謝謝!添加(for ... return ...)/。訣竅。 – 2011-12-14 18:08:22