XML Binding Language

XBL (HTML)

[13] XBL (XML 束縛言語 (そくばくげんご) (binding language) ) は、 DOM 要素スタイルシートスクリプト、 仮想的な内容 (影木) などを結びつける (束縛する) ためのマーク付け言語語彙でした。

[43] XBL表現と構造の分離、あるいは MVC モデルの実現に有効と考えられています。

最も分かりやすいと思われるのが HTMLファイルうp 制御子で、 HTML 文書内では input 要素1つで表されますが、多くの Webブラウザファイル名のためのテキスト入力制御子と、 視覚的にファイルを選択するための押しボタン制御子 (など) の組合せでレンダリングされます。 Gecko では、実際にこの意味的には1つのもの実際上は複数組合わさった複雑なもの束縛のために XBL を使っています。

3つの XBL

[14] XBL と呼ばれているものには3種類ありました。

[27] 3つの XBL 仕様は設計思想が似ていますが、互換性はありませんでした。

[26] XBL 2.0sXBL は実装されることなく破棄されました。

[34] XBL 2.0 は結局実装されることはありませんでしたが、 その反省から改めて設計されたのが Web Components です。

[33] 詳細は各項を参照。

XML と HTML と XBL

[36] 00年代は HTML から XML へ移行するのが政治的に正しいと考えられており、 XBLXML ベースの新たなマーク付け言語として設計され、 XML文書に対して適用されるものとして規定されていました。

[37] XBL 1.0RCCW3C XBL 2.0sXBLMozilla XBL 2.0 はいずれも XML ベースで設計されていました。

[38] ただし Gecko の実装では HTML文書HTML要素でも XBL 1.0 を使うことはできました。

[39] 00年代後半には XML の失敗が明確になってきて、束縛もむしろ HTML文書に適用することが考えられるようになりました。束縛の記述方式は XML よりも HTML により統合された形が望ましいと思われるようになりました。

[40] XBL 2.0 最終版は旧 XBL 2.0 案の XML 要素HTML に移植した形となっています。

[41] Web ComponentsHTML が前提となった設計になっています。

[42] XBL 2.0 最終版や Web Components の時代には HTMLDOM ベースで規定されるのが前提となっていますから、 HTML が基本とはいえ、 XML でも利用することは可能な形になってはいます。

歴史

[15] XBL 1.0 仕様は、2000年11月に Netscape 社により策定されました [XBL 1.0] の履歴参照。 そして、2001年2月には、 W3C提出されました XBL 1.0 NOTE

[16] GeckoXBL 1.0 仕様に基づいてこれを実装しましたが、 すべての部分で仕様通りとはなっておらず、また、 必要に応じて拡張が行われました。

Gecko の実装する XBL 1 に関する正式な仕様書のようなものはありませんが、 XULPlanet の参照マニュアル XULPlanet (と Geckoソース・コード自体) が規範的なものと考えられています。

なお、2003年に Mozilla.org の公開している XBL 1.0 仕様書 XBL 1.0 は微妙に改訂されていますが、 依然、実際の Gecko の実装とは異なっています。

[17] 時は流れて2004年、 W3C SVG WGSVG 1.2 の仕様策定を進めていましたが、 RCC という、丁度 XBL と同じような機能がありました。 W3C CSS WGXBL 1.0提出 (>>15) (と、 MicrosoftHTC など類似の提案) を受けて CSS 3 でこの機能を扱うことにしていましたので、 独自の RCC は開発を中止し、 W3C で開発する XBL 2.0SVG でも採用することに決めました。

W3C Binding Task Force は、まず SVG 1.2 で必要な機能を規定する sXBL 仕様を完成させ、 後に SVG 以外にも適用できる W3C XBL 2.0 仕様に発展させるという計画で、作業を進めています。

[18] ところが2005年10月、 Mozilla財団は、 W3C における XBL 2.0 標準化の方針の対立から、独自の XBL 2.0 仕様案を公表し、開発を進めています XBL 2.0W3CXBL 2.0 が未だ WD すら公開されていない状況で、 MozillaXBL 2.0 は既に完成に近い状態で、 近い将来の Gecko の他、 OperaSafari も実装するのではないかと期待されています。

W3CMozillaXBL 2.0 に関する対立に関しては、 XBL 2.0 の項をご覧下さい。

[35] その後の動きは XBL 2.0 の項を、更にその後の動きは Web Components の項を参照してください。

メモ

[44] Re: XBL is (mostly) W3C redundant, and CSS is wrong W3C layer for semantic behavior *markup* (Ian Hickson 著, 版) <https://lists.w3.org/Archives/Public/www-style/2002Dec/0221.html>

[4] Surfin' Safari ( 版) <https://web.archive.org/web/20030515080732/http://www.mozillazine.org/weblogs/hyatt/archives/2003_05.html>

[6] SVG's XML Binding Language (sXBL) <http://www.w3.org/TR/sXBL/>

汎用の XBL 2.0 が W3C SVG WG で準備中だそうです。。。

(名無しさん 2004-09-07 03:36:07 +00:00)

[7] XBL (Extensible Binding Language) 1.0 <http://www.mozilla.org/projects/xbl/xbl.html>

Mozilla.org の XBL 1.0 の解説。 (名無しさん)

[8] Gecko-moz-binding で縛った XBL は文書順ないし表示した状態の上から順番に処理されていくわけじゃなくて、何かの順番 (無作為なのか、というよりもむしろレンダリング中の何かの作業をした順なのか) で処理されていくっぽい。 ためしに連番を振らせてみるとわかる。

でももしかすると、実行開始は同時だけど並行処理の結果連番用の変数に access するところに到達するまでの順番が狂ってるのかもしれん。

ところでそうすると、安全を求めるならスクリプト内で lock とかせねばならぬということか? その辺どういう実装になってるんだ? (名無しさん [Firefox 0.9])

[9] Gecko ではフォーム制御子は一部 XBL で実装されています。ですから、 それに何かを追加しようとして

textarea {
  -moz-binding: url(foo#bar);
}

なんてしちゃうと、本来の機能を殺してしまいます。 例えば textarea の場合は矢印鍵による文章内の移動ができなくなってしまいます。

これを回避するためには、 binding 要素に extends 属性を指定して、 既存の XBL を継承するという形にしてやります。 extends 属性の値は XBL の URI参照か、 QName だそうで、 QName の場合はその QName の要素型の機能を継承するということらしいですが、 うまく動作しないという話もありますし、 実際動きませんでした。 (そもそも本質的に区別できない URI 参照と QName を同じ属性の値にするなというのもある。)

ということで、 extends にはブラウザの既定のスタイル・シートで指定された束縛の URI 参照 (resource: なんちゃら) を指定することになります。 ただし、これが過去から将来までのすべての Gecko 系ブラウザで機能するのかというと、 甚だ怪しい。しかも XBL でエラーが発生すると何も言わずに束縛された要素が非表示になってしまうから困ります。

ちなみに、 textarea の場合、 Firefox では元々の XBL 束縛先は resource://gre/res/builtin/platformHTMLBindings.xml#textAreas でした。 しかし古い Mozilla Suite (最近の Mozilla Suite は未調査) ではこれは存在せず、 resource:///res/builtin/platformHTMLBindings.xml#textAreas と指定すれば Mozilla Suite でも Firefox でも動くようです。

(名無しさん 2005-03-09 08:11:36 +00:00)

[10] なお、 >>2>>7 の XBL 1.0 は古い文書で、 今の Gecko の実装とは違っているところが色々あります。 XUL Planet の tutorial や reference を見た方が良いです。

10.1 - Introduction to XBL <http://xulplanet.com/tutorials/xultu/introxbl.html> (名無しさん 2005-03-09 08:15:50 +00:00)

[11] Index of /specs/xbl <http://www.hixie.ch/specs/xbl/> (名無しさん)

[12] >>8 2年位前までの Gecko は文書順だったような。 最近のはむしろ積極的に逆文書順にしているようにも見える。 (名無しさん [sage] 2005-04-17 03:05:04 +00:00)

[19] XBL - MDC <http://developer.mozilla.org/en/docs/XBL> (名無しさん)

[20] XTech 2005 Presentations:Extending Gecko with XBL and XTF - MDC <http://developer.mozilla.org/en/docs/XTech_2005_Presentations:Extending_Gecko_with_XBL_and_XTF> (名無しさん)

[21] XUL Tutorial:Introduction to XBL - MDC <http://developer.mozilla.org/en/docs/XUL_Tutorial:Introduction_to_XBL> (名無しさん)

[22] 実はこいつも対立規格だったりするのか??

XML Handlers <http://hades.mn.aptest.com/htmlwg/WD-xml-handlers-20030609/>

XHTML 2.0 - XHTML Handler Module <http://www.w3.org/TR/2005/WD-xhtml2-20050527/mod-handler.html>

(名無しさん [sage])

[23] >>22

XML Events 2 <http://hades.mn.aptest.com/htmlwg/xml-events/>

2004年12月

[28] XUL Apps > Tips > ホイールスクロールで普通のボックスの内容をスクロールする - outsider reflex (Piro(SHIMODA Hiroshi) 著, 版) <http://piro.sakura.ne.jp/xul/tips/x0030.html#path>

[29] DOMRelations ( 版) <https://alexvincent.us/DOMRelations/DOMRelations.xml>

[30] Burning Chrome » DOMRelations: A new design for the Document Object Model’s Node objects ( ( 版)) <https://alexvincent.us/blog/?p=715>

[31] IRC logs: freenode / #whatwg / 20130703 ( ( 版)) <http://krijnhoetmer.nl/irc-logs/whatwg/20130703>

[32] Re: Fallout of non-encapsulated shadow trees ( (Boris Zbarsky 著, 版)) <http://lists.w3.org/Archives/Public/public-webapps/2014JulSep/0033.html>

[24] Hixie's Natural Log: Why XBL? ( 版) <http://ln.hixie.ch/?start=1041369681&order=-1&count=1>

[25] XBL ( ()) <https://www-archive.mozilla.org/projects/xbl/>

[45] Are We XBL Still? () <https://bgrins.github.io/xbl-analysis/>