用途 | ブックマーク交換 |
---|---|
実行 | - |
日本語 | ○ |
対応環境 | XML |
入手 | 仕様書は無償 |
XBEL の名は、「XML Bookmark Exchange Language (XML による ブックマーク交換のための言語)」の略です。XBEL はブックマークの保存形式の ひとつですが、オープンな規格である XML を使っているのが 強みです。XML も XBEL もシンプルなので、対応したソフトを作成するのは 比較的簡単です。しかも、拡張性を考えて設計されています。 ちなみに、Python.org で Python 言語 用の XML 処理ライブラリを開発した歳に生まれたものだそうです。
しかし、そんなにいいモノだとしても、なんの役に立つのでしょう? ブックマークの形式なんて、ソフトを使う人には関係ないのでは? ……という疑問もわいたかもしれません。
XBEL の最大の目的は、ブックマークを保存することではありません。 あるブラウザの形式で保存されたブックマークを他の形式に変換したいときに、 XBEL を「中間言語」として使うのです。つまり、 例えば Internet Explorer の形式を Navigator の形式に変換する場合、 直接変換するのではなく、Internet Explorer の形式から一度 XBEL に変換し、 それから改めて Navigator の形式に変換するのです。
「1 対 1」の変換だと手間が増えて損な気がしますが、これが「多対多」だと 話が違います。ブラウザにはいくつも種類がありますし、同じブラウザでも バージョンが違うと形式が変わったりします。仮に 10 種類の形式しかないとしても、 「1 対 1」の方法で変換すると、すべての形式で互いに変換できるように するには 90 通りのプログラムが必要になってしまいます。一度 XBEL に 変換する場合は、各形式と XBEL が互いに変換できればいいので、 たった 20 通りですんでしまいます。
一般には、変換を行なうと情報が減ってしまいます。Navigator 形式の ブックマークを Internet Explorer に変換すると Navigator 形式独自の 情報は抜け落ちてしまうため、再び Navigator 形式に変換し直しても その情報は元に戻らないのです。XBEL ではこのような特定のブラウザ専用の情報も 保存できるように工夫されています。
さらに、XBEL はウェブブラウザだけでなく巡回エージェントと呼ばれる種類の ソフトにも対応できます。つまり、Navigator 形式を WWWC 形式に変化したりすることも 考えられるわけです。XBEL 形式でそのまま保存して、人に渡すこともできます。 受け取った方では、XBEL を自分のブラウザや巡回エージェントの形式に変換する ソフトを見つけるだけですみます。「おすすめのリンク集」をプリクラみたいに 交換することもできるわけです。
さて、ここからは XBEL の実際の形式について紹介します。 XML に関する知識が必要ですので、知らんという方はこの機会に XML についても 学んでみるといいかもしれません。
仕様書が公開されている XBEL 1.0 に登場する要素は 9 種類あります。
文書ルートの xbel
要素の他、
ブックマーク (bookmark
)、
フォルダ (folder
)、
エイリアス (alias
)、
セパレータ (separator
) を表す
要素 (以下、この 4 つをまとめてブックマークノードと呼びます) と、
それらについての情報を記述するための
要素 (title
、
info
、
metadata
、
desc
) があります。各ブックマークを登録した
日時などはブックマークの要素に属性として保存されます。
以下の内容は、XBEL 1.0 の文書型定義と仕様書を元に作成したものです。
XBEL の文書型定義は
http://www.python.org/topics/xml/dtds/xbel-1.0.dtd にあり、
+//IDN python.org//DTD XML Bookmark Exchange Language 1.0//EN//XML
という公開識別子が与えられています。
空文字列を定義したパラメータ実体が 3 つ用意されており、用途によっては これを使って拡張することができます。
xbel
要素<!ELEMENT xbel (title?, info?, desc?, (%nodes.mix;)*)> <!ATTLIST xbel %node.att; version CDATA #FIXED "1.0" >
folder
要素とほぼ共通です。
ソフトウェアは、フォルダのような展開・縮退ができない点を除いて、
フォルダと同様に処理することが期待されています。title
(0 または 1 個)、info
(0 または 1 個)、desc
(0 または 1 個)、ブックマークノード (0 個以上) をこの順でid="ID"
alias
要素の ref
属性で使われます。省略可能。added="日時"
version="バージョン番号"
title
要素<!ELEMENT title (#PCDATA)>
xbel
、folder
、bookmark
info
要素<!ELEMENT info (metadata+)>
metadata
を 1 つも
もたない info は削除されます。xbel
、folder
、bookmark
metadata
metadata
要素<!ELEMENT metadata EMPTY> <!ATTLIST metadata owner CDATA #REQUIRED >
owner="URI"
desc
要素<!ELEMENT desc (#PCDATA)>
xbel
、folder
、bookmark
folder
要素<!ELEMENT folder (title?, info?, desc?, (%nodes.mix;)*)> <!ATTLIST folder %node.att; folded (yes|no) 'yes' >
xbel
、folder
title
(0 または 1 個)、info
(0 または 1 個)、desc
(0 または 1 個)、ブックマークノード (0 個以上) をこの順でid="ID"
alias
要素の ref
属性に使われます。省略可能。added="日時"
folded="状態"
yes
か、中身が表示されていることを示す no
のどちらかで、既定値は yes
。bookmark
要素<!ELEMENT bookmark (title?, info?, desc?)> <!ATTLIST bookmark %node.att; %url.att; >
title
要素があれば、
それを使って表示され、ユーザーの指示に応じて desc
などの
内容も表示されるでしょう。それ以外の動作はソフトウェアによります。xbel
、folder
title
(0 または 1 個)、info
(0 または 1 個)、desc
(0 または 1 個) をこの順でhref="URI"
id="ID"
alias
要素の ref
属性に使われます。省略可能。added="日時"
modified="日時"
visited
より
古い日付になるでしょう。巡回ソフトなどでは visited
の方が
新しくなることがあります。visited="日時"
separator
要素<!ELEMENT separator EMPTY>
xbel
や folder
内の
ブックマークやフォルダを、グループごとに分ける境目を表します。
folder
が階層構造を作るのに対して、
separator
は構造を作るわけではありません。表示される際は、
水平線がはいったりや行間が大目に取られたり、読み上げに間を置かれたりします。xbel
、folder
alias
要素<!ELEMENT alias EMPTY> <!ATTLIST alias ref IDREF #REQUIRED >
xbel
、folder
ref="参照する ID"