82
14 14 XML XML 第第第第第 第第第第第 14-1 XML 14-1 XML 第第第第 第第第第 -XLink -XLink XPointer XPointer 14-2 14-2 第第第第 第第第第 Web Web 第第 第第 -XForms -XForms 14-3 XML 14-3 XML 第第第第 第第第第 -XQuery -XQuery 14-4 14-4 第第 第第 Web Web 第第 第第 -RDF -RDF 14-5 14-5 第第第第第第 第第第第第第 -RSS -RSS

第 14 章 XML技術的應用

Embed Size (px)

DESCRIPTION

第 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. - PowerPoint PPT Presentation

Citation preview

Page 1: 第 14 章   XML技術的應用

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

Page 2: 第 14 章   XML技術的應用

14-1 XML14-1 XML資源連結資源連結 -XLink-XLink與與XPointerXPointer

XLinkXLink 的基礎的基礎 簡單連結與資源描述簡單連結與資源描述 連結行為連結行為 擴充連結擴充連結 XPointerXPointer 定位語言定位語言

Page 3: 第 14 章   XML技術的應用

XLinkXLink 的基礎的基礎 -1-1

「「 XLinkXLink」」 (XML Linking Language)(XML Linking Language) 是一種是一種在在 XMLXML 文件建立超連結的語言,能夠連結一系列文件建立超連結的語言,能夠連結一系列XMLXML 文件的資源,在文件的資源,在 20012001年年 66 月月 2727 日成為日成為W3CW3C 的建議規格,目前版本是的建議規格,目前版本是 1.01.0 版。版。

不同於不同於 HTMLHTML 語言是使用語言是使用 <a><a> 標籤建立超連結,標籤建立超連結,在在 XMLXML 文件的任何元素都可以擁有文件的任何元素都可以擁有 XLinkXLink 行為行為來連結來連結 URIURI 資源,資源, URIURI 可以是整份可以是整份 XMLXML 文件,文件,或是使用或是使用 XPointerXPointer 指出的部分內容。指出的部分內容。

XLinkXLink 支援類似支援類似 HTMLHTML 超連結的簡單連結超連結的簡單連結(Simple Links)(Simple Links) ,和功能更加強大的擴充連結,和功能更加強大的擴充連結(Extended Links)(Extended Links) 。。

Page 4: 第 14 章   XML技術的應用

XLinkXLink 的基礎的基礎 -2-2

XLinkXLink 的基本語法的基本語法 XMLXML 文件並沒有固定標籤來定義文件並沒有固定標籤來定義 XLinkXLink ,事實上,,事實上,

任何任何 XMLXML 元素都可以擁有元素都可以擁有 XLinkXLink 行為,其基本行為,其基本語法,如下所示:語法,如下所示:

<tag_name <tag_name xmlns:xlink="http://www.w3.org/1999/xlink"xmlns:xlink="http://www.w3.org/1999/xlink"

xlink:type="..." xlink:href="..."xlink:type="..." xlink:href="..."

xlink:show="..." xlink:actuate="...">xlink:show="..." xlink:actuate="...">

..............

</tag_name></tag_name>

Page 5: 第 14 章   XML技術的應用

XLinkXLink 的基礎的基礎 -3-3

我們是使用我們是使用 XLinkXLink 屬性來定義屬性來定義 XMLXML 元素擁有元素擁有XLinkXLink 功能,相關屬性的說明,如下表所示:功能,相關屬性的說明,如下表所示:屬性 說明

xlink:type XLink連結的種類xlink:href 連結資源的 URI

xlink:show 如何開啟連結的資源,預設是取代xlink:actuate 定義何時連結資源,即何時讀取和顯示資源

xlink:title 以使用者了解的文字敘述來描述連結資源xlink:role 以電腦了解的格式來描述連結資源,例如;指向連結資

源說明或求助網頁的 URL網址xlink:from 在擴充連結定義開始資源

xlink:to 在擴充連結定義結束資源

Page 6: 第 14 章   XML技術的應用

XLinkXLink 的基礎的基礎 -4-4

例如:例如: XMLXML 元素元素 ispisp 是擁有連結中華電信是擁有連結中華電信 HiNetHiNet功能的功能的 XLinkXLink 元素,如下所示:元素,如下所示:

<isp xmlns:xlink="http://www.w3.org/1999/xlink"<isp xmlns:xlink="http://www.w3.org/1999/xlink"

xlink:type="simple" xlink:type="simple" xlink:href="http://www.hinet.net">HiNET</isp>xlink:href="http://www.hinet.net">HiNET</isp>

<isp><isp> 開始標籤定義開始標籤定義 XLinkXLink的的W3CW3C 預設名稱空預設名稱空間,間, xlink:typexlink:type 屬性值屬性值 simplesimple ,表示為簡單連,表示為簡單連結結 (Simple Links)(Simple Links),, xlink:hrefxlink:href 屬性是屬性是 URIURI 資資源,以此例就是源,以此例就是 URLURL 網址。網址。

Page 7: 第 14 章   XML技術的應用

XLinkXLink 的基礎的基礎 -5-5

XLinkXLink 屬性的屬性的 DTDDTD XMLXML 文件如果擁有文件如果擁有 DTDDTD ,對於這些擁有,對於這些擁有 XLinkXLink

行為的元素,其行為的元素,其 DTDDTD 指令,如下所示:指令,如下所示:<!ELEMENT isp (#PCDATA) ><!ELEMENT isp (#PCDATA) >

<!ATTLIST isp<!ATTLIST isp

xmlns:xlink CDATA #FIXED xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink""http://www.w3.org/1999/xlink"

xlink:type (simple) #FIXED "simple"xlink:type (simple) #FIXED "simple"

xlink:href CDATA #REQUIREDxlink:href CDATA #REQUIRED

>>

Page 8: 第 14 章   XML技術的應用

XLinkXLink 的基礎的基礎 -6-6

支援支援 XLinkXLink 規格的瀏覽程式規格的瀏覽程式 目前支援目前支援 XLinkXLink 規格的瀏覽程式並不規格的瀏覽程式並不

多,多, Internet ExplorerInternet Explorer和和 OperaOpera 瀏覽程瀏覽程式完全不支援式完全不支援 XLinkXLink 。最新版的。最新版的 MozillaMozilla和和 NetscapeNetscape 瀏覽程式也只支援部分瀏覽程式也只支援部分XLinkXLink 規格,主要是規格,主要是 XLinkXLink 簡單連結部分簡單連結部分的規格。的規格。

Page 9: 第 14 章   XML技術的應用

簡單連結與資源描述簡單連結與資源描述 -1-1

簡單連結簡單連結 簡單連結類似簡單連結類似 HTMLHTML 超連結超連結 <a><a> 標籤的連結功標籤的連結功

能,可以連結單一資源,從一個來源文件跳至目能,可以連結單一資源,從一個來源文件跳至目的文件,目的文件可以是同一份文件的不同位置,的文件,目的文件可以是同一份文件的不同位置,或是另一份文件,如下圖所示:或是另一份文件,如下圖所示:

Page 10: 第 14 章   XML技術的應用

簡單連結與資源描述簡單連結與資源描述 -2-2

在在 XMLXML 元素指定元素指定 xlink:typexlink:type 屬性值為屬性值為 simplesimple ,,就表示此就表示此 XMLXML 元素是簡單連結,如下所示:元素是簡單連結,如下所示:

<isp xmlns:xlink="http://www.w3.org/1999/xlink"<isp xmlns:xlink="http://www.w3.org/1999/xlink"

xlink:type="simple"xlink:type="simple"

xlink:href="http://www.hinet.net">xlink:href="http://www.hinet.net">

HiNETHiNET

</isp></isp> 上述上述 ispisp 元素支援元素支援 XLinkXLink 簡單連結,其簡單連結,其 URIURI 是中是中

華電信華電信 HiNETHiNET的的 URLURL 網址。網址。

Page 11: 第 14 章   XML技術的應用

簡單連結與資源描述簡單連結與資源描述 -3-3

描述連結的資源描述連結的資源 在在 XMLXML 文件的連結元素可以進一步使用文件的連結元素可以進一步使用

xlink:titlexlink:title和和 xlink:rolexlink:role 屬性來描述連結的資源。屬性來描述連結的資源。各屬性的說明,如下表所示:各屬性的說明,如下表所示:

屬性 說明xlink:title 以使用者了解的文字敘述來描述連結資源xlink:role 以電腦了解的格式來描述連結資源,例如;指向連結資

源說明或求助網頁的 URL網址

Page 12: 第 14 章   XML技術的應用

簡單連結與資源描述簡單連結與資源描述 -4-4

例如:在例如:在 searchsearch 連結元素新增連結元素新增 xlink:titlexlink:title和和xlink:rolexlink:role 屬性來描述連結資源,如下所示:屬性來描述連結資源,如下所示:

<search <search xmlns:xlink="http://www.w3.org/1999/xlink"xmlns:xlink="http://www.w3.org/1999/xlink"

xlink:type="simple"xlink:type="simple"

xlink:href="http://tw.yahoo.com/"xlink:href="http://tw.yahoo.com/"

xlink:title="Yahoo Search"xlink:title="Yahoo Search"

xlink:role="http://tw.help.yahoo.com/">xlink:role="http://tw.help.yahoo.com/">

Yahoo!Yahoo! 搜尋搜尋</search></search>

Page 13: 第 14 章   XML技術的應用

簡單連結與資源描述簡單連結與資源描述 -5-5

xlink:titlexlink:title和和 xlink:rolexlink:role 屬性的屬性的 DTDDTD 宣告,宣告,如下所示:如下所示:

xlink:title CDATA #IMPLIEDxlink:title CDATA #IMPLIED

xlink:role CDATA #IMPLIEDxlink:role CDATA #IMPLIED

Page 14: 第 14 章   XML技術的應用

連結行為連結行為 -1-1

在在 XLinkXLink 連結元素擁有連結元素擁有 22 個選項屬性個選項屬性xlink:showxlink:show和和 xlink:actuatexlink:actuate ,可以定義,可以定義 XLinkXLink的連結行為,也就是決定如何顯示連結資源和在的連結行為,也就是決定如何顯示連結資源和在那種情況下來連結資源。那種情況下來連結資源。

連結行為連結行為 xlink:showxlink:show和和 xlink:actuatexlink:actuate 屬性的屬性的DTDDTD 宣告,如下所示:宣告,如下所示:

xlink:show ( new | replace | embed | other | none )xlink:show ( new | replace | embed | other | none ) #IMPLIED #IMPLIED xlink:actuate ( onRequest | onLoad | other | none )xlink:actuate ( onRequest | onLoad | other | none ) #IMPLIED#IMPLIED

Page 15: 第 14 章   XML技術的應用

連結行為連結行為 -2-2

xlink:showxlink:show 屬性屬性 XLinkXLink的的 xlink:showxlink:show 屬性可以描述當啟動連結屬性可以描述當啟動連結

時,例如:按下連結時,如何顯示連結的資源。時,例如:按下連結時,如何顯示連結的資源。其屬性值共有其屬性值共有 55 種,如下表所示:種,如下表所示:屬性值 說明replace 取代目前資源,即在同一個視窗顯示

new 開啟一個新視窗來顯示連結資源embed 將連結資源插入目前顯示的資源中other 參考其它資源來決定如何顯示連結資源none 沒有任何指示

Page 16: 第 14 章   XML技術的應用

連結行為連結行為 -3-3

例如:在例如:在 ispisp 元素新增元素新增 xlink:showxlink:show 屬性決定連結屬性決定連結行為,如下所示:行為,如下所示:

<isp xmlns:xlink="http://www.w3.org/1999/xlink"<isp xmlns:xlink="http://www.w3.org/1999/xlink"

xlink:type="simple"xlink:type="simple"

xlink:href="http://www.seed.net.tw"xlink:href="http://www.seed.net.tw"

xlink:show="embed">xlink:show="embed">

SeedNetSeedNet

</isp></isp> 上述上述 xlink:showxlink:show 屬性值屬性值 embedembed ,表示在目前,表示在目前

顯示的資源插入連結的資源。顯示的資源插入連結的資源。

Page 17: 第 14 章   XML技術的應用

連結行為連結行為 -4-4

xlink:actuatexlink:actuate 屬性屬性 XLinkXLink的的 xlink:actuatexlink:actuate 屬性可以描述何時或在屬性可以描述何時或在

什麼情況下來啟動連結。其屬性值共有什麼情況下來啟動連結。其屬性值共有 44 種,如種,如下表所示:下表所示:屬性值 說明onLoad 當載入目前的資源時,馬上自動連結資源

onRequest 當使用者按一下時,才連結資源other 參考其它資源來決定何時連結資源none 沒有任何指示

Page 18: 第 14 章   XML技術的應用

連結行為連結行為 -5-5

例如:在例如:在 searchsearch 元素新增元素新增 xlink:actuatexlink:actuate 屬性屬性決定連結行為,如下所示:決定連結行為,如下所示:

<search <search xmlns:xlink="http://www.w3.org/1999/xlink"xmlns:xlink="http://www.w3.org/1999/xlink"

xlink:type="simple"xlink:type="simple"

xlink:href="http://tw.yahoo.com/"xlink:href="http://tw.yahoo.com/"

xlink:title="Yahoo!"xlink:title="Yahoo!"

xlink:role="http://tw.help.yahoo.com/"xlink:role="http://tw.help.yahoo.com/"

xlink:actuate="onRequest">xlink:actuate="onRequest">

Yahoo!Yahoo! 搜尋搜尋</search></search>

Page 19: 第 14 章   XML技術的應用

擴充連結擴充連結 -1-1

什麼是擴充連結什麼是擴充連結 擴充連結是使用一個連結即可結合多個不同資源,屬於一擴充連結是使用一個連結即可結合多個不同資源,屬於一

種多方向連結種多方向連結 (Multidirectional Links)(Multidirectional Links) 。以資料結構來。以資料結構來說,擴充連結是將資源視為頂點說,擴充連結是將資源視為頂點 (Vertices)(Vertices) ,資源間連,資源間連結的邊線結的邊線 (Edges)(Edges) 組成的圖形組成的圖形 (Graph)(Graph) ,如下圖所示:,如下圖所示:

Page 20: 第 14 章   XML技術的應用

擴充連結擴充連結 -2-2

擴充連結的語法擴充連結的語法 擴充連結的語法和簡單連結十分相似,其差異只擴充連結的語法和簡單連結十分相似,其差異只

在連結元素的在連結元素的 xlink:typexlink:type 屬性值是屬性值是 extendedextended ,,如下所示:如下所示:

<courseload <courseload xmlns:xlink="http://www.w3.org/1999/xlink"xmlns:xlink="http://www.w3.org/1999/xlink"

xlink:type="extended">xlink:type="extended">

…… ……..

</courseload></courseload>

Page 21: 第 14 章   XML技術的應用

擴充連結擴充連結 -3-3

參與資源為其子元素參與資源為其子元素 scorescore、、 personperson和和coursecourse ,分為本機資源的,分為本機資源的 scorescore 成績元素,成績元素,如下所示:如下所示:

<score xlink:type="resource" <score xlink:type="resource"

xlink:label="Score">85</score>xlink:label="Score">85</score>

上述上述 xlink:typexlink:type 屬性值屬性值 resourceresource 表示是表示是本機資源,本機資源, xlink:labelxlink:label 屬性值是資源標籤,屬性值是資源標籤,主要的目的是建立之後的連結路徑。主要的目的是建立之後的連結路徑。

Page 22: 第 14 章   XML技術的應用

擴充連結擴充連結 -4-4

其它參與的資源都是遠端資源,其其它參與的資源都是遠端資源,其 xlink:typexlink:type 屬屬性值是性值是 locatorlocator ,如下所示:,如下所示:

<person xlink:type="locator"<person xlink:type="locator"

xlink:href="students/joe_chen.xml"xlink:href="students/joe_chen.xml"

xlink:label="Student"/>xlink:label="Student"/>

<person xlink:type="locator"<person xlink:type="locator"

xlink:href="profs/smith_chen.xml"xlink:href="profs/smith_chen.xml"

xlink:label="Professor"/>xlink:label="Professor"/>

<course xlink:type="locator"<course xlink:type="locator"

xlink:href="courses/cs201.xml"xlink:href="courses/cs201.xml"

xlink:label="CS201"/>xlink:label="CS201"/>

Page 23: 第 14 章   XML技術的應用

擴充連結擴充連結 -5-5

連結路徑連結路徑 連結路徑連結路徑 (Arcs)(Arcs) 定義擴充連結參與資源的定義擴充連結參與資源的

走訪規則,其走訪規則,其 xlink:typexlink:type 屬性值是屬性值是 arcarc ,,使用使用 xlink:fromxlink:from 屬性定義從那個資源來,屬性定義從那個資源來,和和 xlink:toxlink:to 屬性到那個資源去,如下所示:屬性到那個資源去,如下所示:

<connection xlink:type="arc"<connection xlink:type="arc" xlink:from="Student"xlink:from="Student" xlink:to="Score"xlink:to="Score" xlink:show="new"xlink:show="new" xlink:actuate="onRequest"/>xlink:actuate="onRequest"/>

Page 24: 第 14 章   XML技術的應用

擴充連結擴充連結 -6-6

行內與行外連結行內與行外連結 行內連結行內連結 (Inline Links)(Inline Links) :連結元素的內容:連結元素的內容

可以作為連結資源來使用,大部分簡單連可以作為連結資源來使用,大部分簡單連結和結和 HTMLHTML的的 <a><a> 標籤都是行內連結。標籤都是行內連結。

行外連結行外連結 (Out-of-line Links)(Out-of-line Links) :連結元素:連結元素並不能作為任何參與連結資源來使用,取並不能作為任何參與連結資源來使用,取而代之的是將連結儲存在其它文件,稱為而代之的是將連結儲存在其它文件,稱為連結庫連結庫 (Linkbase)(Linkbase)。。 XLinkXLink 擴充連結同時擴充連結同時支援行內和行外連結。支援行內和行外連結。

Page 25: 第 14 章   XML技術的應用

XPointerXPointer 定位語言定位語言 -1-1

「「 XPointerXPointer」」 (XML Pointer Language)(XML Pointer Language) 能夠能夠連結連結 XMLXML 文件的指定部分,它不是用來查詢文件的指定部分,它不是用來查詢XMLXML 文件,而是使用文件,而是使用 XPathXPath 位置路徑在位置路徑在 XMLXML 文文件內進行定址,以便作為件內進行定址,以便作為 XLinkXLink 連結部分內容的連結部分內容的依據。依據。

XPointer 1.0XPointer 1.0 版是在版是在 20012001年年 99 月月 1111 日成為日成為W3CW3C 的建議規格,的建議規格, XPointerXPointer 觀念源自觀念源自 HyTimeHyTime和「和「 TEITEI」」 (Text Encoding Initiative)(Text Encoding Initiative) ,提供,提供XMLXML 文件資源的元素走訪語法,目前對於文件資源的元素走訪語法,目前對於 XMLXML文件的瀏覽來說,已經和文件的瀏覽來說,已經和 XSLTXSLT 共同支援共同支援 XPathXPath語法。語法。

Page 26: 第 14 章   XML技術的應用

XPointerXPointer 定位語言定位語言 -2-2

XPointerXPointer 語法語法 XPointerXPointer 能夠讓能夠讓 XLinkXLink 連結連結 XMLXML 文件的文件的

指定部分,使用「指定部分,使用「 ## 」符號新增至」符號新增至xlink:hrefxlink:href 屬性值的最後,其基本語法如屬性值的最後,其基本語法如下所示:下所示:

#xpointer(XPath#xpointer(XPath 位置路徑位置路徑 )) 上述語法在「上述語法在「 ## 」符號後是」符號後是 xpointer()xpointer() 函函

數,其參數是數,其參數是 XPathXPath 位置路徑。位置路徑。

Page 27: 第 14 章   XML技術的應用

XPointerXPointer 定位語言定位語言 -3-3

XPointerXPointer 範例範例 XPointerXPointer 簡單的說是使用簡單的說是使用 XPathXPath 位置路徑來在位置路徑來在

XMLXML 文件中進行定位,例如:指向文件中進行定位,例如:指向 idid 屬性值屬性值 s2s2 ,,如下所示:如下所示:

#xpointer(id("s2"))#xpointer(id("s2")) 上述程式碼使用上述程式碼使用 id()id() 函數取得函數取得 idid 屬性值屬性值 s2s2 的元的元

素,其指向的素,其指向的 XMLXML 元素,如下所示:元素,如下所示:<student id="s2"><student id="s2"> <name><name> 陳會安陳會安 </name></name> <score>85</score><score>85</score></student></student>

Page 28: 第 14 章   XML技術的應用

XPointerXPointer 定位語言定位語言 -4-4

我們可以在我們可以在 XLinkXLink 連結元素的連結元素的 xlink:hrefxlink:href屬性值使用屬性值使用 XPointerXPointer 運算式,如下所示:運算式,如下所示:

xlink:href="http://localhost/xlink:href="http://localhost/students.xml#xpointer(id('s2'))"students.xml#xpointer(id('s2'))"

上述上述 id()id() 函數稱為函數稱為 IDID 指標,擁有縮寫指標指標,擁有縮寫指標(Shorthand Pointer)(Shorthand Pointer) 寫法,如下所示:寫法,如下所示:

xlink:href="http://localhost/students.xml#s2"xlink:href="http://localhost/students.xml#s2"

Page 29: 第 14 章   XML技術的應用

14-2 14-2 新世代的新世代的 WebWeb表單表單 --XFormsXForms

什麼是什麼是 XFormsXForms XFormsXForms 資料模型資料模型 XFormsXForms 的使用介面的使用介面 送出送出 XFormsXForms 表單表單

Page 30: 第 14 章   XML技術的應用

什麼是什麼是 XForms-1XForms-1

XFormsXForms 的基礎的基礎 XFormsXForms 是一種與平台和裝置無關的表單,使用是一種與平台和裝置無關的表單,使用

XMLXML 語法來建立語法來建立 WebWeb介面的表單。介面的表單。 XFormsXForms 使使用用 XMLXML 來定義表單資料、儲存和傳送表單資料,來定義表單資料、儲存和傳送表單資料,它將表單資料和使用介面分開,使用它將表單資料和使用介面分開,使用 XFormsXForms 資資料模型來描述資料,使用介面來顯示輸入介面,料模型來描述資料,使用介面來顯示輸入介面,如下所示:如下所示:• XFormsXForms 資料模型資料模型 (XForms Model)(XForms Model) :描述表單資料:描述表單資料

和其邏輯架構,也就是定義表單內容是什麼?包含在和其邏輯架構,也就是定義表單內容是什麼?包含在那些資料?那些資料?

• XFormsXForms 使用介面使用介面 (XForms User Interface)(XForms User Interface) :顯示:顯示和輸入資料的和輸入資料的 GUIGUI介面,定義表單輸入介面顯示的欄介面,定義表單輸入介面顯示的欄位。位。

Page 31: 第 14 章   XML技術的應用

什麼是什麼是 XForms-2XForms-2

XFormsXForms 處理器處理器 XFormsXForms 處理器處理器 (XForms Processor)(XForms Processor) 通通常是內建在瀏覽程式,以便處理常是內建在瀏覽程式,以便處理 XFormsXForms資料與顯示介面,在本節筆者使用資料與顯示介面,在本節筆者使用JavaScriptJavaScript 開發的開發的 GNUGNU 免費免費 XFormsXForms 處處理器理器 FormFacesFormFaces ,不過,,不過, FormFacesFormFaces 只只支援英文表單內容。支援英文表單內容。

Page 32: 第 14 章   XML技術的應用

XFormsXForms 資料模型資料模型 -1-1 XFormsXForms 資料模型是用來描述表單資料,定義表單收集資資料模型是用來描述表單資料,定義表單收集資

料的料的 XMLXML 文件實例,如下所示:文件實例,如下所示:<xf:model><xf:model> <xf:instance><xf:instance> <member xmlns=""><member xmlns=""> <name>Joe Chen</name><name>Joe Chen</name> <pass/><pass/> <city>Taipei</city><city>Taipei</city> <color>red</color><color>red</color> <height>176</height><height>176</height> </member></member> </xf:instance></xf:instance></xf:model></xf:model>

Page 33: 第 14 章   XML技術的應用

XFormsXForms 資料模型資料模型 -2-2 當使用者在當使用者在 XFormsXForms 表單輸入欄位資料且送出表表單輸入欄位資料且送出表

單後,單後, XFormsXForms處理器就會將表單內容填入處理器就會將表單內容填入xf:instancexf:instance 的子元素來建立的子元素來建立 XMLXML 文件,如下所文件,如下所示:示:

<member><member> <name>Mary Wang</name><name>Mary Wang</name> <pass>123456</pass><pass>123456</pass> <city>MaoLi</city><city>MaoLi</city> <color>blue</color><color>blue</color> <height>158</height><height>158</height></member></member>

Page 34: 第 14 章   XML技術的應用

XFormsXForms 的使用介面的使用介面 -1-1

XFormsXForms 使用介面使用使用介面使用 XFormsXForms 控制項來控制項來建立輸入資料的建立輸入資料的 GUIGUI 介面,在控制項是使介面,在控制項是使用用 XPathXPath 連繫資料模型的表單資料,如下連繫資料模型的表單資料,如下所示:所示:

<xf:input ref="name"><xf:input ref="name"> <xf:label>Name:</xf:label><xf:label>Name:</xf:label></xf:input></xf:input> 上述上述 refref 屬性使用屬性使用 XPathXPath 位置路徑來連繫位置路徑來連繫

資料模型的元素,以此例是資料模型的元素,以此例是 namename 元素。元素。

Page 35: 第 14 章   XML技術的應用

XFormsXForms 的使用介面的使用介面 -2-2

InputInput 控制項控制項 XFormsXForms的的 InputInput 控制項可以輸入單行文控制項可以輸入單行文字內容,如下所示:字內容,如下所示:

<xf:input ref="name"><xf:input ref="name">

<xf:label>Name:</xf:label><xf:label>Name:</xf:label>

</xf:input></xf:input> 上述控制項使用上述控制項使用 xf:labelxf:label 子元素建立欄位子元素建立欄位

說明文字,說明文字, refref 屬性參考屬性參考 namename 元素值。元素值。

Page 36: 第 14 章   XML技術的應用

XFormsXForms 的使用介面的使用介面 -3-3

SecretSecret 控制項控制項 XFormsXForms的的 SecretSecret 控制項也是輸入單行文控制項也是輸入單行文字內容,不過輸入內容會改以符號取代顯字內容,不過輸入內容會改以符號取代顯示,以便輸入密碼等需隱藏的資料,如下示,以便輸入密碼等需隱藏的資料,如下所示:所示:

<xf:secret ref="pass"><xf:secret ref="pass"> <xf:label>Pass:</xf:label><xf:label>Pass:</xf:label></xf:secret></xf:secret> 上述控制項使用上述控制項使用 refref 屬性參考屬性參考 passpass 元素值。元素值。

Page 37: 第 14 章   XML技術的應用

XFormsXForms 的使用介面的使用介面 -4-4

OutputOutput 控制項控制項 XFormsXForms的的 OutputOutput 控制項可以顯示資料控制項可以顯示資料

模型的元素內容,如下所示:模型的元素內容,如下所示:<xf:output ref="name"><xf:output ref="name">

<xf:label>Output:</xf:label><xf:label>Output:</xf:label>

</xf:output></xf:output> 上述控制項使用上述控制項使用 refref 屬性參考屬性參考 namename 元素元素

值,也就是在表單顯示值,也就是在表單顯示 namename 元素值。元素值。

Page 38: 第 14 章   XML技術的應用

XFormsXForms 的使用介面的使用介面 -5-5

TextareaTextarea 控制項控制項 XFormsXForms的的 TextareaTextarea 控制項可以輸入多控制項可以輸入多

行文字內容,如下所示:行文字內容,如下所示:<xf:textarea ref="city"><xf:textarea ref="city">

<xf:label>City:</xf:label><xf:label>City:</xf:label>

</xf:textarea></xf:textarea> 上述控制項使用上述控制項使用 refref 屬性參考屬性參考 citycity 元素值。元素值。

Page 39: 第 14 章   XML技術的應用

XFormsXForms 的使用介面的使用介面 -6-6

Select1Select1控制項控制項 XFormsXForms的的 Select1Select1控制項就是下拉式功能表,控制項就是下拉式功能表,

它是只能選擇其中之一的單選題,如下所示:它是只能選擇其中之一的單選題,如下所示:<xf:select1 ref="color"><xf:select1 ref="color"> <xf:label>Color:</xf:label><xf:label>Color:</xf:label> <xf:item><xf:item> <xf:label>Red</xf:label><xf:label>Red</xf:label> <xf:value>red</xf:value><xf:value>red</xf:value> </xf:item></xf:item> …… ……....</xf:select1></xf:select1>

Page 40: 第 14 章   XML技術的應用

XFormsXForms 的使用介面的使用介面 -7-7

SelectSelect控制項控制項 XFormsXForms的的 SelectSelect控制項是清單方塊的可複選控控制項是清單方塊的可複選控制項,如下所示:制項,如下所示:

<xf:select ref="color"><xf:select ref="color"> <xf:label>Select Colors:</xf:label><xf:label>Select Colors:</xf:label> <xf:item><xf:item> <xf:label>Red</xf:label><xf:label>Red</xf:label> <xf:value>red</xf:value><xf:value>red</xf:value> </xf:item></xf:item> ……… ………</xf:select></xf:select>

Page 41: 第 14 章   XML技術的應用

XFormsXForms 的使用介面的使用介面 -8-8

RangeRange控制項控制項 XFormsXForms的的 RangeRange控制項是用來選擇一個範圍中控制項是用來選擇一個範圍中

的值,目前的值,目前 FormFacesFormFaces 並不支援此控制項,如並不支援此控制項,如下所示:下所示:

<xf:range ref="height" start="50" <xf:range ref="height" start="50" end="250" step="2">end="250" step="2">

<xf:label>Height:</xf:label><xf:label>Height:</xf:label></xf:range></xf:range> 上述控制項使用上述控制項使用 refref 屬性參考屬性參考 heightheight 元素值,可元素值,可

以選擇以選擇 50~25050~250 之間的值,其增量是之間的值,其增量是 22 。。

Page 42: 第 14 章   XML技術的應用

送出送出 XFormsXForms 表單表單 -1-1 送出送出 XFormsXForms 表單是將表單內容送至伺服端程式來進行處表單是將表單內容送至伺服端程式來進行處理,在理,在 XFormsXForms 資料模型是使用資料模型是使用 xf:submissionxf:submission 元素來元素來定義如何送出表單資料,如下所示:定義如何送出表單資料,如下所示:

<xf:model><xf:model> <xf:instance><xf:instance> ……… ……… </xf:instance></xf:instance> <xf:submission id="login1" <xf:submission id="login1" action="Ch14-2-2.asp" method="post"/> action="Ch14-2-2.asp" method="post"/> </xf:model></xf:model>

Page 43: 第 14 章   XML技術的應用

送出送出 XFormsXForms 表單表單 -2-2

在在 XFormsXForms 使用者介面是使用使用者介面是使用 SubmitSubmit 控控制項送出制項送出 XFormsXForms 表單,如下所示:表單,如下所示:

<xf:submit submission="login1"><xf:submit submission="login1">

<xf:label>Submit</xf:label><xf:label>Submit</xf:label>

</xf:submit></xf:submit> 上述上述 xf:submitxf:submit 元素的元素的 submissionsubmission 屬性屬性

就是參考資料模型的就是參考資料模型的 xf:submissionxf:submission 元素,元素,所以其值都是所以其值都是 login1login1 。。

Page 44: 第 14 章   XML技術的應用

14-3 XML14-3 XML 資料查詢資料查詢 -XQuery-XQuery

什麼是什麼是 XQueryXQuery 語言語言 第一個第一個 XQueryXQuery 程式程式 XQueryXQuery 的基本語法的基本語法 FLWORFLWOR 運算式運算式 條件運算式條件運算式

Page 45: 第 14 章   XML技術的應用

什麼是什麼是 XQueryXQuery 語言語言 -1-1

XQueryXQuery 是一種功能強大和容易使用的是一種功能強大和容易使用的 XMLXML 資料查資料查詢語言,如同關聯式資料庫提供的標準詢語言,如同關聯式資料庫提供的標準 SQLSQL 查詢語查詢語言,言, XQueryXQuery 就是就是 XMLXML 資料的查詢語言。資料的查詢語言。

換句話說,換句話說, XQueryXQuery 不但可以查詢不但可以查詢 XMLXML 文件的資料,文件的資料,我們一樣可以使用我們一樣可以使用 XQueryXQuery 語言來查詢目前主要資料語言來查詢目前主要資料庫引擎建立的資料庫,例如:庫引擎建立的資料庫,例如: IBMIBM、、 OracleOracle和和 SQL SQL Server 2005Server 2005等。等。

XQueryXQuery 是由是由W3CW3C的的 XML QueryXML Query工作小組所開發工作小組所開發和定義一種查詢和定義一種查詢 XMLXML 的語言,的語言, XQuery 1.0XQuery 1.0和和XPath 2.0XPath 2.0 使用相同的資料模型使用相同的資料模型 (Data Model)(Data Model) 和支和支援相同的函數和運算子。援相同的函數和運算子。

Page 46: 第 14 章   XML技術的應用

什麼是什麼是 XQueryXQuery 語言語言 -2-2

XQueryXQuery 運算式語言運算式語言 XQueryXQuery 語言是一種強調型態語言是一種強調型態 (Strongly-typed)(Strongly-typed)

語言,其資料型態源於語言,其資料型態源於 XML SchemaXML Schema ,它和,它和XPath 2.0XPath 2.0 使用相同的資料模型。事實使用相同的資料模型。事實上,上, XQueryXQuery 是一種運算式語言,是一種運算式語言, XQueryXQuery 程式程式就是運算式集合,執行就是運算式集合,執行 XQueryXQuery 程式就是執行運程式就是執行運算式集合,以便產生其運算結果。算式集合,以便產生其運算結果。

XQueryXQuery 是由路徑運算式是由路徑運算式 (Path Expressions(Path Expressions ,,即即 XPath)XPath)、、 FLWORFLWOR 運算式、條件運算式和運算式、條件運算式和XQueryXQuery 函數組成。函數組成。

Page 47: 第 14 章   XML技術的應用

什麼是什麼是 XQueryXQuery 語言語言 -3-3

XQueryXQuery 測試工具測試工具 在本節的在本節的 XQueryXQuery 測試工具是測試工具是 AltovaAltova 公司公司的的 AltovaXML 2005AltovaXML 2005 ,這是一個命令列工,這是一個命令列工具,包含具,包含 Altova XMLAltova XML 驗證器、驗證器、 Altova Altova XSLT 1.0XSLT 1.0 引擎、引擎、 Altova XSLT 2.0Altova XSLT 2.0 引擎引擎和和 Altova XQuery 1.0Altova XQuery 1.0 引擎,可以執行引擎,可以執行XMLXML 文件驗證、文件驗證、 XSLTXSLT 轉換和轉換和 XQueryXQuery 查查詢。詢。

Page 48: 第 14 章   XML技術的應用

第一個第一個 XQueryXQuery 程式程式 -1-1

01: (: XQuery01: (: XQuery 程式程式 : Ch14-3-1.xq :): Ch14-3-1.xq :)02: <items>02: <items>03: {03: {04: for $book in doc("Ch14-3.xml") 04: for $book in doc("Ch14-3.xml")

/booklist/book/booklist/book05: where $book/price > 60005: where $book/price > 60006: order by $book/title06: order by $book/title07: return $book/title07: return $book/title08: }08: }09: </items>09: </items>

Page 49: 第 14 章   XML技術的應用

第一個第一個 XQueryXQuery 程式程式 -2-2

FLWORFLWOR 運算式各子句的說明,如下所示:運算式各子句的說明,如下所示:• forfor 子句:在載入子句:在載入 XMLXML 文件文件 Ch14-3.xmlCh14-3.xml 後,後,

選取選取 booklistbooklist 根元素下的所有根元素下的所有 bookbook 子元素,子元素,並且將它指定給變數並且將它指定給變數 $book$book 。。

• wherewhere 子句:限制只選出子句:限制只選出 priceprice 子元素值大於子元素值大於600600的的 bookbook 元素元素

• order byorder by 子句:定義查詢結果的排序元素,以子句:定義查詢結果的排序元素,以此例是以此例是以 titletitle 元素進行排序。元素進行排序。

• returnreturn 子句:傳回子句:傳回 FLWORFLWOR 運算式查詢結果的運算式查詢結果的titletitle 元素。元素。

Page 50: 第 14 章   XML技術的應用

XQueryXQuery 的基本語法的基本語法 -1-1

XQueryXQuery 語言並不是使用語言並不是使用 XMLXML 語法,其基語法,其基本語法規則,如下所示:本語法規則,如下所示:• XQueyXQuey 語言區分英文字母大小語言區分英文字母大小

寫,寫, ItemsItems、、 itemsitems和和 ITEMSITEMS 是不同的名稱,是不同的名稱,通常是使用小寫英文字母。通常是使用小寫英文字母。

• XQueryXQuery 程式碼的元素、屬性、函數和變數名程式碼的元素、屬性、函數和變數名稱必須是合法的稱必須是合法的 XMLXML 名稱,可以加上名稱空名稱,可以加上名稱空間的字頭。間的字頭。

Page 51: 第 14 章   XML技術的應用

XQueryXQuery 的基本語法的基本語法 -2-2

資料型態資料型態 XQueryXQuery 的基本資料型態和的基本資料型態和 XML SchemaXML Schema 內建內建

資料型態相同,如下所示:資料型態相同,如下所示:• 布林布林 (Boolean)(Boolean) 資料型態:布林值資料型態:布林值 truetrue或或 falsefalse 。。• 數字數字 (Number)(Number) 資料型態:包含整數和浮點數值。資料型態:包含整數和浮點數值。• 字串字串 (Strings)(Strings) 資料型態:使用單引號或雙引號括起的資料型態:使用單引號或雙引號括起的字元集合。字元集合。

• 日期時間資料型態:代表日期、時間和期間。日期時間資料型態:代表日期、時間和期間。• XMLXML 相關的資料型態:例如:相關的資料型態:例如: QNameQName等資料型態。等資料型態。

Page 52: 第 14 章   XML技術的應用

XQueryXQuery 的基本語法的基本語法 -3-3

變數與文字值變數與文字值 在在 XQueryXQuery 程式碼使用的變數並不需事先宣告,程式碼使用的變數並不需事先宣告,變數是以「變數是以「 $$ 」符號開始的合法」符號開始的合法 XMLXML 名稱。例如:名稱。例如:一些一些 XQueryXQuery變數範例,如下所示:變數範例,如下所示:

$x$x、、 $y$y、、 $name$name、、 $book$book XQueryXQuery 的文字值的文字值 (Literal Values)(Literal Values) 主要分為主要分為 33

種型態,如下所示:種型態,如下所示:• 字串字串 (Strings)(Strings):: XQueryXQuery 的字串可以使用單引號或雙的字串可以使用單引號或雙引號括起的字元集合。例如:引號括起的字元集合。例如: "F8538""F8538" 。。

• 數字數字 (Numbers)(Numbers):: XQueryXQuery 的數字可以是整數或浮的數字可以是整數或浮點數。例如:點數。例如: 11 、、 22 、、 34.534.5 。。

• 建構型態:使用函數建構的特殊型態。例如:日期建構型態:使用函數建構的特殊型態。例如:日期xs:date("2006-12-31")xs:date("2006-12-31") 。。

Page 53: 第 14 章   XML技術的應用

XQueryXQuery 的基本語法的基本語法 -4-4

比較運算子比較運算子 XQuery 1.0XQuery 1.0和和 XPath 2.0XPath 2.0 使用相同的運算使用相同的運算

子,子, XQueryXQuery 的比較運算子分為兩種,如下所示:的比較運算子分為兩種,如下所示:• 一般比較一般比較 (General Comparisons)(General Comparisons) :一般比較運算:一般比較運算

子有子有 == 、、 !=!=、、 << 、、 <=<=、、 >> 、、 >=>= ,可以用來比,可以用來比較多個項目。例如:只需任何較多個項目。例如:只需任何 bookbook 元素的元素的 quantityquantity屬性值大於屬性值大於 1010 ,就為,就為 truetrue ,如下所示:,如下所示:

$book//book/@quantity > 10$book//book/@quantity > 10• 值比較值比較 (Value Comparisons)(Value Comparisons) :值比較運算子有:值比較運算子有 eqeq、、

nene、、 ltlt、、 lele、、 gtgt、、 gege ,和一般比較的差異在於它,和一般比較的差異在於它是比較單獨的值,也就是說,運算元一定是原子值是比較單獨的值,也就是說,運算元一定是原子值(Atomic Value)(Atomic Value) ,或包含原子值的節點。,或包含原子值的節點。

Page 54: 第 14 章   XML技術的應用

XQueryXQuery 的基本語法的基本語法 -5-5

註解文字註解文字 在在 XQueryXQuery 程式碼可以使用程式碼可以使用 XQueryXQuery 的註解文字,的註解文字,

這是「這是「 (:(: 」開頭到「」開頭到「 :):) 」之間的字串,如下所示:」之間的字串,如下所示:(: XQuery(: XQuery 程式程式 : Ch14-3-1.xq :): Ch14-3-1.xq :) 上述註解文字不可以出現在查詢結果的上述註解文字不可以出現在查詢結果的 XMLXML 文件文件

之中。因為之中。因為 XQueryXQuery 查詢結果是一份查詢結果是一份 XMLXML 文件文件或或 XHTMLXHTML 文件,所以也可以使用文件,所以也可以使用 XMLXML 文件的註文件的註解,如下所示:解,如下所示:

<!-- <!-- 文件範例文件範例 : Ch14-3.xml -->: Ch14-3.xml -->

Page 55: 第 14 章   XML技術的應用

FLWORFLWOR 運算式運算式 -1-1

letlet 子句子句 FLWORFLWOR 運算式運算式 letlet 子句可以指定子句可以指定 XQueryXQuery變數值,變數值可以是項目或循序變數值,變數值可以是項目或循序 (0(0、、 11或多個項目的有序序列或多個項目的有序序列 )) ,如下所示:,如下所示:

let $book := doc("Ch14-3.xml") //book[1]let $book := doc("Ch14-3.xml") //book[1]

let $title := "ASP.NET Tutorial"let $title := "ASP.NET Tutorial"

let $list := (1 to 5)let $list := (1 to 5)

let $price := 650let $price := 650

Page 56: 第 14 章   XML技術的應用

FLWORFLWOR 運算式運算式 -2-2

returnreturn 子句子句 FLWORFLWOR 運算式運算式 returnreturn 子句可以輸出查詢結果,子句可以輸出查詢結果,

如果是路徑運算式,就是輸出選取的節點內容,如果是路徑運算式,就是輸出選取的節點內容,如下所示:如下所示:

let $book := doc("Ch14-3.xml") //book[1]let $book := doc("Ch14-3.xml") //book[1]return $book/@codereturn $book/@code 如果輸出的如果輸出的 XQureyXQurey變數是文字值,我們可以在變數是文字值,我們可以在

returnreturn 子句加上標籤來建立元素節點,如下所示:子句加上標籤來建立元素節點,如下所示:let $title := "ASP.NET Tutorial"let $title := "ASP.NET Tutorial"return <title>{$title}</title>return <title>{$title}</title>

Page 57: 第 14 章   XML技術的應用

FLWORFLWOR 運算式運算式 -3-3 變數值如果是循序,例如:使用變數值如果是循序,例如:使用 returnreturn 子句輸出子句輸出變數變數 $list$list ,如下所示:,如下所示:

let $list := (1 to 5)let $list := (1 to 5)return <num>{$list}</num>return <num>{$list}</num> 上述上述 returnreturn 子句只會輸出子句只會輸出 11 個個 numnum 元素,如下元素,如下

所示:所示:<num>1 2 3 4 5</num><num>1 2 3 4 5</num> 不只如此,不只如此, returnreturn 子句還可以合併多個運算式成子句還可以合併多個運算式成

為一個循序,然後輸出循序的內容,如下所示:為一個循序,然後輸出循序的內容,如下所示:let $price := 650let $price := 650return (<listprice>{$price}</listprice>,return (<listprice>{$price}</listprice>, <price>{$price * 0.8}</price>)<price>{$price * 0.8}</price>)

Page 58: 第 14 章   XML技術的應用

FLWORFLWOR 運算式運算式 -4-4

forfor 子句子句 FLWORFLWOR 運算式的運算式的 forfor 子句,可以將子句,可以將 inin 指令後路指令後路

徑運算式取得的循序,依序指定給徑運算式取得的循序,依序指定給 inin 前的變數,前的變數,每次一個項目,直到循序的最後一個項目為止。每次一個項目,直到循序的最後一個項目為止。

基本基本 forfor 子句是以迴路方式一一取出循序的項目,子句是以迴路方式一一取出循序的項目,通常我們是使用路徑運算式來取出循序。例如:通常我們是使用路徑運算式來取出循序。例如:取出取出 Ch14-3.xmlCh14-3.xml 文件的所有文件的所有 priceprice 元素節點,元素節點,如下所示:如下所示:

for $price in doc("Ch14-3.xml") //book/pricefor $price in doc("Ch14-3.xml") //book/price

return $pricereturn $price

Page 59: 第 14 章   XML技術的應用

FLWORFLWOR 運算式運算式 -5-5

forfor 子句還可以加上子句還可以加上 atat 指令的計數變數,指令的計數變數,以便計算迴路總共執行幾次。例如:在以便計算迴路總共執行幾次。例如:在Ch14-3.xmlCh14-3.xml 文件取得所有文件取得所有 bookbook 元素節點,元素節點,並且傳回每一個節點的計數,如下所示:並且傳回每一個節點的計數,如下所示:

for $book at $i in doc("Ch14-3.xml") //bookfor $book at $i in doc("Ch14-3.xml") //book

return (<num>{$i}</num>, $book/title)return (<num>{$i}</num>, $book/title)

Page 60: 第 14 章   XML技術的應用

FLWORFLWOR 運算式運算式 -6-6

wherewhere 子句子句 在在 FLWORFLWOR 運算式的運算式的 wherewhere 子句可以指定條件運子句可以指定條件運

算式來進一步過濾查詢結果,只有當運算式為算式來進一步過濾查詢結果,只有當運算式為truetrue 時,才執行時,才執行 returnreturn 子句。例如:過濾子句。例如:過濾 priceprice元素值需要大於元素值需要大於 600600 ,如下所示:,如下所示:

for $price in doc("Ch14-3.xml") //book/pricefor $price in doc("Ch14-3.xml") //book/price

where $price > 600where $price > 600

return $pricereturn $price

Page 61: 第 14 章   XML技術的應用

FLWORFLWOR 運算式運算式 -7-7

order byorder by排序子句排序子句 在在 FLWORFLWOR 運算式的運算式的 order byorder by 子句,可以指定子句,可以指定輸出結果的排序方式。例如:指定輸出結果使用輸出結果的排序方式。例如:指定輸出結果使用bookbook的的 titletitle 子元素值進行排序,如下所示:子元素值進行排序,如下所示:

for $book in doc("Ch14-3.xml") //bookfor $book in doc("Ch14-3.xml") //bookorder by $book/titleorder by $book/titlereturn $book/titlereturn $book/title 我們可以使用「我們可以使用「 ,, 」符號指定多個排序方式,如」符號指定多個排序方式,如

下所示:下所示:for $book in doc("Ch14-3.xml") //bookfor $book in doc("Ch14-3.xml") //bookorder by $book/price, $book/@codeorder by $book/price, $book/@codereturn $book/titlereturn $book/title

Page 62: 第 14 章   XML技術的應用

條件運算式條件運算式 XQueryXQuery 語言也支援語言也支援 if/then/elseif/then/else 條件運條件運

算式,如果算式,如果 ifif 的條件為的條件為 truetrue ,就執行,就執行thenthen 之後的運算式,否則執行之後的運算式,否則執行 elseelse 之後之後的運算式,如下所示:的運算式,如下所示:

for $book in doc("Ch14-3.xml") //bookfor $book in doc("Ch14-3.xml") //book

return if ($book/@code="F8538")return if ($book/@code="F8538")

then then <newtitle>{data($book/title)}</newtitle><newtitle>{data($book/title)}</newtitle>

else $book/titleelse $book/title

Page 63: 第 14 章   XML技術的應用

14-4 14-4 定義定義 WebWeb資源資源 -RDF-RDF

什麼是什麼是 RDFRDF RDFRDF 資料模型資料模型 RDFRDF 語法語法 RDFRDF 的容器元素的容器元素

Page 64: 第 14 章   XML技術的應用

什麼是什麼是 RDF-1RDF-1

RDFRDF是是WebWeb 資源的資源的 MetadataMetadata ,提供,提供 WebWeb應應用程式之間,一種可以互相交換的電腦可閱讀資用程式之間,一種可以互相交換的電腦可閱讀資訊,所以,訊,所以, RDFRDF 並不是設計來給使用者閱讀的文並不是設計來給使用者閱讀的文件。簡單的說,件。簡單的說, MetadataMetadata 是一種電腦應用程式是一種電腦應用程式可以了解的資訊,以便建立一種可自動處理可以了解的資訊,以便建立一種可自動處理WebWeb資源的機制。資源的機制。

RDFRDF 文件定義的資源可以使用在不同的應用程式文件定義的資源可以使用在不同的應用程式領域,例如:領域,例如: PDFPDF 可以描述圖書的作者、書價和可以描述圖書的作者、書價和出版日期,購物項目的價格和是否有庫存,出版日期,購物項目的價格和是否有庫存, WebWeb事件的排程時間,更可以提供指定事件的排程時間,更可以提供指定 WebWeb 網站、網站、網頁或數位資料庫的資源分類目錄,和資源之間網頁或數位資料庫的資源分類目錄,和資源之間的關係,以便提供搜尋引擎更佳的資源搜尋能力。的關係,以便提供搜尋引擎更佳的資源搜尋能力。

Page 65: 第 14 章   XML技術的應用

什麼是什麼是 RDF-2RDF-2

RDFRDF 是使用是使用 XMLXML 來描述資源,來描述資源, RDFRDF 使用的使用的XMLXML 語法稱為語法稱為 RDF/XMLRDF/XML,, RDFRDF 是在是在 20042004年年 22 月成為月成為 W3CW3C 的建議規格。的建議規格。 RDFRDF 規格主規格主要分成兩個部分,如下所示:要分成兩個部分,如下所示:• RDFRDF 資料模型資料模型 (RDF Data Model)(RDF Data Model) :使用與語:使用與語

法無關的方式來表示法無關的方式來表示 RDFRDF敘述,以一種標籤說敘述,以一種標籤說明的方向圖形來表示明的方向圖形來表示 RDFRDF 資料模型。資料模型。

• RDFRDF 語法語法 (RDF Syntax)(RDF Syntax) :使用:使用 XMLXML 語法來呈語法來呈現現 RDFRDF 資料模型。資料模型。

Page 66: 第 14 章   XML技術的應用

RDFRDF 資料模型資料模型 -1-1

RDFRDF 資料模型主要是由三種資料型態來組資料模型主要是由三種資料型態來組成,如下所示:成,如下所示:• 資源資源 (Resources)(Resources) :任何使用:任何使用 PDFPDF敘述描述敘述描述

的東西,或使用的東西,或使用 URIURI 表示的東西,例如:表示的東西,例如: URLURL網址的網站、網頁和一本書等。網址的網站、網頁和一本書等。

• 性質性質 (Properties)(Properties) :描述特點、特性或資源之:描述特點、特性或資源之間的關係,例如:網站建立者、建立日期和圖間的關係,例如:網站建立者、建立日期和圖書作者。性質值書作者。性質值 (Property Value)(Property Value) 是性質的是性質的文字值文字值 (Literal)(Literal) ,例如:圖書作者是,例如:圖書作者是 ""陳會陳會安安 ""。。

•敘述敘述 (Statements)(Statements) :敘述是由資源、性質和:敘述是由資源、性質和性質值組成,性質值組成, RDFRDF敘述是敘述是 RDFRDF 語言的基本架語言的基本架構。構。

Page 67: 第 14 章   XML技術的應用

RDFRDF 資料模型資料模型 -2-2

例如:例如: Joe Joe ChenChen是是 http://www.joe.com/book/F8538Ahttp://www.joe.com/book/F8538A的作者,如下所示:的作者,如下所示:

The author of http://www.joe.com/book/F8538A is The author of http://www.joe.com/book/F8538A is Joe Chen.Joe Chen.

上述英文敘述的主詞是上述英文敘述的主詞是 http://www.joe.com/http://www.joe.com/book/F8538Abook/F8538A ,述詞是,述詞是 authorauthor ,受詞是,受詞是 Joe Joe ChenChen ,如下圖所示:,如下圖所示:

Page 68: 第 14 章   XML技術的應用

RDFRDF 語法語法 -1-1

RDFRDF 語法語法 (RDF Syntax)(RDF Syntax) 決定決定 RDFRDF 資料模資料模型的呈現方式,在型的呈現方式,在 19991999年年W3CW3C 定義定義RDF/XMLRDF/XML 格式就是使用格式就是使用 XMLXML 語法,其預語法,其預設的名稱空間,如下所示:設的名稱空間,如下所示:

http://www.w3.org/1999/02/22-rdf-syntax-http://www.w3.org/1999/02/22-rdf-syntax-ns#ns#

在在 RDFRDF 文件是以文件是以 RDFRDF 為根元為根元素,素, DescriptionDescription 元素來描述資源。元素來描述資源。

Page 69: 第 14 章   XML技術的應用

RDFRDF 語法語法 -2-2

01: <?xml version="1.0" encoding="Big5"?>01: <?xml version="1.0" encoding="Big5"?>02: <rdf:RDF 02: <rdf:RDF 03: xmlns:rdf="http://www.w3.org/1999/02/22-rdf-03: xmlns:rdf="http://www.w3.org/1999/02/22-rdf-

syntax-ns#"syntax-ns#"04: xmlns:bk="http://www.joe.com/book#">04: xmlns:bk="http://www.joe.com/book#">05: <rdf:Description05: <rdf:Description06: 06:

rdf:about="http://www.joe.com/book/F8538A">rdf:about="http://www.joe.com/book/F8538A">07: <bk:author>07: <bk:author> 陳會安陳會安 </bk:author></bk:author>08: <bk:pages>640</bk:pages>08: <bk:pages>640</bk:pages>09: <bk:price>580</bk:price>09: <bk:price>580</bk:price>10: <bk:year>92</bk:year>10: <bk:year>92</bk:year>11: </rdf:Description>11: </rdf:Description>

Page 70: 第 14 章   XML技術的應用

RDFRDF 語法語法 -3-3

12: <rdf:Description 12: <rdf:Description 13: 13:

rdf:about="http://www.joe.com/book/F8534A">rdf:about="http://www.joe.com/book/F8534A">14: <bk:author>14: <bk:author> 陳會安陳會安 </bk:author></bk:author>15: <bk:pages>660</bk:pages>15: <bk:pages>660</bk:pages>16: <bk:price>650</bk:price>16: <bk:price>650</bk:price>17: <bk:year>91</bk:year>17: <bk:year>91</bk:year>18: </rdf:Description>18: </rdf:Description>19: </rdf:RDF>19: </rdf:RDF>

Page 71: 第 14 章   XML技術的應用

RDFRDF 語法語法 -4-4

在在 RDFRDF 文件文件 Ch14-4-1.xmlCh14-4-1.xml 定義兩個資源定義兩個資源(Resources)(Resources),, http://www.joe.com/book/http://www.joe.com/book/F8538AF8538A 資源的資料模型,如下圖所示:資源的資料模型,如下圖所示:

Page 72: 第 14 章   XML技術的應用

RDFRDF 語法語法 -5-5

W3CW3C的的 RDFRDF驗證服務驗證服務 W3CW3C 提供線上的提供線上的 RDFRDF驗證服務,可以檢查驗證服務,可以檢查 RDFRDF

文件的語法,並且剖析文件的語法,並且剖析 PDFPDF 文件建立表格或圖形文件建立表格或圖形顯示的顯示的 RDFRDF 資料模型,其網址如下所示:資料模型,其網址如下所示:• W3C RDF Validation W3C RDF Validation

ServiceService:: http://www.w3.org/RDF/Validator/http://www.w3.org/RDF/Validator/ 在上述網址將在上述網址將 RDFRDF 文件內容複製和貼上文字區域文件內容複製和貼上文字區域

後,在下方「後,在下方「 Display Result OptionsDisplay Result Options 」區域」區域選擇如何顯示資料模型和圖檔格式,按選擇如何顯示資料模型和圖檔格式,按【【 Parse Parse RDFRDF】】鈕即可進行鈕即可進行 RDFRDF 文件剖析。文件剖析。

Page 73: 第 14 章   XML技術的應用

RDFRDF 的容器元素的容器元素 -1-1

容器元素容器元素 rdf:Bagrdf:Bag 容器元素容器元素 rdf:Bagrdf:Bag 可以群組沒有順序的資源或文字值成員。可以群組沒有順序的資源或文字值成員。

例如:圖書例如:圖書 F8538AF8538A 共有三位作者成員,如下所示:共有三位作者成員,如下所示:<rdf:Description<rdf:Description

rdf:about="http://www.joe.com/book/F8538A">rdf:about="http://www.joe.com/book/F8538A"> <bk:author><bk:author> <rdf:Bag><rdf:Bag> <rdf:li>Joe Chen</rdf:li><rdf:li>Joe Chen</rdf:li> <rdf:li>Mary Chiang</rdf:li><rdf:li>Mary Chiang</rdf:li> <rdf:li>Tom Wang</rdf:li><rdf:li>Tom Wang</rdf:li> </rdf:Bag></rdf:Bag> </bk:author></bk:author></rdf:Description></rdf:Description>

Page 74: 第 14 章   XML技術的應用

RDFRDF 的容器元素的容器元素 -2-2

容器元素容器元素 rdf:Seqrdf:Seq 容器元素容器元素 rdf:Seqrdf:Seq 可以群組有順序的資源或文字值成員。可以群組有順序的資源或文字值成員。

例如:圖書例如:圖書 F8538AF8538A 依序有三位作者成員,如下所示:依序有三位作者成員,如下所示:<rdf:Description<rdf:Description

rdf:about="http://www.joe.com/book/F8538A">rdf:about="http://www.joe.com/book/F8538A"> <bk:author><bk:author> <rdf:Seq><rdf:Seq> <rdf:li>Joe Chen</rdf:li><rdf:li>Joe Chen</rdf:li> <rdf:li>Mary Chiang</rdf:li><rdf:li>Mary Chiang</rdf:li> <rdf:li>Tom Wang</rdf:li><rdf:li>Tom Wang</rdf:li> </rdf:Seq></rdf:Seq> </bk:author></bk:author></rdf:Description></rdf:Description>

Page 75: 第 14 章   XML技術的應用

RDFRDF 的容器元素的容器元素 -3-3

容器元素容器元素 rdf:Altrdf:Alt 容器元素容器元素 rdf:Altrdf:Alt 可以建立群組清單的選項,使用者只能選擇其中一可以建立群組清單的選項,使用者只能選擇其中一

個成員的資源或文字值。例如:圖書個成員的資源或文字值。例如:圖書 F8538AF8538A 擁有三種媒體來出版,擁有三種媒體來出版,使用者只能選擇其中之一,如下所示:使用者只能選擇其中之一,如下所示:

<rdf:Description<rdf:Description

rdf:about="http://www.joe.com/book/F8538A">rdf:about="http://www.joe.com/book/F8538A"> <bk:mediaType><bk:mediaType> <rdf:Alt><rdf:Alt> <rdf:li>Papers</rdf:li><rdf:li>Papers</rdf:li> <rdf:li>CD-ROM</rdf:li><rdf:li>CD-ROM</rdf:li> <rdf:li>FTP Site</rdf:li><rdf:li>FTP Site</rdf:li> </rdf:Alt></rdf:Alt> </bk:mediaType></bk:mediaType></rdf:Description></rdf:Description>

Page 76: 第 14 章   XML技術的應用

14-5 14-5 新聞聚合服務新聞聚合服務 -RSS-RSS

什麼是什麼是 RSSRSS 建立建立 RSSRSS 文件文件 RSSRSS 新聞匯集軟體新聞匯集軟體

Page 77: 第 14 章   XML技術的應用

什麼是什麼是 RSS-1RSS-1 RSSRSS 依不同版本擁有不同英文名稱:依不同版本擁有不同英文名稱: Rich Site Rich Site

SummarySummary、、 Really Simple SyndicationReally Simple Syndication 或或RDF Site SummaryRDF Site Summary ,不論那一個名稱,簡單的,不論那一個名稱,簡單的說,說, RSSRSS 是用來提供網站的摘要資訊,可以在網是用來提供網站的摘要資訊,可以在網路上發表標題和摘要內容。路上發表標題和摘要內容。

RSSRSS 將網站的摘要資訊儲存在一個將網站的摘要資訊儲存在一個 XMLXML 格式檔格式檔案,案, XMLXML檔案可以提供發表標題和摘要內容的功檔案可以提供發表標題和摘要內容的功能,使用者透過讀取能,使用者透過讀取 RSSRSS檔案內容,就可以快速檔案內容,就可以快速瀏覽網站的摘要資訊。瀏覽網站的摘要資訊。

我們只需收集和整合我們只需收集和整合 RSSRSS檔案,就可以建立應用檔案,就可以建立應用程式或網站來提供整合的網站摘要資訊,因為程式或網站來提供整合的網站摘要資訊,因為RSSRSS通常是用來提供網站的即時新聞、更新、公通常是用來提供網站的即時新聞、更新、公司新訊息和重要事件的資訊,所以稱為司新訊息和重要事件的資訊,所以稱為 RSSRSS 聚合聚合新聞服務新聞服務 (RSS News Feed)(RSS News Feed) 。。

Page 78: 第 14 章   XML技術的應用

什麼是什麼是 RSS-2RSS-2

RSSRSS 源於源於 Dave WinerDave Winer於於 19971997年年 1212月的月的scriptingNewsscriptingNews ,它並不是,它並不是 W3CW3C 規格。規格。 RSSRSS 擁擁有多種版本從有多種版本從 0.90~2.00.90~2.0 版,各版本的說明,如版,各版本的說明,如下表所示:下表所示:版本 說明

RSS 0.90 Netscape開發的版本,使用 XML格式和 RDF標頭,目前此版本已不再使用

RSS 0.91 UserLand更新 Netscape的版本建立的 RSS官方版本RSS 0.92~0.94 UserLand持續更新的官方版本

RSS 1.0 RSS-DEV工作小組開發的版本,使用 RDF和名稱空間RSS 2.0 Dave Winer離開 UserLand開發的版本,屬於 0.91版的

後續版本

Page 79: 第 14 章   XML技術的應用

建立建立 RSSRSS 文件文件 -1-101: <?xml version="1.0" encoding="Big5"?>01: <?xml version="1.0" encoding="Big5"?>02: <rss version="2.0">02: <rss version="2.0">03: <channel>03: <channel>04: <title>04: <title> 圖書目錄圖書目錄 </title></title>05: <link>http://www.joe.com/</link>05: <link>http://www.joe.com/</link>06: <description>06: <description> 圖書目錄圖書目錄 </description></description>07: <item>07: <item>08: <title>JavaScript08: <title>JavaScript 網頁製作徹底研究網頁製作徹底研究 </title></title>09: <link>http://www.joe.com/js/F8538A.htm</link>09: <link>http://www.joe.com/js/F8538A.htm</link>10: <description>JavaScript10: <description>JavaScript 是基礎的網頁語言是基礎的網頁語言 , , 11: 11: 可以輕鬆學習可以輕鬆學習 JavaScriptJavaScript 程式設計程式設計 </description></description>12: </item>12: </item>13: <item>13: <item>14: <title>XML14: <title>XML 網頁製作徹底研究網頁製作徹底研究 </title></title>15: <link>http://www.joe.com/xml/F8534A.htm</link>15: <link>http://www.joe.com/xml/F8534A.htm</link>16: <description>XML16: <description>XML 技術的教材技術的教材 , , 17: 17: 可以輕鬆學習可以輕鬆學習 XMLXML理論與實務理論與實務 </description></description>18: </item>18: </item>19: </channel>19: </channel>20: </rss>20: </rss>

Page 80: 第 14 章   XML技術的應用

建立建立 RSSRSS 文件文件 -2-2

RSSRSS 文件是在文件是在 rssrss根元素下使用根元素下使用 channelchannel 元素來元素來定義定義 RSSRSS頭版的頭條新聞,也就是描述頭版的頭條新聞,也就是描述 RSSRSS 聚聚合新聞服務本身。在合新聞服務本身。在 channelchannel 常用的子元素說明,常用的子元素說明,如下表所示:如下表所示:

元素 說明title 簡單描述網站或 RSS聚合新聞服務link 網站的首頁的 URL網址

description 詳細描述網站或 RSS聚合新聞服務category 定義 channel擁有的分類目錄copyright 版權宣告內容language 定義使用的語言

image 插入圖片pubDate 最後出版的日期

lastBuildDate 最後更新的日期

Page 81: 第 14 章   XML技術的應用

建立建立 RSSRSS 文件文件 -3-3

RSSRSS 文件的文件的 channelchannel 元素是使用元素是使用 itemitem 子元素來子元素來描述摘要資訊的項目。在描述摘要資訊的項目。在 itemitem常用的子元素說常用的子元素說明,如下表所示:明,如下表所示:元素 說明title 簡單描述摘要資訊項目link 摘要資訊項目網頁的 URL網址

description 詳細描述摘要資訊項目author 定義摘要資訊項目的作者

category 定義項目所屬的 channel分類目錄guid 定義項目唯一的 GUID(Globally Unique Identifier)

pubDate 摘要資訊項目的出版日期

Page 82: 第 14 章   XML技術的應用

RSSRSS 新聞匯集軟體新聞匯集軟體 FeedReaderFeedReader 是一套免費是一套免費WindowsWindows 作業作業

系統的系統的 RSSRSS 新聞匯集軟體,目前版本是新聞匯集軟體,目前版本是2.92.9 版。其官方網址是:版。其官方網址是: http://http://www.feedreader.com/www.feedreader.com/ 。。

使用者就不需要每天自行花時間連結到不使用者就不需要每天自行花時間連結到不同網站來取得資訊,只需透過同網站來取得資訊,只需透過 RSSRSS 聚合新聚合新聞服務,我們可以安裝聞服務,我們可以安裝 RSSRSS 新聞匯集軟體新聞匯集軟體(News Aggregator)(News Aggregator) 來定時檢查、更新和來定時檢查、更新和取得取得 RSSRSS檔案,自動取得網站的最新資訊。檔案,自動取得網站的最新資訊。