1 / 82

第 14 章 XML技術的應用

第 14 章 XML技術的應用. 14-1 XML 資源連結 -XLink 與 XPointer 14-2 新世代的 Web 表單 -XForms 14-3 XML 資料查詢 -XQuery 14-4 定義 Web 資源 -RDF 14-5 新聞聚合服務 -RSS. 14-1 XML資源連結-XLink與XPointer. XLink 的基礎 簡單連結與資源描述 連結行為 擴充連結 XPointer 定位語言. XLink 的基礎 -1.

Download Presentation

第 14 章 XML技術的應用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第14章 XML技術的應用 • 14-1 XML資源連結-XLink與XPointer • 14-2 新世代的Web表單-XForms • 14-3 XML資料查詢-XQuery • 14-4 定義Web資源-RDF • 14-5 新聞聚合服務-RSS

  2. 14-1 XML資源連結-XLink與XPointer • XLink的基礎 • 簡單連結與資源描述 • 連結行為 • 擴充連結 • XPointer定位語言

  3. XLink的基礎-1 • 「XLink」(XML Linking Language)是一種在XML文件建立超連結的語言,能夠連結一系列XML文件的資源,在2001年6月27日成為W3C的建議規格,目前版本是1.0版。 • 不同於HTML語言是使用<a>標籤建立超連結,在XML文件的任何元素都可以擁有XLink行為來連結URI資源,URI可以是整份XML文件,或是使用XPointer指出的部分內容。 • XLink支援類似HTML超連結的簡單連結(Simple Links),和功能更加強大的擴充連結(Extended Links)。

  4. XLink的基礎-2 XLink的基本語法 • XML文件並沒有固定標籤來定義XLink,事實上,任何XML元素都可以擁有XLink行為,其基本語法,如下所示: <tag_name xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="..." xlink:href="..." xlink:show="..." xlink:actuate="..."> ....... </tag_name>

  5. XLink的基礎-3 • 我們是使用XLink屬性來定義XML元素擁有XLink功能,相關屬性的說明,如下表所示:

  6. XLink的基礎-4 • 例如:XML元素isp是擁有連結中華電信HiNet功能的XLink元素,如下所示: <isp xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.hinet.net">HiNET</isp> • <isp>開始標籤定義XLink的W3C預設名稱空間,xlink:type屬性值simple,表示為簡單連結(Simple Links),xlink:href屬性是URI資源,以此例就是URL網址。

  7. XLink的基礎-5 XLink屬性的DTD • XML文件如果擁有DTD,對於這些擁有XLink行為的元素,其DTD指令,如下所示: <!ELEMENT isp (#PCDATA) > <!ATTLIST isp xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink" xlink:type (simple) #FIXED "simple" xlink:href CDATA #REQUIRED >

  8. XLink的基礎-6 支援XLink規格的瀏覽程式 • 目前支援XLink規格的瀏覽程式並不多,Internet Explorer和Opera瀏覽程式完全不支援XLink。最新版的Mozilla和Netscape瀏覽程式也只支援部分XLink規格,主要是XLink簡單連結部分的規格。

  9. 簡單連結與資源描述-1 簡單連結 • 簡單連結類似HTML超連結<a>標籤的連結功能,可以連結單一資源,從一個來源文件跳至目的文件,目的文件可以是同一份文件的不同位置,或是另一份文件,如下圖所示:

  10. 簡單連結與資源描述-2 • 在XML元素指定xlink:type屬性值為simple,就表示此XML元素是簡單連結,如下所示: <isp xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.hinet.net"> HiNET </isp> • 上述isp元素支援XLink簡單連結,其URI是中華電信HiNET的URL網址。

  11. 簡單連結與資源描述-3 描述連結的資源 • 在XML文件的連結元素可以進一步使用xlink:title和xlink:role屬性來描述連結的資源。各屬性的說明,如下表所示:

  12. 簡單連結與資源描述-4 • 例如:在search連結元素新增xlink:title和xlink:role屬性來描述連結資源,如下所示: <search xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://tw.yahoo.com/" xlink:title="Yahoo Search" xlink:role="http://tw.help.yahoo.com/"> Yahoo!搜尋 </search>

  13. 簡單連結與資源描述-5 • xlink:title和xlink:role屬性的DTD宣告,如下所示: xlink:title CDATA #IMPLIED xlink:role CDATA #IMPLIED

  14. 連結行為-1 • 在XLink連結元素擁有2個選項屬性xlink:show和xlink:actuate,可以定義XLink的連結行為,也就是決定如何顯示連結資源和在那種情況下來連結資源。 • 連結行為xlink:show和xlink:actuate屬性的DTD宣告,如下所示: xlink:show ( new | replace | embed | other | none ) #IMPLIED xlink:actuate ( onRequest | onLoad | other | none ) #IMPLIED

  15. 連結行為-2 xlink:show屬性 • XLink的xlink:show屬性可以描述當啟動連結時,例如:按下連結時,如何顯示連結的資源。其屬性值共有5種,如下表所示:

  16. 連結行為-3 • 例如:在isp元素新增xlink:show屬性決定連結行為,如下所示: <isp xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.seed.net.tw" xlink:show="embed"> SeedNet </isp> • 上述xlink:show屬性值embed,表示在目前顯示的資源插入連結的資源。

  17. 連結行為-4 xlink:actuate屬性 • XLink的xlink:actuate屬性可以描述何時或在什麼情況下來啟動連結。其屬性值共有4種,如下表所示:

  18. 連結行為-5 • 例如:在search元素新增xlink:actuate屬性決定連結行為,如下所示: <search xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://tw.yahoo.com/" xlink:title="Yahoo!" xlink:role="http://tw.help.yahoo.com/" xlink:actuate="onRequest"> Yahoo!搜尋 </search>

  19. 擴充連結-1 什麼是擴充連結 • 擴充連結是使用一個連結即可結合多個不同資源,屬於一種多方向連結(Multidirectional Links)。以資料結構來說,擴充連結是將資源視為頂點(Vertices),資源間連結的邊線(Edges)組成的圖形(Graph),如下圖所示:

  20. 擴充連結-2 擴充連結的語法 • 擴充連結的語法和簡單連結十分相似,其差異只在連結元素的xlink:type屬性值是extended,如下所示: <courseload xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="extended"> ……. </courseload>

  21. 擴充連結-3 • 參與資源為其子元素score、person和course,分為本機資源的score成績元素,如下所示: <score xlink:type="resource" xlink:label="Score">85</score> • 上述xlink:type屬性值resource表示是本機資源,xlink:label屬性值是資源標籤,主要的目的是建立之後的連結路徑。

  22. 擴充連結-4 • 其它參與的資源都是遠端資源,其xlink:type屬性值是locator,如下所示: <person xlink:type="locator" xlink:href="students/joe_chen.xml" xlink:label="Student"/> <person xlink:type="locator" xlink:href="profs/smith_chen.xml" xlink:label="Professor"/> <course xlink:type="locator" xlink:href="courses/cs201.xml" xlink:label="CS201"/>

  23. 擴充連結-5 連結路徑 • 連結路徑(Arcs)定義擴充連結參與資源的走訪規則,其xlink:type屬性值是arc,使用xlink:from屬性定義從那個資源來,和xlink:to屬性到那個資源去,如下所示: <connection xlink:type="arc" xlink:from="Student" xlink:to="Score" xlink:show="new" xlink:actuate="onRequest"/>

  24. 擴充連結-6 行內與行外連結 • 行內連結(Inline Links):連結元素的內容可以作為連結資源來使用,大部分簡單連結和HTML的<a>標籤都是行內連結。 • 行外連結(Out-of-line Links):連結元素並不能作為任何參與連結資源來使用,取而代之的是將連結儲存在其它文件,稱為連結庫(Linkbase)。XLink擴充連結同時支援行內和行外連結。

  25. XPointer定位語言-1 • 「XPointer」(XML Pointer Language)能夠連結XML文件的指定部分,它不是用來查詢XML文件,而是使用XPath位置路徑在XML文件內進行定址,以便作為XLink連結部分內容的依據。 • XPointer 1.0版是在2001年9月11日成為W3C的建議規格,XPointer觀念源自HyTime和「TEI」(Text Encoding Initiative),提供XML文件資源的元素走訪語法,目前對於XML文件的瀏覽來說,已經和XSLT共同支援XPath語法。

  26. XPointer定位語言-2 XPointer語法 • XPointer能夠讓XLink連結XML文件的指定部分,使用「#」符號新增至xlink:href屬性值的最後,其基本語法如下所示: #xpointer(XPath位置路徑) • 上述語法在「#」符號後是xpointer()函數,其參數是XPath位置路徑。

  27. XPointer定位語言-3 XPointer範例 • XPointer簡單的說是使用XPath位置路徑來在XML文件中進行定位,例如:指向id屬性值s2,如下所示: #xpointer(id("s2")) • 上述程式碼使用id()函數取得id屬性值s2的元素,其指向的XML元素,如下所示: <student id="s2"> <name>陳會安</name> <score>85</score> </student>

  28. XPointer定位語言-4 • 我們可以在XLink連結元素的xlink:href屬性值使用XPointer運算式,如下所示: xlink:href="http://localhost/students.xml#xpointer(id('s2'))" • 上述id()函數稱為ID指標,擁有縮寫指標(Shorthand Pointer)寫法,如下所示: • xlink:href="http://localhost/students.xml#s2"

  29. 14-2 新世代的Web表單-XForms • 什麼是XForms • XForms資料模型 • XForms的使用介面 • 送出XForms表單

  30. 什麼是XForms-1 XForms的基礎 • XForms是一種與平台和裝置無關的表單,使用XML語法來建立Web介面的表單。XForms使用XML來定義表單資料、儲存和傳送表單資料,它將表單資料和使用介面分開,使用XForms資料模型來描述資料,使用介面來顯示輸入介面,如下所示: • XForms資料模型(XForms Model):描述表單資料和其邏輯架構,也就是定義表單內容是什麼?包含在那些資料? • XForms使用介面(XForms User Interface):顯示和輸入資料的GUI介面,定義表單輸入介面顯示的欄位。

  31. 什麼是XForms-2 XForms處理器 • XForms處理器(XForms Processor)通常是內建在瀏覽程式,以便處理XForms資料與顯示介面,在本節筆者使用JavaScript開發的GNU免費XForms處理器FormFaces,不過,FormFaces只支援英文表單內容。

  32. XForms資料模型-1 • XForms資料模型是用來描述表單資料,定義表單收集資料的XML文件實例,如下所示: <xf:model> <xf:instance> <member xmlns=""> <name>Joe Chen</name> <pass/> <city>Taipei</city> <color>red</color> <height>176</height> </member> </xf:instance> </xf:model>

  33. XForms資料模型-2 • 當使用者在XForms表單輸入欄位資料且送出表單後,XForms處理器就會將表單內容填入xf:instance的子元素來建立XML文件,如下所示: <member> <name>Mary Wang</name> <pass>123456</pass> <city>MaoLi</city> <color>blue</color> <height>158</height> </member>

  34. XForms的使用介面-1 • XForms使用介面使用XForms控制項來建立輸入資料的GUI介面,在控制項是使用XPath連繫資料模型的表單資料,如下所示: <xf:input ref="name"> <xf:label>Name:</xf:label> </xf:input> • 上述ref屬性使用XPath位置路徑來連繫資料模型的元素,以此例是name元素。

  35. XForms的使用介面-2 Input控制項 • XForms的Input控制項可以輸入單行文字內容,如下所示: <xf:input ref="name"> <xf:label>Name:</xf:label> </xf:input> • 上述控制項使用xf:label子元素建立欄位說明文字,ref屬性參考name元素值。

  36. XForms的使用介面-3 Secret控制項 • XForms的Secret控制項也是輸入單行文字內容,不過輸入內容會改以符號取代顯示,以便輸入密碼等需隱藏的資料,如下所示: <xf:secret ref="pass"> <xf:label>Pass:</xf:label> </xf:secret> • 上述控制項使用ref屬性參考pass元素值。

  37. XForms的使用介面-4 Output控制項 • XForms的Output控制項可以顯示資料模型的元素內容,如下所示: <xf:output ref="name"> <xf:label>Output:</xf:label> </xf:output> • 上述控制項使用ref屬性參考name元素值,也就是在表單顯示name元素值。

  38. XForms的使用介面-5 Textarea控制項 • XForms的Textarea控制項可以輸入多行文字內容,如下所示: <xf:textarea ref="city"> <xf:label>City:</xf:label> </xf:textarea> • 上述控制項使用ref屬性參考city元素值。

  39. XForms的使用介面-6 Select1控制項 • XForms的Select1控制項就是下拉式功能表,它是只能選擇其中之一的單選題,如下所示: <xf:select1 ref="color"> <xf:label>Color:</xf:label> <xf:item> <xf:label>Red</xf:label> <xf:value>red</xf:value> </xf:item> …….. </xf:select1>

  40. XForms的使用介面-7 Select控制項 • XForms的Select控制項是清單方塊的可複選控制項,如下所示: <xf:select ref="color"> <xf:label>Select Colors:</xf:label> <xf:item> <xf:label>Red</xf:label> <xf:value>red</xf:value> </xf:item> ……… </xf:select>

  41. XForms的使用介面-8 Range控制項 • XForms的Range控制項是用來選擇一個範圍中的值,目前FormFaces並不支援此控制項,如下所示: <xf:range ref="height" start="50" end="250" step="2"> <xf:label>Height:</xf:label> </xf:range> • 上述控制項使用ref屬性參考height元素值,可以選擇50~250之間的值,其增量是2。

  42. 送出XForms表單-1 • 送出XForms表單是將表單內容送至伺服端程式來進行處理,在XForms資料模型是使用xf:submission元素來定義如何送出表單資料,如下所示: <xf:model> <xf:instance> ……… </xf:instance> <xf:submission id="login1" action="Ch14-2-2.asp" method="post"/> </xf:model>

  43. 送出XForms表單-2 • 在XForms使用者介面是使用Submit控制項送出XForms表單,如下所示: <xf:submit submission="login1"> <xf:label>Submit</xf:label> </xf:submit> • 上述xf:submit元素的submission屬性就是參考資料模型的xf:submission元素,所以其值都是login1。

  44. 14-3 XML資料查詢-XQuery • 什麼是XQuery語言 • 第一個XQuery程式 • XQuery的基本語法 • FLWOR運算式 • 條件運算式

  45. 什麼是XQuery語言-1 • XQuery是一種功能強大和容易使用的XML資料查詢語言,如同關聯式資料庫提供的標準SQL查詢語言,XQuery就是XML資料的查詢語言。 • 換句話說,XQuery不但可以查詢XML文件的資料,我們一樣可以使用XQuery語言來查詢目前主要資料庫引擎建立的資料庫,例如:IBM、Oracle和SQL Server 2005等。 • XQuery是由W3C的XML Query工作小組所開發和定義一種查詢XML的語言,XQuery 1.0和XPath 2.0使用相同的資料模型(Data Model)和支援相同的函數和運算子。

  46. 什麼是XQuery語言-2 XQuery運算式語言 • XQuery語言是一種強調型態(Strongly-typed)語言,其資料型態源於XML Schema,它和XPath 2.0使用相同的資料模型。事實上,XQuery是一種運算式語言,XQuery程式就是運算式集合,執行XQuery程式就是執行運算式集合,以便產生其運算結果。 • XQuery是由路徑運算式(Path Expressions,即XPath)、FLWOR運算式、條件運算式和XQuery函數組成。

  47. 什麼是XQuery語言-3 XQuery測試工具 • 在本節的XQuery測試工具是Altova公司的AltovaXML 2005,這是一個命令列工具,包含Altova XML驗證器、Altova XSLT 1.0引擎、Altova XSLT 2.0引擎和Altova XQuery 1.0引擎,可以執行XML文件驗證、XSLT轉換和XQuery查詢。

  48. 第一個XQuery程式-1 01: (: XQuery程式: Ch14-3-1.xq :) 02: <items> 03: { 04: for $book in doc("Ch14-3.xml") /booklist/book 05: where $book/price > 600 06: order by $book/title 07: return $book/title 08: } 09: </items>

  49. 第一個XQuery程式-2 • FLWOR運算式各子句的說明,如下所示: • for子句:在載入XML文件Ch14-3.xml後,選取booklist根元素下的所有book子元素,並且將它指定給變數$book。 • where子句:限制只選出price子元素值大於600的book元素 • order by子句:定義查詢結果的排序元素,以此例是以title元素進行排序。 • return子句:傳回FLWOR運算式查詢結果的title元素。

  50. XQuery的基本語法-1 • XQuery語言並不是使用XML語法,其基本語法規則,如下所示: • XQuey語言區分英文字母大小寫,Items、items和ITEMS是不同的名稱,通常是使用小寫英文字母。 • XQuery程式碼的元素、屬性、函數和變數名稱必須是合法的XML名稱,可以加上名稱空間的字頭。

More Related