
このセクションでは、RDF (Resource Description Framework - リソース記述のための枠組み) を見ることにしましょう。
ツリー要素は、ブックマークやメールメッセージなどのデータセットを表示するのに使えます。しかし、データを直接 XUL ファイルに入れれば、それが可能というのでは不便です。また、ブックマークが、直接、XUL ファイル内に置かれているとすると、それを更新するのはとても難しいことになってしまいます。これを解決する方法は、RDF データソースを使うことです。
RDF (Resource Description Framework) は、ブックマークやメールなどのリソースを保存するのに使えるファイルフォーマットです。それ以外に、他のフォーマットのデータを使うことも、ファイルを読み込んでその内容から RDF データを作るコードを書くこともできます。これは、ブックマークや履歴、メールメッセージなどのデータを読むとき、Mozilla がやっていることです。Mozilla は、他のデータとともにこうしたよくあるデータのためのデータソースを提供しています。それによって、これらのデータリソースは簡単に使用できます。
データからなるツリーを生成するために、提供されたデータリソースのどれでも使うことができます。また、ツリー内のデータを使って RDF ファイルを参照することもできます。これによって、多くの行からなるツリーを表示するのが非常に簡単になります。RDF は、メニューなどといった他の XUL 要素を生成することもできます。これについては、次のセクションで見ることにしましょう。
ここでは、簡単に RDF を概観します。RDF を理解するよい方法は、Mozilla が提供する RDF ファイルを幾つか見ることです。それらのファイルは、rdf という拡張子をもちます。
RDF は、XUL と同様に、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 要素は正しく認識されます。RDF 要素内には、データを置きます。
RDF の完全な説明は、ここではしません。しかし、一部の説明はすることにします。RDF から生成されたブックマークリストの例を取り上げることにしましょう。ブックマークリストにはレコードセットがあり、それぞれは、URL やブックマークのタイトル、訪れた日付などの関連するデータセットからなります。
ブックマークをデータベースと考えましょう。これは、多くのフィールドからなる大きなテーブルとして保存されます。しかし、RDF の場合、リストは、同時に階層的かもしれません。これは、ブックマークのフォルダーやカテゴリーをもつことができるために、必要なことです。RDF データベースの個々のフィールドは、それぞれ、それと関連する名前をもつリソースです。名前は、URL (実際は、URI) を使って記述します。
例えば、Mozilla のブックマークリストのフィールドの選択は、以下の URI を使って記述します。
| Name | http://home.netscape.com/NC-rdf#Name | ブックマークの名前 |
| URL | http://home.netscape.com/NC-rdf#URL | リンクするための URL |
| Description | http://home.netscape.com/NC-rdf#Description | ブックマークの記述 |
| Last Visited | http://home.netscape.com/WEB-rdf#LastVisitDate | 最後に訪れた日付 |
これらは、ネームスペースの名前を取りフィールド名を追加することによって生成されます。次のセクションで、自動的にフィールドに値をうめるために、どうやってこれらを使うか見ることにしましょう。最後に訪れた日付は、他の 3 つと微妙に異なったネームスペースをもつ点に注意して下さい。(訳注: 原文は "the last modified date" となっていますが、"the last visited date" の誤りと思われるので、そのように訳しました。)
以下の例は、3 つのレコードと 3 つのフィールドからなるテーブルをリストする RDF ファイルの例を示しています。
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ANIMALS="http://www.some-ficticious-zoo.com/rdf#">
<RDF:Seq about="urn:animals:data">
<RDF:li>
<RDF:Description about="urn:animals: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="urn:animals: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="urn:animals: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>
|
ここには、それぞれ動物を記述した 3 つのレコードがあります。RDF:Description タグのそれぞれが、一つのレコードを記述しています。個々のレコードには、name、species、type という 3 つのフィールドが記述されています。すべてのレコードが同じフィールドをもつ必要はありませんが、フィールドが同じであれば意味あるものになるでしょう。
3 つのフィールドは、ANIMALS というネームスペースを与えられています。この場合、それは、利用可能な他のネームスペースとの衝突を防ぐために付けられています。この名前が選ばれたのはこの場合にふさわしかったからで、他の名前を付けることもできました。ネームスペースは、RDF タグで URL を使って宣言されています。ネームスペースの機能は有益です。class フィールドは、スタイルで使われる同名のフィールドと衝突するからです。URL はここで作られたものです。おそらく、もっと適切なものを使うことになるでしょう。
Seq と li 要素は、レコードがリスト内にあることを指定するために使われています。これは、HTML のリストを宣言する方法と非常によく似ています。Seq 要素は、要素が順序付けられている、つまり、順に並んでいることを示すために使われています。Seq 要素の代わりに、順序付けられていないデータであることを示すために Bag を、個々のレコードが (ミラー URL などのような) 別の値を指定しているようなデータを示すために Alt を使うこともできます。
リソースは、XUL ファイルでは、ネームスペース URL とその後ろにフィールド名を組み合わせて参照できます。上の例では、次の URI が生成されます。これは、指定のフィールドを参照するのに使うことができます。
| Name | http://www.some-ficticious-zoo.com/rdf#name |
| Species | http://www.some-ficticious-zoo.com/rdf#species |
| Class | http://www.some-ficticious-zoo.com/rdf#class |
(進む) 次は、XUL 要素を生成するために、RDF をどのように使うことができるか見ることにしましょう。