Insticksprogramsmanifest för Eclipse-plattformen

Version 3.0 - Senast uppdaterad 24 juni 2004

Det här är en arkiverad version av dokumentet. Den aktuella versionen finns här.

I märkordsdefinitionerna för manifest nedan används olika namntoken och -ID:n. För att undvika tvetydigheter finns det några konstruktionsregler för dem [refererade i texten nedan]. I allmänhet är alla ID:n skiftlägeskänsliga.

SimpleToken := sequence of characters from ('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)

I återstoden av avsnittet beskrivs filstrukturen för plugin.xml som en serie DTD-fragment. I filen plugin.dtd finns hela DTD-definition.

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

<plugin>-elementet definierar innehållet i manifestet. Det kan innehålla definitioner för körning av insticksprogrammet, definitioner av andra insticksprogram som krävs av det första, deklarationer för eventuella nya utökningspunkter som introduceras av insticksprogrammet samt konfiguration av funktionsutökningar (konfigurerade till utökningspunkter som definieras av andra insticksprogram eller introduceras av insticksprogrammet). <plugin>-attributen är de följande:

XML-DTD-konstruktionsregeln element* innebär noll eller flera förekomster av elementet, element? innebär noll eller en förekomst av elementet och element+ (används nedan) innebär en eller flera förekomster av elementet. Baserat på <plugin>-definitionen ovan innebär det här, till exempel, att ett insticksprogram som endast innehåller en Runtime-definition och inga utökningspunktsdeklarationer eller utökningskonfigurationer är giltigt(till exempel gemensamma bibliotek som andra insticksprogram är beroende av). På liknande sätt är ett insticksprogram som endast innehåller utökningskonfigurationer och inga egna Runtime- eller utökningspunkter också giltigt (till exempel konfiguration av klasser som levereras i andra insticksprogram till utökningspunkter som deklareras i andra insticksprogram).

I <requires>-avsnittet i manifestet deklareras eventuella beroenden av andra insticksprogram.

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

Varje beroende anges med ett <import>-element. Det innehåller följande attribut:

<runtime>-avsnittet i manifestet innehåller en definition av ett eller flera bibliotek som insticksprogramskörningen består av. De refererade biblioteken används av plattformskörningsmekanismerna (klassinläsaren för insticksprogrammet) till att läsa in och köra den kod som krävs för insticksprogrammet.

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

<runtime>-elementet har inga attribut.

<library>-elementen definierar tillsammans insticksprogramskörningen. Minst ett <library> (bibliotek) måste anges. Varje <library>-element har följande attribut:

Varje <library>-element kan ange vilken del av bibliotek som ska exporteras. Exportreglerna anges som en uppsättning exportmaskar. Som standard (inga exportregler angivna) anses biblioteket vara privat. Varje exportmask anges med hjälp av name-attributet som kan ha följande värden:

Endast Eclipse 2.1-insticksprogram: Varje bibliotek kan även ange prefix för paket. De används till att förbättra klassinläsningsprestanda för insticksprogrammet eller fragmentet. Om <packages>-elementet inte anges används som standard inte förbättringarna av klassinläsning. <packages>-elementet har följande attribut:

Arkitekturen för plattformen baseras på idén om konfigurationsbara utökningspunkter. I själva plattformen fördefinieras en uppsättning utökningspunkter som används för uppgiften med att utöka plattformen och skrivbordet (till exempel tillägg av menyåtgärder eller inbäddade redigerare). Varje ingående insticksprogram kan deklarera ytterligare utökningspunkter, förutom de fördefinierade utökningspunkterna. Genom att deklarera en utökningspunkt anger insticksprogrammet i själva verket att det går att konfigurera insticksprogramsfunktionen med utökningar som tillhandahålls externt. Till exempel kan insticksprogrammet för sidkonstruktion deklarera en utökningspunkt för tillägg av nya DTC:er (Design Time Control) i byggpaletten. Det innebär att insticksprogrammet för sidkonstruktion har definierat en arkitektur för vad det innebär att vara en DTC och implementerat den kod som söker efter DTC-utökningar som har konfigurerats i utökningspunkterna.

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

<extension-point>-elementet har följande attribut:

Faktiska utökningar konfigureras till utökningspunkter (fördefinierat eller deklarerat i det här insticksprogrammet) i <extension>-avsnittet. Konfigurationsinformationen anges som giltig XML-kod mellan märkorden <extension> och </extension>. I plattformen anges inte det faktiska formatet för konfigurationsmärkordsuppsättningen (annat än att giltig XML-kod ska användas). Märkordsuppsättningen definieras av leverantören av det insticksprogram som deklarerade utökningspunkten. Plattformen tolkar egentligen inte konfigurationsmärkordsuppsättningen. Den överför bara konfigurationsinformationen till insticksprogrammet som en del av bearbetningen av utökningspunkten (när utökningspunktslogiken frågar alla konfigurerade utökningar).

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

<extension>-elementet har följande attribut:

Viktigt: Innehållet i <extension>-elementet deklareras med hjälp av ANY-regeln. Det innebär att vilken giltig XML-kod som helst kan anges i utökningskonfigurationsavsnittet (mellan märkorden <extension> och</extension>).

Fragment används till att öka räckvidden för ett insticksprogram. Ett exempel är att införliva data, till exempel meddelanden eller etiketter, på ett annat språk.

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

Varje fragment måste associeras till ett visst insticksprogram. Det associerade insticksprogrammet identifieras med <plugin-id>, <plugin-version> och, valfritt, <match>. Lägg märke till att om den här specifikationen överensstämmer med fler än ett insticksprogram används det insticksprogram som har det senaste versionsnumret.

Komponenterna <requires>, <runtime>, <extension-point> och <extension> i ett fragment läggs till logiskt i det överensstämmande insticksprogrammet.

<fragment>-attributen är de följande: