我剛開始學習XPath,我正在學習沒有縮寫的語言。有關根節點的簡單XPath問題
當一個位置路徑字符「/」初始上下文節點力量是根節點......從本書
示例XML開始:
<widget type="gadget">
...
</widget>
如果我應該寫XPath所以我得到的類型屬性爲什麼我必須寫:
/孩子::小工具/屬性::類型
而不是這個/屬性::類型
我誤解了一些關於根節點或?因爲我想「/」和widget是一樣的......
謝謝
我剛開始學習XPath,我正在學習沒有縮寫的語言。有關根節點的簡單XPath問題
當一個位置路徑字符「/」初始上下文節點力量是根節點......從本書
示例XML開始:
<widget type="gadget">
...
</widget>
如果我應該寫XPath所以我得到的類型屬性爲什麼我必須寫:
/孩子::小工具/屬性::類型
而不是這個/屬性::類型
我誤解了一些關於根節點或?因爲我想「/」和widget是一樣的......
謝謝
從http://www.w3.org/TR/xpath/#attribute-nodes
每一個元素節點都有一個相關的 組屬性節點;該元素是 這些屬性中的每一個的父節點 節點;但是,屬性節點不是其父元素的子元素,它是 。
只有元素節點具有屬性。
根節點不是一個元素。 From http://www.w3.org/TR/xpath/#root-node
根節點是樹的根。 根節點不會發生,除非 樹的根。文檔元素的元素節點 是根節點的子節點 。根節點還有 作爲子處理指令, 註釋節點用於處理 指令和註釋,在序言中出現 ,並在 文檔元素結束後出現。
因此,在/@*
或/attribute::*
問你無法選擇喜歡的根節點的屬性:
我有沒有誤解的一些關於 根節點或?
是的。你不應該混淆文檔元素根節點(抽象)(有時也稱爲元根)
@Alejandro謝謝 – LuckyLuke 2011-04-06 19:31:57
@Andreas:不客氣。 – 2011-04-06 19:36:09
如果我應該寫的XPath所以 我得到的類型屬性爲什麼我有 寫:
/child::widget/attribute::type
,而不是像這樣
/attribute::type
中的XPath EXP ression:
/attribute::type
裝置:
選擇XML文檔的根節點的type
屬性。
但是,根節點沒有屬性(按照W3C Spec),因此,上述XPath表達式不會選擇任何內容。
你想:
/widget/@type
這意味着:
選擇最上面的元素(名爲widget
)的XML文檔的的type
屬性。
我誤解了一些關於 的根節點或?因爲我想 「/」和widget是一樣的......
永遠記住,根節點/
不是元素。根據W3C XPath Spec。
謝謝你,親愛的 – LuckyLuke 2011-04-06 19:32:40
@Andreas,不客氣。 – 2011-04-06 19:38:09
好問題,+1。查看我的答案以獲得完整的解釋。 – 2011-04-06 19:30:26