Version 3.0 - Sidst ændret 24. juni, 2004
Dette er en arkiveret version af dokumentet. Den aktuelle version findes her.
Definitionen af manifestkoden nedenfor gør brug af forskellige navngivningselementer og id'er. For at fjerne mulighederne for fejl følger her nogle produktionsregler for disse [der henvises til disse i teksten nedenfor]. Generelt respekteres store/små bogstaver i id'er.
SimpleToken := række af tegn fra ('a-z','A-Z','0-9','_') ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken) JavaClassName := ComposedToken PlugInId := ComposedToken PlugInPrereq := PlugInId | 'export' PlugInId ExtensionId := SimpleToken ExtensionPointId := SimpleToken ExtensionPointReference := ExtensionPointID | (PlugInId '.' ExtensionPointId)
Resten af dette afsnit beskriver plugin.xml-filstrukturen som en række DTD-fragmenter. Filen plugin.dtd viser DTD-definitionen i sin helhed.
<?xml encoding="US-ASCII"?> <!ELEMENT plugin (requires?, runtime?, extension-point*, extension*)> <!ATTLIST plugin name CDATA #REQUIRED id CDATA #REQUIRED version CDATA #REQUIRED provider-name CDATA #IMPLIED class CDATA #IMPLIED >
Elementet <plugin> definerer indholdet af manifestet. Det indeholder valgfri definitioner af den pågældende plugin-runtime, definitioner på andre plugins, der kræves af denne, erklæringer til evt. nye udvidelsespunkter, der er introduceres af denne plugin, foruden konfiguration af funktionelle udvidelser (konfigureret til udvidelsespunkter, der er defineret af andre plugins eller introduceret af denne plugin). Der er følgende <plugin>-attributter:
XML DTD-konstruktionsreglen element* betyder nul eller flere forekomster af elementet. element? betyder nul eller flere forekomster af elementet, og element+ (anvendes nedenfor) betyder en flere forekomster af elementet. Baseret på <plugin>-definitionen ovenfor betyder dette, at f.eks. en plugin, der kun indeholder en runtime-definition og ingen udvidelsespunkterklæringer eller udvidelseskonfigurationer, er gyldig (f.eks. fælles biblioteker, som andre plugins er afhængige af). På samme måde er en plugin, der kun indeholder udvidelseskonfigurationer og ingen egne runtime- eller udvidelsespunkter, også gyldig (f.eks. konfiguration af klasser, der leveres i andre plugins i udvidelsespunkter, der er erklæret i andre plugins).
Afsnittet <requires> i manifestet erklærer evt. afhængigheder til andre plugins.
<!ELEMENT requires (import+)> <!ELEMENT import EMPTY> <!ATTLIST import plugin CDATA #REQUIRED version CDATA #IMPLIED match (perfect | equivalent | compatible | greaterOrEqual) "compatible" export (true | false) "false" optional (true | false) "false" >
De enkelte afhængigheder angives med et <import>-element. Det indeholder følgende attributter:
Afsnittet <runtime> i manifestet indeholder en definition på et eller flere biblioteker, der udgør den pågældende plugin-runtime. De biblioteker, der henvises til, anvendes af platformsudførelsesmekanismer (plugin-klasseindlæsningen) til at indlæse og udføre den korrekte kode, der kræves af plugin'en.
<!ELEMENT runtime (library+)> <!ELEMENT library (export*, packages?)> <!ATTLIST library name CDATA #REQUIRED type (code | resource) "kode" > <!ELEMENT export EMPTY> <!ATTLIST export name CDATA #REQUIRED > <!ELEMENT packages EMPTY> <!ATTLIST packages prefixes CDATA #REQUIRED >
Elementet <runtime> har ingen attributter.
<library>-elementerne definerer samlet den pågældende plugin-runtime. Der skal angives mindst ét <library>. De enkelte <library>-elementer indeholder følgende attributter:
De enkelte <library>-elementer kan angive, hvilken del af biblioteket der skal eksporteres. Eksportreglerne angives som et sæt eksportmasker. Som standard (der er ikke angivet eksportregler) betragtes biblioteket som værende privat. De enkelte eksportmasker angives med attributten name, der kan have følgende værdier:
Kun Eclipse 2.1-plugins: De enkelte biblioteker kan også angive pakkepræfikser. Disse anvendes til at forbedre ydeevnen i forbindelse med klasseindlæsning for plugin'en og/eller fragmentet. Hvis elementet <packages> ikke angives, bliver forbedringerne til klasseindlæsningen som standard ikke anvendt. Elementet <packages> har følgende attribut:
Platformens arkitektur er baseret på ideen om udvidelsespunkter, der kan konfigureres. Selve platformen foruddefinerer et sæt udvidelsespunkter, der omfatter en udvidelse platformen og desktoppen (f.eks. ved at tilføje menupunkter, anvende den indbyggede editor). Ud over de foruddefinerede udvidelsespunkter kan de enkelte plugins erklære yderligere udvidelsespunkter. Ved at erklære et udvidelsespunkt demonstrerer plugin'en i virkeligheden muligheden for at konfigurere plugin-funktionen med eksternt leverede udvidelser. F.eks. kan Page Builder-plugin'en erklære et udvidelsespunkt til tilføjelse af nye DTD'er (Design Time Controls) til den byggepalet. Det betyder, at Page Builder har defineret en arkitektur for, hvad det betyder at være en DTC, og den har implementeret den kode, der søger efter DTC-udvidelser, der er blevet konfigureret til udvidelsespunkter.
<!ELEMENT extension-point EMPTY> <!ATTLIST extension-point name CDATA #REQUIRED id CDATA #REQUIRED schema CDATA #IMPLIED >
Elementet <extension-point> har følgende attributter:
De faktiske udvidelser konfigureres til udvidelsespunkter (foruddefinerede eller erklærerede for nylig i denne plugin) i afsnittet <extension>. Konfigurationsoplysningerne er angivet som en veludformet XML, der er indeholdt mellem koderne <extension> og </extension>. Platformen angiver ikke det egentlige format på konfigurationskodningen (andet end at det skal veludformet XML). Kodningen defineres af plugin-leverandøren, som erklærede udvidelsespunktet. Platformen fortolker ikke konfigurationskodningen. Den overfører ganske enkelt konfigurationsoplysningerne til plugin'en som en del af behandlingen af udvidelsespunktet (på det tidspunkt, hvor udvidelsespunktet logisk forespørger om alle dets konfigurerede udvidelser).
<!ELEMENT extension ANY> <!ATTLIST extension point CDATA #REQUIRED id CDATA #IMPLIED name CDATA #IMPLIED >
Elementet <extension> har følgende attributter:
Vigtigt: Indholdet af elementet <extension> erklæres med reglen ANY. Det betyder, at en veludformet XML kan angives i afsnittet til udvidelseskonfiguration (mellem koderne <extension> og </extension>).
Fragmenter anvendes til at øge omfanget af en plugin. Et eksempel er anvendelse af data, f.eks. meddelelser eller etiketter, på et andet sprog.
<?xml encoding="US-ASCII"?> <!ELEMENT fragment (requires?, runtime?, extension-point*, extension*)> <!ATTLIST fragment name CDATA #REQUIRED id CDATA #REQUIRED version CDATA #REQUIRED provider-name CDATA #IMPLIED plugin-id CDATA #REQUIRED plugin-version CDATA #REQUIRED match (perfect | equivalent | compatible | greaterOrEqual) "compatible" >
Alle fragmenter skal være knyttet til en specifik plugin. Den tilknyttede plugin identificeres med <plugin-id>, <plugin-version> og evt. <match>. Bemærk, at hvis denne specifikation matcher mere end én plugin, anvendes den plugin med det højeste versionsnummer.
Komponenterne <requires>, <runtime>, <extension-point> og <extension> til et fragment bliver logisk tilføjet til den plugin, der passer.
Der er følgende <fragment>-attributter: