2012-07-24 25 views
3

有「位置不同」考慮查詢都可以在XPath

//item[value='testvalue']/ancestor::container[1] 

如果項目出現幾次容器內然後我們有按說應該在結果中出現多次幾命中。結果是節點,對不對?因此,如果我將不同值應用於它們,它們將停止成爲節點,並且該功能在技術上會返回丟失位置信息的值。但有沒有操作(重構,函數),允許保留「noded」的結果,同時排除重複的命中?

回答

1

是否有操作(重構,函數),允許保留「noded」 結果,同時排除重複命中?

根據定義中的XPath操作者/進行重複數據刪除,因此:

//item[value='testvalue']/ancestor::container[1] 

不選擇兩個相同的節點。

+0

你能指出關於重複數據刪除的文檔的某處嗎? – Maksee 2012-07-24 13:36:12

+0

@Maksee:這是在W3C XPath 2.0規範中明確定義的:http://www.w3.org/TR/2010/REC-xpath20-20101214/#id-path-expressions(見第1點)。在W3 XPath 1.0規範中,它沒有很好的定義 - 它依賴於「set」的數學概念 - 路徑表達式的結果是一個「節點集合」,這意味着(如在任何集合中)這組相同的項目由來自這個組的單個項目表示。邁克爾凱在他的書中解釋了這一點。 – 2012-07-24 14:32:28

+0

謝謝,這看起來很穩固。雖然我認爲有些情況下可能會有人想保留重複,例如計算具有特定祖先的物品。可能有更復雜的謂詞 – Maksee 2012-07-24 14:44:37