DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> XUL教程 - 9.1 - RDF概述
XUL教程 - 9.1 - RDF概述
編輯:XML詳解     

 這一小節,我們將來探究RDF(資源描述框架)。 資源描述框架(Resource Description Framework)

  我們可以使用樹型元素來顯示一組數據,比如書簽或者郵件。但是直接向XUL文件輸入數據真的是很繁瑣的事情,如果書簽保存在XUL文件中,會使修改書簽的操作變得復雜化。一個不錯的解決方案就是使用RDF數據源。

  RDF(資源描述框架,Resource Description Framework)是一種格式,可以用來儲存書簽或者郵件這類資源。另外,可以把其他類型的數據轉換成RDF格式的文件,並且從中讀取數據。這是 Mozilla讀取數據的基本方式,比如書簽、歷史記錄或者郵件消息等都是采用這種方式。Mozilla還為這些常用數據提供了數據源,你也直接調用。

  你可以使用現有的RDF數據源填充樹型元素,你也可以直接從一個XML文件中讀取RDF數據,這有利於構建包含龐大數據的樹型結構。RDF的數據也可以填充到其他XUL元素中,比如列表和菜單等。我們將在下一節介紹相應的例子。

  我們在這裡只對RDF進行簡要的說明,如果要了解更多關於RDF的信息,請參考《什麼是RDF》這篇文檔。如果你以前沒有接觸過RDF,更加建議你首先閱讀一下。Mozilla代碼中也包含了大量XML格式的RDF文件。

  RDF由一個可以把數據圖形化的模型組成。RDF/XML是一種可以用來描述RDF數據的XML語言。由一組非常簡單的元素組成,下面的例子就是一個簡單的RDF模板。

<?XML version="1.0"?>
<RDF:RDF
 XMLns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
...
</RDF:RDF>

  這個例子和XUL的頭部很相似,不同的是,這裡使用的是RDF元素而不是window元素。而且在這裡定義了RDF命名空間,這樣浏覽器才能正確的識別RDF元素。在RDF元素內部,你可以放置數據。

  這裡只是對RDF進行簡要的描述,更多關於RDF的信息請參考W3C的RDF定義文檔。讓我們通過一個例子來說明,在這個例子中將會有一個通過RDF數據生成的書簽列表。一個書簽列表包含很多記錄,每條記錄裡面都關聯了一組數據,比如地址、標題和訪問日期等。

  如果把書簽列表比作一張數據表,在這張數據表中就存儲了很多記錄。對於RDF來說,這個列表也包括很多列。這是很必要的,因為我們需要為書簽設置類別或者目錄。RDF數據庫中的每個字段都是一個資源,有唯一的名稱來對應,名稱是通過URI來描述的。

  比如說,對於每一個Mozilla的書簽都需要使用URI描述以下的字段:

Name http://home.Netscape.com/NC-rdf#Name Bookmark name URL http://home.Netscape.com/NC-rdf#URL URL to link to Description http://home.Netscape.com/NC-rdf#Description Bookmark description Last Visited http://home.Netscape.com/WEB-rdf#LastVisitDate Date of last visit

  這些資源名稱是按照命名空間名稱加上字段名稱的形式構成的。在下一小節,我們將會探討如果使用RDF自動填充數據。在這個例子中,需要注意“Last Visited”的命名空間和其他三項是不同的。

  下面是一個RDF/XML的例子,描述了一個包括三個字段和三條記錄的數據表。

<RDF:RDF XMLns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     XMLns:ANIMALS="http://www.some-fictitious-zoo.com/rdf#">
<RDF:Seq about="http://www.some-fictitious-zoo.com/all-animals">
<RDF:li>
<RDF:Description
about="http://www.some-fictitious-zoo.com/mammals/lion">
  <ANIMALS:name>Lion</ANIMALS:name>
  <ANIMALS:species>Panthera leo</ANIMALS:specIEs>
  <ANIMALS:class>Mammal</ANIMALS:class>
</RDF:Description>
</RDF:li>
<RDF:li>
<RDF:Description
about="http://www.some-fictitious-zoo.com/arachnids/tarantula">
  <ANIMALS:name>Tarantula</ANIMALS:name>
  <ANIMALS:species>Avicularia avicularia</ANIMALS:specIEs>
  <ANIMALS:class>Arachnid</ANIMALS:class>
</RDF:Description>
</RDF:li>
<RDF:li>
<RDF:Description
about="http://www.some-fictitious-zoo.com/mammals/hippopotamus">
  <ANIMALS:name>Hippopotamus</ANIMALS:name>
  <ANIMALS:species>Hippopotamus amphibius</ANIMALS:specIEs>
  <ANIMALS:class>Mammal</ANIMALS:class>
</RDF:Description>
</RDF:li>
</RDF:Seq>
</RDF:RDF>

  在這個例子中,描述了三條記錄,每條記錄都對應於一種動物。每個RDF:Description標簽用來描述一條記錄,而在每個記錄裡,又描述的三個字段,分別是name、specIEs和class。每條記錄沒有必要定義相同的字段,但在這個例子中這樣定義更加有意義。

  所有的字段都隸屬於ANIMALS命名空間,這個命名空間是在最開始的RDF標簽上定義的。選擇這個名字來作為命名空間的理由主要還是根據實際的含 義,但實際上我們還是可以選擇其他的名字來作為命名空間名稱的。命名空間是必須的,比如class字段就有可能和樣式表的相應屬性沖突。

  Seq和li元素用來表示這些記錄組成了一個列表,這和Html列表元素的定義方式多少有些想像。Seq元素用來標識這些元素的順序是固定的。除了 使用Seq元素,還可以使用Bag元素和Alt元素,Bag元素通常用於亂序的情況,而Alt元素用來表示記錄之間是可以被替換的,比如說鏡像地址之類的 數據。

  在XUL文件中,可以通過命名空間地址和字段名直接指向一個資源。下面的例子中,每一個URI都可以指向特定的字段:

Name http://www.some-fictitious-zoo.com/rdf#name SpecIEs http://www.some-fictitious-zoo.com/rdf#specIEs Class http://www.some-fictitious-zoo.com/rdf#class
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved