XPath基本概念(二)

2021-08-27 06:45:21 字數 1787 閱讀 8664

xpath的路徑說明是比較簡單的,最基本的是路徑匹配。很像檔案路徑的表達方式。路徑匹配的符號有:

"/"選擇根結點或是表示路徑。比如「/a/b/c」表示匹配a結點的孫節點c

"//"匹配子元素。比如:「a」匹配所有a元素,「//a/b」匹配a中的所有b元素

"*"萬用字元。表示所有元素。比如「/a/*」匹配a節點的所有子節點。

"|"或運算,表示路徑的「或」運算。比如「//a|//b」表示所有a和b元素

僅僅有路徑說明是不夠的,下面加入關於位置的規定:

[1]選擇第乙個元素

[last()]選擇最後乙個元素

[number]按照指定數字的確定位置。/booklist/book[3],匹配looklist中第三個book元素

[position()=number]由數字指定第幾個位置的元素

[position()>number]匹配所有位置號大於等於指定數字的元素

現在我們來看看,加入對匹配屬性的要求。這樣,對資料內容的要求就比較完整了。對屬性的匹配要求主要是通過「@」運算子來完成的。

[@id]匹配具有屬性「id」的元素

[@name]匹配具有屬性名「name」的元素

[@*]匹配有屬性的元素

[not(@*)]匹配沒有屬性的元素

[@id="name"]匹配有屬性「id」為「name」的元素

xpath還提供類似於親屬關係的匹配方式。每個節點都有祖先節點、父節點、兄弟節點、子節點、後繼節點。

child關鍵字匹配子元素。像"child::a"匹配子元素節點"a","child::*"匹配所有子元素節點,"child::text()"匹配所有文字子節點,"child::node()"匹配所有子節點,包括所有型別。

descendant關鍵字匹配後繼節點。"descendant::para"匹配後繼節點"para","descendant::*"匹配所有後繼節點,不包括當前節點。"descendant-or-self::*"屬性匹配所有後繼節點和當前節點。

還有"ancestor,foollow,self,parent"等關鍵字,使用方法舉例說明如下:

ancestor-or-self::para匹配para的祖先,如果當前節點是para。匹配結果包括當前節點。

ancestor::para匹配所有para的祖先。

self::para所有para自身元素。

follow-sibling::*匹配所有後面緊鄰的兄弟元素節點。

follow::*匹配所有後續節點。

preceding-sibling::book[position()=1]匹配book的前乙個兄弟節點。

對於屬性,使用關鍵字「attribute」。比如"attribute::*"匹配所有屬性節點。「attribute::name」匹配屬性「name」指定的屬性節點。

下面看幾個綜合的例子:

child::chapter/descendant::para

匹配當前節點的"chapter"子節點的"para"後繼節點。

child::para[position()=last()-1]

匹配位於倒數第二個"para"子元素。

/child::doc/child::chapter[position()=5]/child::section[position()=2]

匹配"doc"節點的子節點——第5章(chapter)第2節(section)。

child::para[position()=5][attribute::type="warning"]

當當前節點的第5個"para"子節點具有值為"warning"的屬性"type",那麼匹配這個子節點。

Docker基本概念(二)

docker 包括三個基本概念 1 docker 映象 image docker 映象 image 是乙個特殊的檔案系統,除了提供容器執行時所需的程式 庫 資源 配置等檔案外,還包含了一些為執行時準備的一些配置引數 如匿名卷 環境變數 使用者等 映象不包含任何動態資料,其內容在構建之後也不會被改變。...

基本概念理解(二)

1 bool型別表示真值true和false。可以將算數型別的任何值賦值給bool獨享。0值算數型別表示false,任何非0的值都表示true 為什麼經常搞反,汗!也可以直接用false或者true給bool型變數賦值。2 c 建議每個內建變數都進行初始化。雖然這樣做不是必須的,但是會更加容易和安全...

基本概念 C 基本概念

由於工作中需要用到c 編寫的一些工具,有時候需要根據需求修改或者定製工具,所以現在不得不學習一下c 的基礎語法,此為筆記,不成章法!機器語言 組合語言 高階語言 面向過程的程式設計方法 物件導向的程式設計方法 泛型程式設計方法 1 演算法設計 2 源程式編輯 3 編譯 4 連線 5 執行除錯 輸入裝...