この記事は XUL と、その親の言語である XML の関係について述べています。
XULの文法と規則
XULは標準に則ったインターフェース定義言語です。 XUL はレイアウトの厳密な操作と、柔軟で簡単な利用方法とのバランスをとろうと試みられており、この点で偉大な仕事を行っています。XUL既製のウィジェット(メニューバー、スクロールバー、プログレスメーターなど) と HTML4, DOM1/2, CSS などのような標準を組み合わせて使用すれば、いくつもの異なった特徴、ツール、方法論を用いて、あなたの想い描くインターフェースを設計することができます。 たとえば、特別の振舞いを追加するために JavaScript のトリックを使うような場合には、多くの時間を費します。 しかし、XULの柔軟性をトレードオフする必要性とは、暗黙の機能性の欠如 ―― XULがわたしのやりたいことを解釈する直観の欠如であるとあなたは言うかもしれません。 インターフェースの設計者としてのあなたへ柔軟性を提供するためには、XUL は 実装者としてのあなたには柔軟性の無くなることを申し出ます。 あなたは自分の構文と、そして実際には以下の 4つの基本的な XUL のルールについてかなり注意深くならなければなりません。
- 全てのイベントと属性は小文字で書かれなければなりません。
- 全ての文字列はダブルクォートで括られねばなりません。
- 全てのXULウィジェットは閉じタグを使って整形式(well-formed)にしなければなりません
- 全ての属性は値を持たなければなりません。
XUL は XML から作られる
XULを使うために XML の全てを知る必要はありませんが、特化したマークアップ言語である XULについて、その系譜の感覚をつかみたくこの記事を読んでみるかもしれません。XUL は XML をベースにしていますので、上に述べた構文やルールの多くを、後で分かるでしょうが、この「メタ言語」から継承しています。あなたが XML について既に親しんでいるものがあれば、それは XUL で開発するスピードを向上するのを助けてくれるでしょう。
XMLは他の言語を作るための言語です。XMLはデータの構造を記述するための言語です。XMLは、それが意味的に挑戦するものである、いとこに当たる HTML が行うように、そのデータの表現されるやり方について記述することはしませんし、またデータ自身についても多くは語りません。
ある人が XMLを使っていると言うとき、彼らの意味することはおそらく、彼らの興味のある何がしかのデータをマークアップする構文を定義するのに XML を用いているということです。たくさんの人たちが XML から新しい言語を作りました。MathML や Chemical Markup Language (CML) はよく知られ広く利用されている言語のふたつですが、他に何百もあります。情報技術者は彼らのアプリケーション用の特別な言語を作ります。彼らはいつでもデータの構造を表現するためにそれぞれ特定の方法を必要とします。
我々が言語と言うとき、項目と語彙そしてそれらの項目の関係の集合、またはある人々が文法と言うものを開発者が作ること意味します。 それから、彼らはそれらの著者が作ったものを記述するのに言語を使用したと主張します。 それらの著者は人間かもしれませんし機械かもしれませんが、読者が読んだデータがどんなものなのか理解したならば、彼らはその新たな言語を用いたはずです。 言語とはそれがそう思われているよりずっと単純です ―― 実際に、多くの XMLの入門書や参考資料があなたに信じ込ませるものよりはずっと簡単です。 実際に、新たな XMLベースの言語を、"MemoML" とでも呼ぶことにして、作ってみましょう。これを構成するのは 4つの項目です: memo, to, from, body ―― これらは全て、ほとんどの XML サークルで表現される構文に互いに適合します:
<!ELEMENT memo (from, to, body)>
XMLを読んだり使ったりするのに慣れている開発者にとって、この定義は、ルート要素"memo" は "from"要素、その次の "to"要素、その次の"body"要素から構成される、ということを示しています。そういうことです。 我々の新しい言語には 4つの単語しかありませんが、実際のかなり単純なメモの構造を記述するのには十分です。 我々の言語は、人間のことばで記述されたメモの内容を記述するのには不十分であることに注意してください。しかし、一般的にマークアップ言語はそういうことのためのものではありません。 MemoMLを用いた実際のメモは次のように表されるでしょう:
<memo> <from>Ian Oeschger</from> <to>Steve Rudman</to> <body>手引き書のドラフトができあがったよ!</body> </memo>
memo要素 ―― 我々の簡潔な定義でのルート要素、または上の宣言 ―― が他の 3つの要素をどのように囲っているのか注意してください。MemoMLの定義では、memo要素は from, to, body 要素をこの順に含むものとして定義されました。ですので、この例は我々の DTD に関して妥当な(valid)ものです…MemoMLで書かれたメモです。やった! 君はマークアップ言語プログラマです! 君はこの新しいマークアップ言語を使って無限のメモを作ることができます。さらに、その全ては一貫した構造をもつことが予見できます。この統一性は人間と機械の両者が MemoML を読み、MemoMLでマークアップされたメモを「理解」し、それを扱って何かすることを可能にします。
これが XML とは何かということです: 手元の仕事に合った言語を定義するための、メタ言語です。その言語は、人間と機械の両者にとって「情報」としてアクセスできるようにするやり方で構造化されています。HTML ―― 我々の MemoML のような派生言語(付録のノートでマークアップ言語の系譜についての情報を見てください) ―― はハイパーテキストドキュメントとそれらの基本的な関係を表現する目的で作成されました。人間は HTMLドキュメントを書くときにしばしば生の HTML を読みますが、通常の HTML エディタが WYSIWYG の HTML エディタに置き換えられることで、変わりつつあります。それゆえ HTMLエディタは、Webブラウザがドキュメントを表現形式に整形するためにマークアップを解釈するソフトである、HTML構文解析器の作業を行います。
HTML や MemoML と同じく、XUL は XMLベースの言語です。HTMLではエレメントはテキストの見え方を記述するために使われますが、XULではインターフェースの要素と互いに置くためのルールを定義するのに使用されます。併せて、XULエレメントはリッチなインターフェースを構築するのに必要とする部品の全てを提供します。これらは HTML タグと同じくらい簡単ですが、ビジュアルなGUIビルダと同じくらいに強力なツールキットです。インターフェースを組み立てる場合には、これらの XUL エレメントはウィジェットとして、さらに時には XPToolkit として、参照されます。
インターフェース定義のタグセットとしては、XUL はそのタグの記述するウィジェットに相当します。XULとは、インターフェースウィジェットとそれらの関係、また文法などを定義するためのタグセット、そして画像、HTML要素、さらに他の標準ベースの技術を使うために組み込まれた柔軟性、で全てです。しかし、これがあなたのつくるものがどんなインターフェースであろうとも、それに必要とされるものの全てです。
XULは時宜を得ています。かなり最近になって、XULが作りだされたようなモードの外側にある標準は、XULの提供するような種類の開発をサポートするために本当に十分に強力かつ柔軟なレベルまで成熟してきました。 下の図が示すように、XUL は異なった標準の混合物です。CSS はスタイル、または「スキニング」のために、DOMはオブジェクトモデルとスクリプト的なアクセスのために、JSはリンクと振舞いのために、RDFはリソースのために、XMLは構造のために、そしてHTMLは内容とその他の残りのもののために組み合わされます。 この観点からすると、XUL はユーザーインターフェース言語というよりも、開発プラットフォームやフレームワークに似ています。特に、これが XPCOM のような関連するクロスプラットフォーム技術と共に利用される場合は、それはまさに Mozilla となります。
Gecko は XUL を読んでインターフェースを創造する
私たちが特に作成した memo は、その構造を何らかの方法で利用するアプリケーションが無いならばテキストにすぎないように、XULウィジェットもその構造を解釈し、実際のウィジェットとして XUL をレンダリングするソフトウェアがなければ単なるマークアップされたテキストです。全ての XML はその実行を終えるように受けた時に、パーザかある種のエンジンを必要とします。
Geckoは軽く、標準対応し、クロスプラットフォームであるように設計されています。ですので、ウィジェットが Gecko上でどのようにレンダリングされるかを定義するよりも、最も基本的なウィジェットの動作や表現を除いては CSS に依存します。XULで定義された構造と、スタイルシートで定義されるスタイル、そして他の標準のコンビネーションが、Gecko によってインターフェースへとレンダリングされます。
この重大な移行は、シェフによってというよりも材料によって為されます。 このアレンジは、真にクロスプラットフォームな Webアプリケーション、アプリケーションサービス、webアプライアンス、組み込みシステム、さらに同様のもの全てに新たな可能性を作り出します。本当に優れた技術の全てと同じように、XULとそのクロスプラットフォームもの(XP)の親類たちは、それらの作成者の空想の中でなく、既に多くのやり方で使用されていて、コントロールできない幸運の増大に入っています。
Author: Ian T. Oeschger
Other Documents: XML in Mozilla
Original Document Information
- Author(s): Ian T. Oeschger
- Last Updated Date: November 13, 2001
- Copyright Information: Copyright (C) Ian T. Oeschger