XML和Web數(shù)據(jù)管理XQuery課件_第1頁
XML和Web數(shù)據(jù)管理XQuery課件_第2頁
XML和Web數(shù)據(jù)管理XQuery課件_第3頁
XML和Web數(shù)據(jù)管理XQuery課件_第4頁
XML和Web數(shù)據(jù)管理XQuery課件_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、XQueryXQuery什么是 XQuery什么是 XQuery XQuery 是用于 XML 數(shù)據(jù)查詢的語言 XQuery 對 XML 的作用類似 SQL 對數(shù)據(jù)庫的作用 XQuery 被構(gòu)建在 XPath 表達式之上 XQuery 被所有主要的數(shù)據(jù)庫引擎支持(IBM、Oracle、Microsoft等等) XQuery 是 W3C 標準。 什么是 XQuery什么是 XQuery 什么是 XQueryXQuery 和 XML 查詢有關(guān)XQuery 是用來從 XML 文檔查找和提取元素及屬性的語言。 例如:從存儲在名為 cd_catalog.xml 的 XML 文檔中的 CD 集那里選取所有

2、價格低于 10 美元的 CD 紀錄。什么是 XQueryXQuery 和 XML 查詢有關(guān)什么是 XQueryXQuery 與 XPathXQuery 1.0 和 XPath 2.0 共享相同的數(shù)據(jù)模型,并支持相同的函數(shù)和運算符。XQuery - 應(yīng)用XQuery 可被用來:提取信息以便在網(wǎng)絡(luò)服務(wù)中使用 生成摘要報告 把 XML 數(shù)據(jù)轉(zhuǎn)換為 XHTML 為獲得相關(guān)信息而搜索網(wǎng)絡(luò)文檔 什么是 XQueryXQuery 與 XPathXQuery 實例XQuery 實例 通過研究一個例子來學(xué)習一些基礎(chǔ)的 XQuery 語法。 如何從 “books.xml” 選取節(jié)點?函數(shù)XQuery 使用函數(shù)來提

3、取 XML 文檔中的數(shù)據(jù)。doc() 用于打開 books.xml 文件:doc(books.xml) XQuery 實例XQuery 實例 XQuery 實例路徑表達式XQuery 使用路徑表達式在 XML 文檔中通過元素進行導(dǎo)航。下面的路徑表達式用于在 books.xml 文件中選取所有的 title 元素:doc(books.xml)/bookstore/book/title (/bookstore 選取 bookstore 元素,/book 選取 bookstore 元素下的所有 book 元素,而 /title 選取每個 book 元素下的所有 title 元素)上面的 XQuery

4、 可提取以下數(shù)據(jù):Everyday Italian Harry Potter XQuery Kick Start Learning XML XQuery 實例路徑表達式XQuery 實例謂語XQuery 使用謂語來限定從 XML 文檔所提取的數(shù)據(jù)。下面的謂語用于選取 bookstore 元素下的所有 book 元素,并且所選取的 book 元素下的 price 元素的值必須小于 30:doc(books.xml)/bookstore/bookprice30 上面的 XQuery 可提取到下面的數(shù)據(jù): Harry Potter J K. Rowling 2019 29.99 XQuery 實例謂

5、語XQuery FLWOR 表達式XQuery FLWOR 表達式使用 FLWOR 從 “books.xml” 選取節(jié)點 請看下面這個路徑表達式:doc(books.xml)/bookstore/bookprice30/title 上面這個表達式可選取 bookstore 元素下的 book 元素下所有的 title 元素,并且其中的 price 元素的值必須大于 30。XQuery FLWOR 表達式XQuery FLWOR 表XQuery FLWOR 表達式下面這個 FLWOR 表達式所選取的數(shù)據(jù)和上面的路徑表達式是相同的:for $x in doc(books.xml)/bookstor

6、e/book where $x/price30 return $x/title 結(jié)果是:XQuery Kick Start Learning XML 通過 FLWOR,您可以對結(jié)果進行排序:for $x in doc(books.xml)/bookstore/book where $x/price30 order by $x/title return $x/title XQuery FLWOR 表達式下面這個 FLWOR 表達XQuery FLWOR 表達式FLWOR 是 For, Let, Where, Order by, Return 的只取首字母縮寫。for 語句把 bookstore

7、元素下的所有 book 元素提取到名為 $x 的變量中。where 語句選取了 price 元素值大于 30 的 book 元素。order by 語句定義了排序次序。將根據(jù) title 元素進行排序。return 語句規(guī)定返回什么內(nèi)容。在此返回的是 title 元素。上面的 XQuery 表達式的結(jié)果:Learning XML XQuery Kick Start XQuery FLWOR 表達式FLWOR 是 For, XQuery FLWOR + HTMLXQuery FLWOR + HTML 在一個 HTML 列表中提交結(jié)果 請看下面的 XQuery FLWOR 表達式:for $x i

8、n doc(books.xml)/bookstore/book/title order by $x return $x 上面的表達式會選取 bookstore 元素下的 book 元素下的所有 title 元素,并以字母順序返回 title 元素。XQuery FLWOR + HTMLXQuery FLWOXQuery FLWOR + HTML如果希望使用 HTML 列表列出我們的書店中所有的書目。我們向 FLWOR 表達式添加 和 標簽: for $x in doc(books.xml)/bookstore/book/title order by $x return $x 以上代碼的結(jié)果:

9、Everyday Italian Harry Potter Learning XML XQuery Kick Start XQuery FLWOR + HTML如果希望使用 HTMXQuery FLWOR + HTML如果希望去除 title 元素,而僅僅顯示 title 元素內(nèi)的數(shù)據(jù)。 for $x in doc(books.xml)/bookstore/book/title order by $x return data($x) 結(jié)果將是一個 HTML 列表: Everyday Italian Harry Potter Learning XML XQuery Kick Start XQue

10、ry FLWOR + HTML如果希望去除 titXQuery 術(shù)語XQuery 術(shù)語節(jié)點 在 XQuery 中,有七種節(jié)點:元素、屬性、文本、命名空間、處理指令、注釋、以及文檔(根)節(jié)點。XML 文檔是被作為節(jié)點樹來對待的。樹的根被稱為文檔節(jié)點或者根節(jié)點?;局担ɑ蚍Q原子值,Atomic value)基本值是無父或無子的節(jié)點?;局档睦樱篔 K. Rowling en 項目項目是基本值或者節(jié)點。XQuery 術(shù)語XQuery 術(shù)語XQuery 術(shù)語節(jié)點關(guān)系 父(Parent) 子(Children) 同胞(Sibling) 先輩(Ancestor) 后代(Descendant) XQuer

11、y 術(shù)語節(jié)點關(guān)系 XQuery 語法XQuery 語法XQuery 的基礎(chǔ)語法規(guī)則: XQuery 對大小寫敏感 XQuery 的元素、屬性以及變量必須是合法的 XML 名稱。 XQuery 字符串值可使用單引號或雙引號。 XQuery 變量由 “$” 并跟隨一個名稱來進行定義,舉例,$bookstore XQuery 注釋被 (: 和 :) 分割,舉例,(: XQuery 注釋 :) XQuery 語法XQuery 語法XQuery 語法XQuery 條件表達式If-Then-Else 可以在 XQuery 中使用。請看下面的例子:for $x in doc(books.xml)/books

12、tore/book return if ($x/category=CHILDREN) then data($x/title) else data($x/title) 請注意 If-Then-Else 的語法:if 表達式后的圓括號是必需的。else 也是必需的,不過僅僅寫 “else ()” 也是可以的。上面的例子的結(jié)果:Everyday Italian Harry Potter Learning XML XQuery Kick Start XQuery 語法XQuery 條件表達式XQuery 語法XQuery 比較 在 XQuery 中,有兩種方法來比較值。通用比較:=, !=, , ,

13、= 值的比較:eq、ne、lt、le、gt、ge 這兩種比較方法的差異如下:請看下面的 XQuery 表達式:$bookstore/book/q 10 如果 q 屬性的值大于 10,上面的表達式的返回值為 true。$bookstore/book/q gt 10 如果僅返回一個 q,且它的值大于 10,那么表達式返回 true。如果不止一個 q 被返回,則會發(fā)生錯誤。XQuery 語法XQuery 比較 XQuery 添加元素和屬性XQuery 添加元素和屬性 向結(jié)果添加元素和屬性 在結(jié)果中引用輸入文件中的元素和屬性:for $x in doc(books.xml)/bookstore/boo

14、k/title order by $x return $x 上面的 XQuery 表達式會在結(jié)果中引用 title 元素和 lang 屬性,就像這樣:Everyday Italian Harry Potter Learning XML XQuery Kick Start 以上 XQuery 表達式返回 title 元素的方式和它們在輸入文檔中被描述的方式的相同的。XQuery 添加元素和屬性XQuery 添加元素和屬性 XQuery 添加元素和屬性要向結(jié)果添加我們自己的元素和屬性!添加 HTML 元素和文本現(xiàn)在,我們要向結(jié)果添加 HTML 元素。我們會把結(jié)果放在一個 HTML 列表中: Boo

15、kstore for $x in doc(books.xml)/bookstore/book order by $x/title return data($x/title). Category: data($x/category) XQuery 添加元素和屬性要向結(jié)果添加我們自己的元素和屬XQuery 添加元素和屬性上面的 XQuery 表達式可生成以下結(jié)果: Bookstore Everyday Italian. Category: COOKING Harry Potter. Category: CHILDREN Learning XML. Category: WEB XQuery Kick

16、 Start. Category: WEB XQuery 添加元素和屬性上面的 XQuery 表達式可XQuery 選擇和過濾XQuery 選擇和過濾 可以使用路徑表達式或 FLWOR 表達式來選則和過濾元素。請看下面的 FLWOR 表達式:for $x in doc(books.xml)/bookstore/book where $x/price30 order by $x/title return $x/title XQuery 選擇和過濾XQuery 選擇和過濾 XQuery 選擇和過濾for (可選) 向每個由 in 表達式返回的項目捆綁一個變量 let (可選)可完成變量分配 whe

17、re (可選) 設(shè)定一個條件 order by (可選) 設(shè)定結(jié)果的排列順序 return 規(guī)定在結(jié)果中返回的內(nèi)容 XQuery 選擇和過濾for XQuery 選擇和過濾for 語句for 語句可將變量捆綁到由 in 表達式返回的每個項目。for 語句可產(chǎn)生迭代。在同一個 FLWOR 表達式中可存在多重 for 語句。如需在一個 for 語句中進行指定次數(shù)地循環(huán),您可使用關(guān)鍵詞 to : for $x in (1 to 5) return $x 結(jié)果: 1 2 3 4 5 XQuery 選擇和過濾for 語句XQuery 選擇和過濾關(guān)鍵詞 at 可用于計算迭代:for $x at $i in

18、 doc(books.xml)/bookstore/book/title return $i. data($x) 結(jié)果:1. Everyday Italian 2. Harry Potter 3. XQuery Kick Start 4. Learning XML XQuery 選擇和過濾關(guān)鍵詞 at 可用于計算迭代:XQuery 選擇和過濾允許多個 in 表達式。請使用逗號來分割每一個 in 表達式:for $x in (10,20), $y in (100,200) return x=$x and y=$y 結(jié)果:x=10 and y=100 x=10 and y=200 x=20 and

19、 y=100 x=20 and y=200 XQuery 選擇和過濾允許多個 in 表達式。XQuery 選擇和過濾let 語句let 語句可完成變量分配,并可避免多次重復(fù)相同的表達式。let 語句不會導(dǎo)致迭代。let $x := (1 to 5) return $x 結(jié)果:1 2 3 4 5 where 語句where 語句用于為結(jié)果設(shè)定一個或多個條件。where $x/price30 and $x/price100 XQuery 選擇和過濾let 語句XQuery 選擇和過濾order by 語句order by 語句用于規(guī)定結(jié)果的排序次序。此處,我們要根據(jù) category 和 titl

20、e 來對結(jié)果進行排序:for $x in doc(books.xml)/bookstore/book order by $x/category, $x/title return $x/title 結(jié)果:Harry Potter Everyday Italian Learning XML XQuery Kick Start XQuery 選擇和過濾order by 語句XQuery 選擇和過濾return 語句:return 語句規(guī)定要返回的內(nèi)容。for $x in doc(books.xml)/bookstore/book return $x/title 結(jié)果:Everyday Italian Harry Potter XQuery Kick Start Learning XML XQuery 選擇和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論