Plugin-manifest for Eclipse-plattformen

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

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.

Merknad om ExtensionId og ExtensionPointId

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: