May 10, 2006

XBLって何?

拡張を作成し始めると XBL という言語を目にすると思います。
Firefox本体のソースを見ると、GUIのほとんどがこれで記述されています。
Mozilla 開発者資料では

拡張可能なバインディング言語 - 他のドキュメントのエレメントへ付属させることが可能なバインディングを記述するためのマークアップ言語

とあるのですが、わかりやすい説明がなかったのでちょっと書いてみる。

Firefox本体や拡張の中では”xml”という拡張子のものがこれにあたります。これは何をするものかというと、メニューなどの GUI を部品として提供するバインディングということをしてくれます。
同様の機能は他にもあります。それはオーバーレイです。ではこのバインディングとオーバーレイはどう違うのでしょう?(今回のポイントです。)

まずオーバーレイは、一つのドキュメント内(一つのウィンドウやダイアログ内)に特定の ID があるとその ID をもつ XUL エレメントにオーバーレイしておいた GUI を結び付けます。ID は本来一つのドキュメント内で唯一のものであるべきもの(複数配置することは可能ですが)であるので、ドキュメント内で最初にマッチした ID のみに結び付けられます。
例えば一つのダイアログにて、同じメニューを複数回使う場合にはこのオーバレイは使えません。最初に ID がマッチした XUL エレメントにはメニューが追加されますが、残りには追加されません。

そこで登場するのが、XBL のバインディングです。これはクラス指定された XUL エレメントを Mozillaの拡張 CSS を介してバインディングされたエレメントと結び付けます。単純にクラス指定してるので複数回使いまわせそうな気がしますよねw
先ほど場合のように複数回 GUI 部品を使いまわす際とっても便利です。
使用する際に注意すべき点は、通常の DOM 操作ではバインディングした XUL エレメントが見えない(操作できない。)のでちょっと使い方にコツが必要です。下記のリンク先にその辺の説明もあります。
An XBL Primer
XBL (Extensible Binding Language:伸長性のある紐付け言語) 1.0
などが参考になるかと思います。

Get Firefox!
この記事へのコメント
コメントを書く
※Name:

Email Address:

URL:

※Comments:

この記事へのトラックバック