バージョン 3.2 - 最終改訂 2006 年 5 月 9 日
以下のマニフェスト・マークアップ定義は、さまざまなネーミング・トークンおよび ID を使用します。次の規則は、あいまいさをなくすための運用規則です (以下のテキストで参照される部分)。一般に、ID はすべて大/小文字が区別されます。
SimpleToken := 文字 ('a-z'、'A-Z'、'0-9'、'_') のシーケンス ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken) QualifiedId := ComposedToken '.' SimpleToken ExtensionId := SimpleToken | QualifiedId ExtensionPointId := SimpleToken | QualifiedId ExtensionPointReference := SimpleToken | QualifiedId
このセクションではこれ以降、一連の DTD フラグメントとしての plugin.xml ファイル構造を説明します。ファイル plugin.dtd は、その全体の DTD 定義を表しています。
<?xml encoding="US-ASCII"?> <?eclipse version="3.2"?> <!ELEMENT plugin (extension-point*, extension*)>
<plugin> 要素はマニフェストの本体を定義します。この定義にはオプションで、(他のプラグインで定義された拡張ポイント、またはこのプラグインによって導入された拡張ポイントに構成された) 拡張機能の構成に加えて、プラグインによって導入される新しい拡張ポイントの宣言が含まれます。
XML DTD 構成ルール element* は、要素 element の 0 回以上の出現を意味します。 element? は、要素 element の 0 回または 1 回の出現を意味します。 element+ (以下で使用) は、要素 element の 1 回以上の出現を意味します。上記の <plugin> 定義に基づいて、例えばこれは、拡張ポイント宣言、または拡張構成を持たないプラグインが有効であることを意味しています (例えば、他のプラグインが依存する共通ライブラリー)。同様に、拡張構成のみを持ち、独自の拡張ポイントを持たないプラグインも有効です (例えば、他のプラグインで宣言された拡張ポイントに、他のプラグインに送信されたクラスを構成します)。
Eclipse アーキテクチャーは構成可能な拡張ポイントの概念に基づいています。プラットフォーム自体は、プラットフォームおよびデスクトップを拡張するタスクを行う一連の拡張ポイントを事前定義します (例えば、メニュー・アクションの追加、組み込みエディターの追加)。事前定義された拡張ポイントに加えて、提供されているそれぞれのプラグインは、追加の拡張ポイントを宣言します。拡張ポイントを宣言することによってプラグインは、プラグイン機能を外部的に提供された拡張機能を使って構成する能力を公開しています。例えば、ページ・ビルダー・プラグインは、新規 Design Time Controls (DTC) をそのビルダー・パレットに追加するための拡張ポイントを宣言できます。これは、ページ・ビルダーが、DTC にする対象に対するアーキテクチャーを定義し、拡張ポイントの中に構成された DTC 拡張機能を検索するコードをインプリメントしていることを意味しています。
<!ELEMENT extension-point EMPTY> <!ATTLIST extension-point name CDATA #REQUIRED id CDATA #REQUIRED schema CDATA #IMPLIED >
<extension-point> 要素には以下の属性があります。
実際の拡張機能は、<extension> 文節の拡張ポイント (事前定義済み、またはこのプラグインで新規に宣言済み) の中に構成されています。構成情報は、<extension> および </extension> のタグ間で形式に従った XML として指定されます。プラットフォームは、(XML を形式に従わせるという要件以外は) 構成マークアップの実際のフォームを指定しません。マークアップは、拡張ポイントを宣言したプラグインのサプライヤーによって定義されます。プラットフォームは、実際には構成マークアップを解釈しません。プラットフォームは単に、(拡張ポイント・ロジックがその構成済み拡張機能のすべてを照会するときに) 構成情報を拡張ポイント処理の一部としてプラグインに渡すだけです。
<!ELEMENT extension ANY> <!ATTLIST extension point CDATA #REQUIRED id CDATA #IMPLIED name CDATA #IMPLIED >
<extension> 要素には以下の属性があります。
重要: <extension> 要素の内容は、ANY 規則を使用して宣言されます。これは、形式に従った XML はすべて、拡張構成セクション (<extension> および </extension> タグ間) に指定可能であるということを意味しています。
フラグメントは、プラグインの有効範囲を広げるために使用されます。次の例では、他の言語のメッセージまたはラベルなどのデータが取り込まれます。
<?xml encoding="US-ASCII"?> <?eclipse version="3.2"?> <!ELEMENT fragment (extension-point*, extension*)>
フラグメントのコンポーネント <extension-point> および <extension> は、ホスティング・プラグインに論理的に追加されます。
3.2 より前のバージョンでドット ('.') を含めるために使用されていた ExtensionId および ExtensionPointId に対する後方互換性をサポートするために、特別な処理が追加されました。 <?eclipse version?> タグで指定したバージョンによって、以下のようになります。
この規則は、ドット文字 ('.') を含む ExtensionId および ExtensionPointId にのみ適用されます。
旧バージョンのプラグイン・マニフェストは、以下の場所にあります。