




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、XPath語法規(guī)則、XPath 術語:1. 節(jié)點:在 XPath 中,有七種類型的節(jié)點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔(根)節(jié)點。 XML 文檔是被作為節(jié)點樹來對待的。樹的根被稱為文檔節(jié)點或者根節(jié)點。實例1: XML文檔:<?xml version="1.0" encoding="ISO-8859-1"?><bookstore><book><title lang="en">Harry Potter</title><author>J K. Row
2、ling</author><year>2005</year><price>29.99</price></book></bookstore>上面的 XML 文檔中的節(jié)點例子:<bookstore> (文檔節(jié)點),<author>J K. Rowling</author> (元素節(jié)點),lang="en"(屬性節(jié)點)。2. 基本值(或稱原子值,Atomic value)基本值是無父或無子的節(jié)點?;局档睦樱涸趯嵗? 的 xml 文檔中 J K. Rowlin
3、g、 "en"3. 項目( Item)項目是基本值或者節(jié)點。4. 節(jié)點的關系:1 )父節(jié)點(Parent) :每個元素以及屬性都有一個父。在上面實例1 的 xml 文檔中,book 元素是 title 、 author、 year 以及 price 元素的父節(jié)點。2)子節(jié)點(Children) :元素節(jié)點可有零個、一個或多個子。在上面實例1 的 xml 文檔中,title、 author、 year 以及 price元素都是book 元素的子。3)同胞(Sibling) :擁有相同的父的節(jié)點,在上面實例1 的 xml 文檔中,title、 author、 year 以及 p
4、rice 元素都是同胞。4)先輩(Ancestor)某節(jié)點的父、父的父, 等等。 在實例 1 的 xml 文檔中, title 元素的先輩是book 元素和 bookstore元素。5)后代(Descendant)某個節(jié)點的子,子的子, 等等。 在實例 1 的 xml 文檔中, bookstore 的后代是book、 title、 author、year 以及 price 元素。、 XPath 語法:XPath 使用路徑表達式來選取XML 文檔中的節(jié)點或節(jié)點集。節(jié)點是通過沿著路徑(path) 或者步 (steps)來選取的。我們將在下面的例子中使用這個XML 文檔:<?xml versi
5、on="1.0" encoding="ISO-8859-1"?><bookstore><book><title lang="eng">Harry Potter</title><price>29.99</price></book><book><title lang="eng”>Learning XML</title><price>39.95</price></book>
6、;</bookstore> 1.選取節(jié)點XPath使用路徑表達式在 XML文檔中選取節(jié)點。節(jié)點是通過沿著路徑或者step來選取的。下面列出了最有用的路徑表達式:表iA式描述nodename選取此下點的所后十IJ點。/從根節(jié)點選取。/從匹配選擇的當前節(jié)點選擇義檔中的節(jié)點,而不考慮它們的位置。.選取當前節(jié)點。.選取當前節(jié)點的父節(jié)點。選取屬性。實例:在下面的表格中,我們已列出了一些路徑表達式以及表達式的結果:路徑表這式結果bookstore選取 bookstore 兀素的所后十ij點。/bookstore選取根兒素bookstore 。注釋:假如路徑起始于正斜杠(/),則此路徑始終代表到
7、某元素的絕對路徑!bookstore/book選取屬于 bookstore的子兀素的所有 book 兀素。/book選取所有book子兀素,而不管它們在文檔中的位置。bookstore/book選擇屬于bookstore 兀素的后代的所有 book兀素,而不管它們位于bookstore 之下的什么位直。lang選取名為lang的所用屬性。2.謂語(Predicates )謂語用來查找某個特定的節(jié)點或者包含某個指定的值的節(jié)點,謂語被嵌在方括號中。實例:在下面的表格中,我們列出了帶有謂語的一些路徑表達式,以及表達式的結果:路徑表這式結果/bookstore/book1選取WT bookstore
8、子的 個 book teHTo/bookstore/booklast()選取IO1 bookstore 十兀系的取 book 兀系。/bookstore/booklast()-1選取屬于 bookstore 子兀素的倒數第一個 book 兀素。/bookstore/bookposition()<3選取最前面的兩個屬于bookstore兀素的子兀素的 book兀素。/titlelang選取所有擁有名為lang的屬性的title 元素。/titlelang='eng'選取所有title 元素,且這些元素擁有值為eng的lang 屬性。/bookstore/bookprice&
9、gt;35.00選取 bookstore 71的所有 book teUt, 且其中的 price 兀 素的值須大于35.00 。/bookstore/bookprice>35.00/title選取 bookstore 71中的 book 71的所有 title teUt, 且 其中的price 兀素的值須大于 35.00 。3.選取未知節(jié)點XPath通配符可用來選取未知的XML元素。通配符描述*匹配任何元素節(jié)點。*匹配任何屬性節(jié)點。node()匹配任何類型的節(jié)點。實例:在下面的表格中,我們列出了一些路徑表達式,以及這些表達式的結果:路徑表這式結果/bookstore/*選取booksto
10、re兀素的所有子兀素。/*選取文檔中的所有元素。title*選取所有帶有屬性的title 元素。4.選取若干路徑通過在路徑表達式中使用“ |”運算符,您可以選取若干個路徑。實例:在下面的表格中,我們列出了一些路徑表達式,以及這些表達式的結果:路徑表這式結果/book/title | /book/price選取book 九素的所有title 和price九系。/title | /price選取義檔中的所有title 和price九系。/bookstore/book/title | /price選取屬于bookstore 兀素的book 兀素的所有文檔中所有的 price 元素。title 九素,
11、以及、 XPath Axes (坐標軸)我們將在下面的例子中使用此XML文檔:<?xml version="1.0" encoding="ISO-8859-1"?><bookstore><book><title lang="eng">Harry Potter</title><price>29.99</price></book><book><title lang="eng">Learning XML
12、</title><price>39.95</price></book></bookstore>1. XPath 軸軸可定義相對于當前節(jié)點的節(jié)點集。軸名稱結果ancestor選取當前節(jié)點的所有先輩(父、祖父等)。ancestor-or-self選取當前節(jié)點的所有先輩(父、祖父等)以及當前節(jié)點本身。attribute選取當前節(jié)點的所有屬性。child選取當前節(jié)點的所有子元素。descendant選取當前節(jié)點的所有后代元素(子、孫等)。descendant-or-self選取當前節(jié)點的所有后代元素(子、孫等)以及當前節(jié)點本身。followi
13、ng選取義檔中當前節(jié)點的結束標簽之后的所有節(jié)點。namespace選取當前節(jié)點的所有命名空間節(jié)點。parent選取當前節(jié)點的父節(jié)點。preceding選取義檔中當前節(jié)點的開始標簽之前的所有節(jié)點。preceding-sibling選取當前節(jié)點之前的所有同級節(jié)點。self選取當前節(jié)點。2.位置路徑表達式位置路徑可以是絕對的,也可以是相對的。絕對路徑起始于正斜杠(/),而相對路徑不會這樣。在兩種情況中,位置路徑均包括一個或多個步,每個步均被斜杠分割:絕對位置路徑:/step/step/相對位置路徑:step/step/.每個步均根據當前節(jié)點集之中的節(jié)點來進行計算。3.步(step )包括:軸(axi
14、s ):定義所選節(jié)點與當前節(jié)點之間的樹關系。節(jié)點測試(node-test ):識別某個軸內部的節(jié)點。零個或者更多謂語(predicate ):更深入地提煉所選的節(jié)點集。last()position。text()contains(attr, 'value') starts-with(attr, 'value') count(attr) string-length()normalize-space()步的語法:軸名稱 二節(jié)點測試謂語。實例:例子結果child二book選取所有屬于當前節(jié)點的子元素的book節(jié)點。attribute:lang選取當前節(jié)點的lang屬性。
15、child:*選取當前節(jié)點的所有子元素。attribute:*選取當前節(jié)點的所有屬性。child:text()選取當前節(jié)點的所有義本子節(jié)點。child:node()選取當前節(jié)點的所有子節(jié)點。descendant:book選取當前節(jié)點的所有 book后代。ancestor二book選擇當前節(jié)點的所后book先輩。ancestor-or-self二book選取當前下點的所后 book先輩以及當前下點(如果此下點是 book 節(jié)點)child:*/child:price選取當前節(jié)點的所有 price 孫節(jié)點。4.常用函數:節(jié)點數組的最后一個下標索引,從1開始節(jié)點的文本內容模糊匹配是否以指定字符開頭匹
16、配次數返回字符串的字符數,你應該用<替代,用>代替函數刪除了前部和尾部的空格,并且把連續(xù)的空格串替換為一個單一的空格四、XPath運算符:運算符描述實例返回值|計算兩個節(jié)點集/book | /cd返回所后擁后 book 和cd 兀素的下點集+加法6 + 410-減法6 - 42*乘法6 * 424div除法8 div 42=price=9.80如果price 是9.80 ,貝U返回true 。如果price 是9.90 , 則返回false 。!=不等于price!=9.80如果price 是9.90 ,貝U返回true 。如果price 是9.80 , 則返回fa
17、lse 。<小于price<9.80如果price 是9.00 ,貝U返回true 。如果price 是9.90 , 則返回false 。<=小于或等于price<=9.80如果price 是9.00 ,貝U返回true 。如果price 是9.90 , 則返回false 。>price>9.80如果price 是9.90 ,貝U返回true 。如果price 是9.80 , 則返回false 。>=price>=9.80如果price 是9.90 ,貝U返回true 。如果price 是9.70 , 則返回false 。or或price=9.8
18、0 or price=9.70如果price 是9.80 ,貝U返回true 。如果price 是9.50 , 則返回false 。and與price>9.00 and price<9.90如果price 是9.80 ,貝U返回true 。如果price 是8.50 , 則返回false 。mod計算除法的余數5 mod 21五、XPath實例實例一:我們將在下面的例子中使用這個XML文檔:<?xml version="1.0" encoding="ISO-8859-1”?><bookstore><book categor
19、y="COOKING"><title lang="en">Everyday Italian</title><author>Giada De Laurentiis</author><year>2005</year><price>30.00</price></book><book category="CHILDREN"><title lang="en">Harry Potter<
20、;/title><author>J K. Rowling</author><year>2005</year><price>29.99</price></book><book category="WEB"><title lang="en">XQuery Kick Start</title><author>James McGovern</author><author>Per Bothner</
21、author><author>Kurt Cagle</author><author>James Linn</author><author>Vaidyanathan Nagarajan</author><year>2003</year><price>49.99</price></book><book category="WEB"><title lang="en">Learning XML</
22、title><author>Erik T. Ray</author><year>2003</year><price>39.95</price></book></bookstore>1. 選取所有title/bookstore/book/title/text()2. 選取第一個book 的 title/bookstore/book1/title/text()3. 選取所有價格/bookstore/book/price/text()4. 選取價格高于35的price節(jié)點/bookstore/boo
23、kprice>35/price5. 選取價格高于35的title節(jié)點/bookstore/bookprice>35/title6. 選取所有的book 節(jié)點/bookstore/book7. 選取第一個book 節(jié)點/bookstore/book0/text()8. 選取 price/bookstore/book/price/text()9. 選取價格高于35 的price價格/bookstore/bookprice>35/price10. 選取價格高于35 的title節(jié)點/bookstore/bookprice>35/title11. 選取屬于bookstore 子
24、元素的最后一個book 元素。/bookstore/booklast()12. 選取屬于bookstore 子元素的倒數第二個book 元素。/bookstore/booklast()-113. 選取最前面的兩個屬于bookstore 元素的子元素的book 元素。/bookstore/bookposition()<314. 選取 ID 為 1,標題中含有Java 的 book 元素 ./bookstore/bookid='1' and contains(title, 'Java')實例二:我們將利用下面的 XML文檔描述XPath語法<?xml v
25、ersion="1.0" encoding="GB2312"?><order><item catalog="parts"><itemNumber>C2688-67037</itemNumber><description>LCD 液晶顯示器</description><quantity>1</quantity><price>358.00</price></item><item catalog=&
26、quot;parts"><itemNumber>C2688-67061</itemNumber><description> 音箱 </description><quantity>1</quantity> <price>16.50</price></item><item catalog="parts"><itemNumber>C2688-67010</itemNumber><description> 鼠標
27、</description><quantity>1</quantity> <price>8.50</price></item> </order> 節(jié)點定位:一個XPath 的模式是使用反斜杠“/ ”分開子元素名稱描述路徑下面的 XPath 表達式選擇元素order 下元素 item 中的所有price 元素/order/item/price 下面的 XPath 表達式選擇文檔中所有的item 元素/item選擇未知元素:通配符 “* ”可用于選擇未知 XML元素 下面的 XPath 表達式選擇元素order 中
28、的所有item 元素所屬的子元素/order/item/*下面的 XPath 表達式選擇元素order 下所有孫子輩的price 元素/order/*/price 下面的XPath 表達式選擇所有具有兩個祖先的price 元素/*/*/price 下面的XPath 表達式選擇文檔所有元素/*選擇分支: 使用方括號 可以指定特定的元素下面的 XPath 表達式選擇元素order 中的第一個item 的子元素/order/item1下面的 XPath 表達式選擇元素order 中的最后一個item 的子元素/order/itemlast()下面的 XPath 表達式選擇元素order 中具有 price 元素的 item 元素/order/itemprice下面的 XPat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件工程教程(微課版)課件 第5章 結構化設計
- 頸椎骨折的中醫(yī)護理查房
- 道德誠信培訓
- 旅游公共關系
- 德育校長述職報告
- 廣告公司創(chuàng)意總監(jiān)求職簡歷
- 行政單位年終總結
- 抖音代運營服務合同
- 體育行業(yè)賽事策劃與運動員管理培訓方案
- 協(xié)作往來文件匯編
- 臨時工雇傭合同范本2025年度
- (二調)武漢市2025屆高中畢業(yè)生二月調研考試 地理試卷
- “艾梅乙”感染者消除醫(yī)療歧視制度-
- 2024-2025學年八年級地理下冊第七章《南方地區(qū)》檢測卷(人教版)
- 森林防火知識
- 2025年黑龍江林業(yè)職業(yè)技術學院單招職業(yè)適應性測試題庫帶答案
- 2025-2030年中國測序儀市場運行態(tài)勢及發(fā)展規(guī)劃分析報告
- 第二單元第1課《精彩瞬間》第2課時 課件-七年級美術下冊(人教版2024)
- 2025年公共營養(yǎng)師三級理論試題及答案
- 煤礦防治水安全質量標準化評分表
- 2025電動自行車安全技術規(guī)范培訓課件
評論
0/150
提交評論