Verze 3.2 - Poslední revize 9.května 2006
Níže uvedené markupové definice souboru manifest využívají pro pojmenování různé tokeny a identifikátory. K vyloučení dvojznačnosti jsou zde pro ně uvedena určitá produkční pravidla [v níže uvedeném textu jsou na ně odkazy]. Všechny identifikátory obecně rozlišují velká a malá písmena.
SimpleToken := posloupnost znaků z řady ('a-z','A-Z','0-9','_') ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken) QualifiedId := ComposedToken '.' SimpleToken ExtensionId := SimpleToken | QualifiedId ExtensionPointId := SimpleToken | QualifiedId ExtensionPointReference := SimpleToken | QualifiedId
Zbytek tohoto oddílu popisuje strukturu souboru plugin.xml jako sérii fragmentů DTD. Soubor plugin.dtd obsahuje úplnou definici DTD.
<?xml encoding="US-ASCII"?> <?eclipse version="3.2"?> <!ELEMENT plugin (extension-point*, extension*)>
Prvek <plugin> definuje tělo souboru manifest. Volitelně obsahuje deklarace všech nových bodů rozšíření zaváděných modulem plug-in, stejně jako konfigurace funkčních rozšíření (nakonfigurovaných do bodů rozšíření definovaných jinými moduly plug-in nebo zavedených tímto modulem plug-in).
Konstrukční pravidlo DTD pro XML element* znamená žádný nebo více výskytů prvku; element? znamená žádný nebo jeden výskyt prvku a element+ (použito níže) znamená jeden nebo více výskytů prvku. Na základě výše uvedené definice <plugin> to například znamená, že modul plug-in neobsahující žádné deklarace bodů rozšíření ani konfigurace rozšíření je platný (například společné knihovny, na nichž jsou závislé další moduly plug-in). Stejně tak modul plug-in obsahující pouze konfigurace rozšíření a žádné vlastní body rozšíření je také platný (například konfigurační třídy dodávané v jiných modulech plug-in do bodů rozšíření deklarované v jiných modulech plug-in).
Architektura platformy Eclipse je založena na základě principu konfigurovatelných bodů rozšíření. Sama platforma předem definuje sadu bodů rozšíření, jež plní úlohu rozšíření platformy a pracovní plochu (například přidání akcí nabídek, doplnění zabudovaného editoru). Kromě předdefinovaných bodů rozšíření může každý dodaný modul plug-in deklarovat přídavné body rozšíření. Deklarací bodu rozšíření modul plug-in v podstatě inzeruje schopnost zkonfigurovat svou funkci pomocí externě dodaných rozšíření. Například modul plug-in Page Builder může deklarovat bod rozšíření pro přidávání nových obslužných prvků DTC (Design Time Control) do své palety tvůrců. To znamená, že Page Builder definoval architekturu pro to, co představuje DTC, a implementoval programový kód vyhledávající rozšíření DTC, jež byly zkonfigurovány do bodů rozšíření.
<!ELEMENT extension-point EMPTY> <!ATTLIST extension-point name CDATA #REQUIRED id CDATA #REQUIRED schema CDATA #IMPLIED >
Prvek <extension-point> má následující atributy:
Vlastní rozšíření jsou zkonfigurována do bodů rozšíření (předdefinovaných nebo nově deklarovaných v tomto modulu plug-in) v oddílu <extension>. Konfigurační informace jsou uvedeny jako dobře zformátovaný kód XML obsažený mezi značkami <extension> a </extension>. Platforma neuvádí vlastní tvar konfiguračního markupu (kromě požadavku na dobře zformátovaný kód XML). Markup je definován dodavatelem modulu plug-in, který deklaroval bod rozšíření. Platforma ve skutečnosti neinterpretuje konfigurační markup. Ta pouze předává konfigurační informace modulu plug-in jako součást zpracování bodu rozšíření (v té době se logika bodu rozšíření dotazuje na všechna zkonfigurovaná rozšíření).
<!ELEMENT extension ANY> <!ATTLIST extension point CDATA #REQUIRED id CDATA #IMPLIED name CDATA #IMPLIED >
Prvek <extension> má následující atributy:
Důležité: Obsah prvku <extension> je deklarován pomocí pravidla ANY.To znamená, že jakýkoli dobře zformátovaný kód XML může být zadán v rámci oddílu konfigurace rozšíření (mezi značkami <extension> a </extension>).
Fragmenty se používají ke zvětšení rozsahu platnosti modulu plug-in. Příkladem může být zahrnutí dat, jako jsou zprávy nebo štítky v jiném jazyce.
<?xml encoding="US-ASCII"?> <?eclipse version="3.2"?> <!ELEMENT fragment (extension-point*, extension*)>
Komponenty <extension-point> a <extension> daného fragmentu budou logicky přidány do hostitelského modulu plug-in.
Bylo přidáno speciální zpracování pro podporu zpětné kompatibility pro ExtensionId a ExtensionPointId, které obsahovaly tečky ('.') před verzí 3.2. V závislosti na verzi určené ve značce <?eclipse version?>:
Toto pravidlo se vztahuje pouze na ExtensionId a ExtensionPointId obsahující tečky ('.').
Zde je možno nalézt starší verze manifestu modulu plug-in: