Pluginmanifest van het Eclipse-platform

Versie 3.0 - Laatst gewijzigd op 24 juni 2004

Dit is een gearchiveerde versie van het document. De actuele versie vindt u hier.

In de onderstaande manifestmarkupdefinities wordt gebruikgemaakt van verschillende naamgevingstokens en ID's. Om verwarring te voorkomen, zijn hiervoor een aantal productierichtlijnen [worden in de onderstaande tekst besproken]. In het algemeen zijn alle ID's hoofdlettergevoelig.

SimpleToken := een reeks van tekens uit ('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)

In het overige gedeelte van deze sectie wordt de structuur van het plugin.xml-bestand besproken als een reeks DTD-fragmenten. plugin.dtd van het bestand levert de gehele DTD-definitie.

<?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 
>

Het <plugin>-element definieert het corpus van het manifest. Optioneel bevat het de definities voor de pluginruntime, definities van andere plugins die hiervoor vereist zijn, declaraties van nieuwe extensiepunten die worden geïntroduceerd door de plugin en configuratie van functionele extensies (geconfigureerd in extensiepunten die zijn gedefinieerd door andere plugins of die zijn geïntroduceerd door deze plugin). De <plugin>kenmerken zijn:

De XML-DTD-constructieregel element* betekent dat nul of meer versies van het element voorkomen; element? betekent dat nul of een versie van het element voorkomt; en element+ (hieronder gebruikt) betekent dat een of meer versies van het element voorkomen. Op basis van bovenstaande <plugin>definitie, betekent dit bijvoorbeeld dat een plugin die alleen een runtimedefinitie bevat en geen extensiepuntdeclaraties of extensieconfiguraties, geldig is (bijvoorbeeld gemeenschappelijke bibliotheken waar andere plugins afhankelijk van zijn). Ook een plugin die alleen extensieconfiguraties bevat en geen runtime of extensiepunten van zichzelf bevat, is geldig (bijvoorbeeld configuratieklassen die zijn geleverd in andere plugins voor extensiepunten die zijn gedeclareerd in andere plugins).

De <vereisten>-sectie van het manifest declareert dependency's van andere 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"
>

Elke dependency wordt opgegeven met een <import>-element. Dit bevat de volgende kenmerken:

De <runtime>sectie van dit manifest bevat een definitie van een of meer bibliotheken waaruit de pluginruntime bestaat. De geraadpleegde bibliotheken worden gebruikt door de platformverwerkingsmechanismen (de pluginklassenlader) om de juiste code die vereist is voor de plugin te laden en verwerken.

<!ELEMENT runtime (library+)>
<!ELEMENT library (export*, packages?)>
<!ATTLIST library
  name               CDATA #REQUIRED 
  type               (code | resource) "code"
>
<!ELEMENT export EMPTY>
<!ATTLIST export
  name               CDATA #REQUIRED 
>
<!ELEMENT packages EMPTY>
<!ATTLIST packages
  prefixes           CDATA #REQUIRED
>

Het <runtime>-element heeft geen kenmerken.

De <library>-elementen definiëren samen de pluginruntime. Ten minste een <library> moet worden opgegeven. Elk <library>-element heeft een van de volgende kenmerken:

Door elk <library>-element kan worden bepaald welk gedeelte van de bibliotheek moet worden geëxporteerd. De exportregels worden opgegeven als set exportmaskers. Standaard (zonder dat exportregels zijn opgegeven) wordt de bibliotheek beschouwd als besloten. Elk exportmasker wordt opgegeven met behulp van het kenmerk name, dat een van de volgende waarden kan hebben:

Alleen Eclipse 2.1-plugins: Elke bibliotheek kan ook pakketvoorvoegsels opgeven. Deze worden gebruikt om de prestaties van het klassen laden uit te breiden voor de plugin en/of het fragment. Als het <packages>-element niet is opgegeven, worden standaard de uitbreidingen voor het klassen laden niet gebruikt. Het <packages>-element heeft het volgende kenmerk:

De platformarchitectuur is gebaseerd op extensiepunten die kunnen worden geconfigureerd. Het platform zelf definieert vooraf een set extensiepunten die de taak hebben het platform en werkblad uit te breiden (bijvoorbeeld menuacties toevoegen of een ingebedde editor leveren). Naast de vooraf gedefinieerde extensiepunten, kan elke geleverde plugin extra extensiepunten declareren. Door een extensiepunt te declareren, wordt in essentie door de plugin het vermogen aangekondigd om de pluginfunctie te configureren met extern geleverde extensies. Bijvoorbeeld de plugin Page Builder kan een extensiepunt declareren voor het toevoegen van nieuwe Design Time Controls (DTCs) aan het builderpalet. Dit betekent dat door de paginabuilder een architectuur is gedefinieerd voor de betekenis van DTC en de code is geïmplementeerd die zoekt naar DTC-extensies die zijn geconfigureerd in de extensiepunten.

<!ELEMENT extension-point EMPTY>  
<!ATTLIST extension-point 
  name               CDATA #REQUIRED 
  id                 CDATA #REQUIRED    
  schema             CDATA #IMPLIED 
>

Het <extensiepunt>-element heeft de volgende kenmerken:

De werkelijke extensies worden geconfigureerd in extensiepunten (vooraf gedefinieerd of nieuw in deze plugin gedeclareerd) in de sectie <extension>. De configuratiegegevens worden als geldige XML opgegeven tussen de tags <extension> en </extension>. Het platform geeft niet de effectieve vorm op van de configuratiemarkup (behalve dat vereist is dat de markup een geldige XML is). De markup wordt gedefinieerd door de leverancier van de plugin die het extensiepunt heeft gedeclareerd. Het platform voert niet de interpretatie van de configuratiemarkup uit. Het geeft de configuratiegegevens slechts door aan de plugin als onderdeel van de extensiepuntverwerking (op het moment dat de extensiepuntlogica alle geconfigureerde extensies aanvraagt).

<!ELEMENT extension ANY> 
<!ATTLIST extension 
  point              CDATA #REQUIRED 
  id                 CDATA #IMPLIED 
  name               CDATA #IMPLIED 
>

Het element <extension> heeft de volgende kenmerken:

Belangrijk: De inhoud van het element <extension> wordt met behulp van de regel ANY gedeclareerd. Dit betekent dat elke geldige XML kan worden opgegeven binnen de extensieconfiguratiesectie (tussen de tags <extension> en </extension>).

Fragmenten worden gebruikt om het bereik van een plugin te vergroten. Gegevens, bijvoorbeeld berichten of labels in een andere taal, kunnen worden opgenomen:

<?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"
>

Elk fragment moet worden gekoppeld aan een specifieke plugin. De bijbehorende plugin wordt geïdentificeerd door een <plugin-id>, een <plugin-version> en optioneel een <match>. Merk op dat wanneer meer dan één plugin aan deze specificatie voldoet, de plugin met het hoogste versienummer wordt gebruikt.

De fragmentcomponenten <requires>, <runtime>, <extension-point> en <extension> worden logisch toegevoegd aan de overeenkomende plugin.

<fragment>-kenmerken zijn: