Version 3.2 - Sidst revideret den 9. maj 2006.
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) QualifiedId := ComposedToken '.' SimpleToken ExtensionId := SimpleToken | QualifiedId ExtensionPointId := SimpleToken | QualifiedId ExtensionPointReference := SimpleToken | QualifiedId
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"?> <?eclipse version="3.2"?> <!ELEMENT plugin (extension-point*, extension*)>
Elementet <plugin> definerer indholdet af manifestet. Det indeholder valgfri erklæringer af ethvert nyt udvidelsespunkt, der er introduceret af plugin'en, foruden konfiguration af funktionelle udvidelser (konfigureret til udvidelsespunkter, der er defineret af andre plugins eller introduceret af denne plugin).
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 ikke indeholder 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 udvidelsespunkter, også gyldig (f.eks. konfiguration af klasser, der leveres i andre plugins i udvidelsespunkter, der er erklæret i andre plugins).
Eclipses 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"?> <?eclipse version="3.2"?> <!ELEMENT fragment (extension-point*, extension*)>
Komponenterne <extension-point> og <extension> for et fragment tilføjes logisk til den plugin, der er vært.
Speciel behandling er tilføjet for at understøtte kompatibilitet bagud for ExtensionId og ExtensionPointId, der plejede at anvende punktummer ('.') før version 3.2. Afhængigt af den version, der er angivet i koden <?eclipse version?>:
Denne regel gælder kun for ExtensionId og ExtensionPointId, der indeholder punktummer.
Ældre versioner af plugin-manifestet findes her: