XUL Tutorial:RDF Datasources
出典: MDC
このセクションでは、いくつかのデータソースと、独自の RDF ファイルをデータソースとして使用する方法を見ていきます。
目次 |
[編集] いろいろな Mozilla データソース
Mozilla では、多くの組み込みのデータソースを提供しています。 ここでは、そのうちのいくつかを例と一覧で示していきます。 それらは、フィールドについては対応するデータに応じて異なりますが、動作については、ブックマークの場合と非常によく似た挙動を示します。
[編集] 履歴リスト
履歴 (history) データソースは、利用者の履歴リスト、つまり利用者が最近訪れた URL のリストへのアクセスを提供します。
リソースは、データソースとして、rdf:history を指定することで参照できます。
以下の表は、履歴データソースから取得できるリソース (あるいはフィールド) を示しています。
テンプレートを作成するとき、リソースの値を使いたい場所に、表中の URL の値を置いてください。
| Date | http://home.netscape.com/NC-rdf#Date | 最後に訪れた日付 |
| Name | http://home.netscape.com/NC-rdf#Name | ページのタイトル |
| Page | http://home.netscape.com/NC-rdf#Page | ページの名前 |
| Referrer | http://home.netscape.com/NC-rdf#Referrer | ページの参照元 |
| URL | http://home.netscape.com/NC-rdf#URL | ページの URL |
| Visit Count | http://home.netscape.com/NC-rdf#VisitCount | ページの訪問回数 |
履歴リストを表示する場合、通常はツリーを利用して、上記のフィールドから表示する必要があるものを選択して表示させることになります。
テンプレートから使用するためには、上の URL 値を、button や treecell の label 属性に置いてください。
また、ref 属性の値としては、NC:HistoryRoot を指定できます。
もしくは、NC:HistoryByDate を指定することで、日付単位でまとめられた履歴を取得することも可能です。
[編集] 履歴リストの例
それでは、履歴リストを表示する例を見ることにしましょう。 履歴を、Name、URL、Date という 3 つのカラムからなるツリー内に表示させることにします。
例 1 : ソース
<tree flex="1" datasources="rdf:history" ref="NC:HistoryRoot">
<treecols>
<treecol id="name" label="Name" flex="1"/>
<treecol id="url" label="URL" flex="1"/>
<treecol id="date" label="Date" flex="1"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://home.netscape.com/NC-rdf#Name"/>
<treecell label="rdf:http://home.netscape.com/NC-rdf#URL"/>
<treecell label="rdf:http://home.netscape.com/NC-rdf#Date"/>
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
[編集] その他のデータソース
以下の表では、Mozilla で利用可能な、それ以外のデータソースをいくつかリストしています。 これらのリソースは、どれでも必要に応じて使用することが可能です。
- Bookmarks (rdf:bookmarks)
- ブックマークは、利用者のブックマークリストから生成されます。
| リソース | ||
|---|---|---|
| Added Date | http://home.netscape.com/NC-rdf#BookmarkAddDate | ブックマークが追加された日付 |
| Description | http://home.netscape.com/NC-rdf#Description | ブックマークの説明 |
| Last Modified | http://home.netscape.com/WEB-rdf#LastModifiedDate | 最終更新日付 |
| Last Visited | http://home.netscape.com/WEB-rdf#LastVisitDate | 最後に訪れた日付 |
| Name | http://home.netscape.com/NC-rdf#Name | ブックマークの名前 |
| Shortcut URL | http://home.netscape.com/NC-rdf#ShortcutURL | カスタムキーワードフィールド |
| URL | http://home.netscape.com/NC-rdf#URL | リンク先 URL |
| Bookmarks のルートとして指定可能な値 | |
|---|---|
| NC:BookmarksRoot | ブックマーク階層のトップレベル |
| NC:IEFavoritesRoot | 利用者の IE のお気に入りに対応するブックマークフォルダ |
| NC:PersonalToolbarFolder | パーソナルなツールバーフォルダに対応するブックマークフォルダ |
- Files (rdf:files)
- 利用者環境の (ローカルな) ファイルの情報を参照します。
| リソース | ||
|---|---|---|
| Name | http://home.netscape.com/NC-rdf#Name | ファイルの名前 |
| URL | http://home.netscape.com/NC-rdf#URL | ファイルの URL |
| Files のルートとして指定可能な値 | |
|---|---|
| NC:FilesRoot | ファイルシステムのトップレベル。(通常、ドライブのリスト) |
| ファイルの URL | ref 属性に、ファイル URL を指定することで、特定のディレクトリを参照するように選択できます。例えば、file:///windows や files:///usr/local のような指定が可能です。 |
ファイルデータソースは、実際に必要になったときにリソースの確定を行うタイプのデータソースの一例になります。 ツリーやメニューを表示させるとき、実際にデータが表示される前に、ファイルシステム中のすべてのファイルを走査してリソース情報として確定するのは望ましい動作ではないはずです。 実際のファイルデータソースは、その時点でツリー要素 (あるいはその他の要素) が表示する必要があるファイルとディレクトリについてだけが走査されて確定するように動作します。
[編集] 複合データソース
以下の例で示すように、datasources 属性には複数のデータソースを空白文字 (whitespace) で区切って指定できます。
これは、指定されたすべてのデータソースからデータを読み込む効果があります。
<tree datasources="rdf:bookmarks rdf:history animals.rdf" ref="NC:BookmarksRoot">
この例は、リソースを、ブックマークと履歴の組み込みデータソースと、animals.rdf ファイルから読み込みます。
これらは 1 つの複合データソースに結合されるため、あたかも 1 つのデータソースであるかのように使用することが可能です。
また、特殊なデータソースである rdf:null は、何にも対応しません。
このデータソースは、スクリプトを使用してデータソースを動的に設定する場合に、
初期値としてどのデータソースも指定したくない場合や、指定する URL が正確に分からない場合に使うことができます。
[編集] カスタム RDF データソース
上記の組み込みのデータソースは、どれでも必要に応じて使用することが可能です。
これ以外にも、メールやアドレス帳、検索などについてもデータソースが提供されています。
しかしながら、RDF ファイルに保存された、独自の RDF データソースを使いたい場合もあるかもしれません。
このために必要なことは、RDF ファイルの URL を datasources 属性に置くだけです。
このときの RDF ファイルは、ローカルでもリモートでも構いません。
RDF ファイルを使用する場合にも、組み込みのデータソースの場合と完全に同等の機能が提供されています。
例えば、特定の型にマッチしたコンテントを生成するためにルールを指定することが可能です。
このときは、rule 要素に指定した属性が、RDF の Description 要素の属性とマッチした場合に、マッチしたことになります。
また、階層的な RDF ファイルを作ることも可能です。
[編集] RDF ファイルを使用した例
以下の例は、RDF ファイルをデータソースとして使用する方法を示しています。 使用する RDF ファイルは結構大きいため、 別ファイルで参照するようにしておきます: Source RDF
<tree flex="1" width="200" height="200"
datasources="animals.rdf" ref="http://www.some-fictitious-zoo.com/all-animals">
<treecols>
<treecol id="name" label="Name" primary="true" flex="1"/>
<treecol id="species" label="Species" flex="1"/>
</treecols>
<template>
<rule>
<treechildren>
<treeitem uri="rdf:*">
<treerow>
<treecell label="rdf:http://www.some-fictitious-zoo.com/rdf#name"/>
<treecell label="rdf:http://www.some-fictitious-zoo.com/rdf#species"/>
</treerow>
</treeitem>
</treechildren>
</rule>
</template>
</tree>
ここでは、データはファイルから生成されています。
また、ref 属性は、RDF ファイルのルート要素、つまり、トップレベルの Seq に設定されています。
これによって、animals に含まれている完全なリストが取得できます。
なお、必要であれば、ref 属性の値を、それ以外の about 属性の値に変更することで、返されるデータの範囲を制限することが可能です。
例えば、reptiles (爬虫類) だけを表示するには、http://www.some-fictitious-zoo.com/reptiles という値を指定します。
[編集] ref 属性の設定例
以下の例は、ref 属性を設定することで、RDF データソースの特定部分を表示する方法を示しています。
<window
id="example-window"
title="History List"
xmlns:ANIMALS="http://www.some-fictitious-zoo.com/rdf#"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<button label="Click here to see the mammals the zoo has" type="menu"
datasources="animals.rdf" ref="http://www.some-fictitious-zoo.com/mammals">
<template>
<rule ANIMALS:specimens="0"></rule>
<rule>
<menupopup>
<menuitem uri="rdf:*" label="rdf:http://www.some-fictitious-zoo.com/rdf#name"/>
</menupopup>
</rule>
</template>
</button>
</window>
この例では、mammals (哺乳類) だけを求めたい場合を想定して、mammals リストの URI を選択しています。
例の中で、ref 属性の値が、http://www.some-fictitious-zoo.com/mammals に設定されていて、
これが、RDF ファイル の Seq 要素の 1 つと対応していることを確認してください。
この設定によって、このリストの子孫だけが返されることになります。
また、ここでは、ルールが 2 つ使われています。
最初のルールは、ANIMALS:specimens 属性が 0 に設定されたリソースすべてをキャッチします。
【訳注: specimen は「見本」という意味 -- この場合は、飼育されている頭数のことと思われる】
RDF ファイルを参照して、各 Description 要素に対してこの属性が設定されていることと、
その中に、値が 0 で設定されているのものがあることを確認してみてください。
これらの値が 0 で設定されている要素には、最初のルールがマッチすることになりますが、
このルールにはコンテントがないため、これらのリソースに対しては何の表示も行われません。
この方法は、表示したくないデータを隠す場合に役に立ちます。
2 番目のルールは、それ以外のすべてのリソースに適用され、ポップアップメニューの行を生成します。 最終的には、specimen に 0 以外が設定された、すべての mammals を含んだポップアップメニューが得られることになります。
次のセクションでは、ルールに関する全ての構文について見ていきます。
