Plug-in-Manifest der Eclipse-Plattform

Version 2.1 - Letzte Überarbeitung am 17. März 2003

Die unten dargestellten Befehlsdefinitionen in der Manifestdatei verwenden unterschiedliche Benennungs-Token und Kennungen. Um eine Mehrdeutigkeit zu vermeiden, hier einige Erstellungsregeln [auf die im Text verwiesen wird]. Im Allgemeinen wird bei allen Kennungen die Groß-/Kleinschreibung beachtet.

SimpleToken := Zeichenfolge aus (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)

Der Rest dieses Abschnitts beschreibt die Struktur der Datei "plugin.xml" als Folge von DTD-Fragmenten. Die Datei plugin.dtd stellt die DTD-Definition in ihrer Gesamtheit dar.

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

Das Element <plugin> definiert den Hauptteil des Manifests. Es enthält optional Definitionen für die Plug-in-Laufzeit, Definitionen von anderen Plug-ins, die von diesem benötigt werden, Deklarationen von neuen Erweiterungspunkten, die durch das Plug-in eingeführt werden, sowie die Konfiguration von Funktionserweiterungen (die an Erweiterungspunkten konfiguriert werden, die entweder durch andere Plug-ins definiert sind oder durch dieses Plug-in eingeführt werden). Für das Element <plugin> werden die folgenden Attribute verwendet:

Die XML-DTD-Konstruktionsregel element* bedeutet, dass Null oder mehr Vorkommen des Elements vorhanden sind. Die Regel element? bedeutet, dass 0 oder 1 Vorkommen des Elements vorhanden sind und die (im Folgenden verwendete) Regel element+ bedeutet, dass eines oder mehrere Vorkommen des Elements vorhanden sind. Ausgehend von der oben beschriebenen Definition in <plugin> bedeutet dies beispielsweise, dass ein Plug-in, das nur eine Laufzeitdefinition und keine Erweiterungspunktdeklarationen oder Erweiterungskonfigurationen enthält, gültig ist (z. B. allgemeine Bibliotheken, von denen andere Plug-ins abhängig sind). Ähnlich ist auch ein Plug-in gültig, das nur Erweiterungskonfigurationen und keine Laufzeitdefinition oder Erweiterungspunkte für sich selbst enthält (z. B. Klassen konfiguriert, die in anderen Plug-ins für Erweiterungspunkte bereitgestellt werden, die in anderen Plug-ins definiert sind).

Der Abschnitt <requires> des Manifests deklariert alle Abhängigkeiten von anderen Plug-ins.

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

Jede Abhängigkeit wird durch ein Element <import> angegeben. Es enthält die folgenden Attribute:

Der Abschnitt <runtime> des Manifests enthält die Definition von einer oder mehreren Bibliotheken, die die Plug-in-Laufzeit bilden. Die Bibliotheken, auf die verwiesen wird, werden durch die Ausführungsmechanismen der Plattform (das Ladeprogramm für Plug-in-Klassen) verwendet, um den durch das Plug-in benötigten korrekten Code zu laden und auszuführen.

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

Das Element <runtime> hat keine Attribute.

Die Elemente <library> definieren zusammen die Plug-in-Laufzeit. Es muss mindestens ein Element <library> angegeben werden. Jedes Element <library> hat die folgenden Attribute:

Jedes Element <library> kann angeben, welcher Teil der Bibliothek exportiert werden soll. Die Exportregeln werden als Gruppe von Exportmasken angegeben. In der Standardeinstellung (keine Angabe von Exportregeln) wird die Bibliothek als privat betrachtet. Das Element <export> hat die folgenden Attribute:

Jede Bibliothek kann außerdem die Paketpräfixe angeben. Mit diesen Präfixen wird die Leistung beim Laden der Klassen für das Plug-in und/oder Fragment verbessert. Falls das Element <packages> nicht angegeben ist, werden die Erweiterunge für das Laden von Klassen in der Standardeinstellung nicht verwendet. Das Element <packages> hat die folgenden Attribute:

Weitere ausführliche Informationen zu Paketpräfixen erhalten Sie, wenn Sie hier klicken.

Die Architektur der Plattform basiert auf dem Konzept von konfigurierbaren Erweiterungspunkten. Die Plattform selbst gibt eine Reihe von Erweiterungspunkten vor, mit denen die Plattform und der Desktop erweitert werden können (beispielsweise durch das Hinzufügen von Menüaktionen oder das Ergänzen eines integrierten Editors). Neben den vordefinierten Erweiterungspunkten können alle bereitgestellten Plug-ins zusätzliche Erweiterungspunkte deklarieren. Durch das Deklarieren eines Erweiterungspunkts kündigt das Plug-in im Wesentlichen die Möglichkeit an, dass die Plug-in-Funktion mit extern bereitgestellten Erweiterungen konfiguriert werden kann. Das Plug-in für das Seitenerstellungsprogramm könnte beispielsweise einen Erweiterungspunkt für das Hinzufügen neuer DTC-Elemente (Design Time Controls - Steuerelemente für Entwicklungszeit) zur Palette seines Erstellungsprogramms hinzufügen. Dies bedeutet, dass das Seitenerstellungsprogramm eine Architektur für die Bedeutung eines DTC-Elements definiert und den Code implementiert hat, der nach DTC-Erweiterungen sucht, die an den Erweiterungspunkten konfiguriert wurden.

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

Das Element <extension-point> hat die folgenden Attribute:

Tatsächliche Erweiterungen werden an (vordefinierten oder in diesem Plug-in neu deklarierten) Erweiterungspunkten im Abschnitt <extension> konfiguriert. Die Konfigurationsdaten werden in einem gültigen XML-Format zwischen den Tags <extension> und </extension> angegeben. Die Plattform gibt das tatsächliche Format der Konfigurationsbefehle (das über das XML-Format hinausgeht) nicht an. Die Befehle werden durch den Hersteller des Plug-ins definiert, das den Erweiterungspunkt deklariert hat. Die Konfigurationsdaten werden von der Plattform nicht im eigentlichen Sinn interpretiert. Die Plattform übergibt lediglich die Konfigurationsdaten an die Plug-ins im Rahmen der Verarbeitung für den Erweiterungspunkt (wenn die Logik des Erweiterungspunkts alle konfigurierten Erweiterungen abfragt).

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

Das Element <extension> hat die folgenden Attribute:

Wichtiger Hinweis: Der Inhalt des Elements <extension> wird mit der Regel ANY deklariert. Dies bedeutet, dass im Abschnitt mit der Erweiterungskonfiguration (zwischen den Tags <extension> und </extension> tags) jedes beliebige gültige XML-Format angegeben werden kann.

Mit Fragmenten wird der Bereich eines Plug-ins vergrößert.  Ein Beispiel hierfür wäre die Einbindung von Daten wie beispielsweise Nachrichten oder Bezeichnungen in einer anderen Sprache.

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

Jedes Fragment muss mit einem bestimmten Plug-in verknüpft werden. Das dazugehörige Plug-in wird durch <plugin-id>, <plugin-version> und optional durch <match> identifiziert. Beachten Sie: Wenn diese Spezifizierung auf mehrere Plug-ins zutrifft, wird das passende Plug-in mit der höchsten Versionsnummer verwendet.

Die Komponenten <requires>, <runtime>, <extension-point> und <extension> eines Fragments werden logisch zum passenden Plug-in hinzugefügt.

Für das Element <fragment> werden die folgenden Attribute verwendet:

Copyright IBM Corporation und Andere 2000, 2003.