Pluginmanifest van het Eclipse-platform

Versie 3.2 - laatst gewijzigd op 9 mei 2006

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)
QualifiedId := ComposedToken '.' SimpleToken
ExtensionId := SimpleToken | QualifiedId
ExtensionPointId := SimpleToken | QualifiedId
ExtensionPointReference := SimpleToken | QualifiedId

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"?> 
<?eclipse version="3.2"?>
<!ELEMENT plugin (extension-point*, extension*)>

Het element <plugin> definieert de inhoud van het manifest. Optioneel bevat het 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 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 de bovenstaande definitie van het element <plugin> betekent dit bijvoorbeeld dat een plugin zonder extensiepuntdeclaraties of extensieconfiguraties geldig is (bijvoorbeeld gemeenschappelijke bibliotheken waar andere plugins van afhankelijk zijn). Ook een plugin die alleen extensieconfiguraties bevat en geen extensiepunten van zichzelf bevat, is geldig (bijvoorbeeld configuratieklassen die zijn geleverd in andere plugins voor extensiepunten die zijn gedeclareerd in andere plugins).

De architectuur van Eclipse 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 <extension>-element 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

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"?> 
<?eclipse version="3.2"?>
<!ELEMENT fragment (extension-point*, extension*)>

De componenten <extension-point> en <extension> van een fragment worden logisch toegevoegd aan de plugin die als host fungeert.

Opmerking bij ExtensionId en ExtensionPointId

Er is speciale functionaliteit toegevoegd ter ondersteuning van compatibiliteit met eerdere versies voor ExtensionId en ExtensionPointId, die vóór versie 3.2 punten bevatten. Afhankelijk van de versie in de tag <?eclipse version?>:

Deze regel is alleen van toepassing wanneer ExtensionId of ExtensionPointId een of meer punten bevatten.


Oudere versies van het pluginmanifest vindt u hier: