Versjon 3.2 - Sist endret 9. mai 2006
Definisjonene for manifestkodetypene nedenfor bruker mange forskjellige navngivningssymboler og IDer. Her er noen produksjonsregler [referert i teksten nedenfor] for å unngå tvetydighet. Generelt skiller alle IDer mellom store og små bokstaver.
SimpleToken := tegnsekvens ('a-z','A-Z','0-9','_') ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken) QualifiedId := ComposedToken '.' SimpleToken ExtensionId := SimpleToken | QualifiedId ExtensionPointId := SimpleToken | QualifiedId ExtensionPointReference := SimpleToken | QualifiedId
Resten av denne delen beskriver plugin.xml-filstrukturen som er rekke DTD-fragmenter. Filen plugin.dtd presenterer DTD-definisjonen i sin helhet.
<?xml encoding="US-ASCII"?> <?eclipse version="3.2"?> <!ELEMENT plugin (extension-point*, extension*)>
<plugin>-elementet definerer hoveddelen i manifestet. Det kan inneholde deklarasjoner av eventuelle nye utvidelsespunkter som blir introdusert av plugin-modulen, i tillegg til konfigurasjon av funksjonsutvidelser (konfigurert i utvidelsespunkter definert av andre plugin-moduler, eller introdusert av denne plugin-modulen).
XML DTD-konstruksjonsregelen element* betyr ingen eller flere forekomster av elementet, element? betyr ingen eller en forekomst av elementet og element+ (brukt nedenfor) betyr en eller flere forekomster av elementet. Basert på <plugin>-definisjonen over betyr dette for eksempel at plugin-modulen ikke inneholder noen gyldige utvidelsespunktdeklarasjoner eller utvidelseskonfigurasjoner (for eksempel felles biblioteker som andre plugin-moduler er avhengige av). På samme måte er en plugin-modul som bare inneholder utvidelseskonfigurasjoner og ikke egne utvidelsespunkter, også gyldig (for eksempel konfigurering av klasser avledet fra andre plugin-moduler i utvidelsespunkter deklarert i andre plugin-moduler).
Eclipse-arkitekturen er basert på forestillingen om utvidelsespunkter som kan konfigureres. Selve plattformen forhåndsdefinerer et sett med utvidelsespunkter som dekker oppgaven med å utvide plattformen og skrivebordet (for eksempel legge til menyhandlinger, legge til innebygd redigeringsprogram). I tillegg til de forhåndsdefinerte utvidelsespunktene kan hver plugin-modul som leveres, deklarere andre utvidelsespunkter. Ved å deklarere et utvidelsespunkt annonserer utvidelsespunktet i virkeligheten muligheten til å konfigurere plugin-funksjonen med utvidelsespunkter levert eksternt. For eksempel kan plugin-modulen Page Builder deklarere et utvidelsespunkt for å legge til nye DTCer (Design Time Controls) i byggerpaletten. Dette betyr at Page Builder har definert en arkitektur for hva det betyr å være en DTC, og har implementert koden som ser etter DTC-utvidelser som er konfigurert i utvidelsespunktene.
<!ELEMENT extension-point EMPTY> <!ATTLIST extension-point name CDATA #REQUIRED id CDATA #REQUIRED schema CDATA #IMPLIED >
Elementet <extension-point> har følgende attributter:
Faktiske utvidelser er konfigurert i utvidelsespunkter (forhåndsdefinert, eller nylig deklarert i denne plugin-modulen) i <extension>-delen. Konfigurasjonsinformasjonen er oppgitt som velformet XML mellom kodene <extension> og </extension>. Denne plattformen oppgir ikke den faktiske formen på konfigurasjonskodetypen (annet enn at det kreves at den er velformet XML). Kodetypen er definert av leverandøren av plugin-modulen som deklarerte utvidelsespunktet. Plattformen tolker ikke konfigurasjonskodetypen. Den bare sender konfigurasjonsinformasjonen til plugin-modulen som del av behandlingen av utvidelsespunktet (samtidig som utvidelsespunktlogikken utfører spørringer i alle de konfigurerte utvidelsene).
<!ELEMENT extension ANY> <!ATTLIST extension point CDATA #REQUIRED id CDATA #IMPLIED name CDATA #IMPLIED >
Elementet <extension> har følgende attributter:
Viktig: Innholdet i <extension>-elementet er deklarert med ANY-regelen. Det betyr at all velformet XML kan oppgis i delen for utvidelseskonfigurasjon (mellom kodene <extension> og </extension>).
Fragmenter blir brukt til å øke omfanget av en plugin-modul. Man kan for eksempel ta med data som meldinger og etiketter i andre språk.
<?xml encoding="US-ASCII"?> <?eclipse version="3.2"?> <!ELEMENT fragment (extension-point*, extension*)>
Komponentene <extension-point> og <extension> i et fragment blir logisk lagt til den verts-plugin-modulen.
Spesiell behandling er lagt til for å støtte tilbakekompatibilitet for ExtensionId and ExtensionPointId, som pleide å inneholde punktum ('.') før versjon 3.2. Avhengig av spesifisert versjon i koden <?eclipse version?>
Denne regelen gjelder bare for ExtensionId og ExtensionPointId som inneholder punktum ('.').
Eldre versjoner av plugin-modulens manifest finnes her: