mozilla
您的搜索结果

    XUL_教程/RDF介绍

     

     

        本章我们关注与RDF (资源描述框架).

    资源描述框架

        我们可以使用 tree 元素呈现数据集,就像书签和邮件管理器一样。然而这样却使向 XUL 文件中直接添加数据变得很不方便。直接在XUL文件中修改书签变得十分困难。这就需要RDF 数据结构。

        RDF (资源描述框架)是一种用于储存像书签或邮件这样的资源的格式。其他形式的数据可以被编码为RDF,也可以有RDF创建其他形式的数据。这是 Mozilla 处理像书签、邮件、历史等的方法。Mozilla 为这些常用的数据提供了数据源,使我们很容易使用他们。

        你可以使用任意的RDF数据源来填充树结构,或者仅把RDF指向一个存有数据的XML文件。这使得显示含有许多行的树变得非常容易。RDF 也可以填充其他的 XUL 元素比如列表及菜单,见下一章。

        这里是关于RDF的一个非常简略的概述,希望看到更为详尽的内容请访问XULPlanet上的 Introduction to the RDF Model。如果你刚刚接触RDF请继续向下阅读。

        更多信息参见 RDF specification.

    RDF/XML

        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头有些相似,window 元素被 RDF 元素代替。同样为RDF定义了名空间,在RDF元素中将填充一些数据。可以在Mozilla文件夹中找到一些 RDF/XML 文件的例子,他们以rdf作为后缀。

    RDF 数据库

        让我们来以有RDF产生的书签列表为例。书签列表包含一系列记录,每项记录都有一系列数据相关联,比如书签标题,URL,访问日期等。

        把书签当作数据库来考虑,这个数据库是一个含有多个域的表格。这个列表需要分级,因为我们需要利用文件夹来分组书签。每一个域都来源与RDF数据库,都由名字相关联。名字用URI描述。

        例如Mozilla书签列表的名字的RUI描述如下:

    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/XML 文件样例

        下面是一个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 标签描述一条记录。每条记录定义了三个域:namespeciesclass。虽然没有必要让每一条记录拥有相同的域,但是最好如此。

        三个域都在 ANIMALS名空间下, ANIMALS名空间在RDF标签中定义。选择这个名字是因为它的意思,但完全可以选择其他名字。这里的名空间定义是有用的,因为如果使用样式表class 域可能发生冲突。

         Seqli 元素在列表中区分每一条记录,与HTML 列表中的定义很相似。 Seq 指明记录是有序的紧挨着的,对于无序内容使用 Bag 标签, Alt 用于指明其中的记录只能选择其一(如映射 URL)。

        在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

        记下来,看看如何使用RDF来填充XUL数据。

    文档标签和贡献者

    此页面的贡献者有: ziyunfei, teoli, alzhu
    最后编辑者: teoli,