Eclipse 平台
外掛程式處理

版本 0.90 - 上次修訂日期:2001 年 3 月 15 日

以下處理標記定義會利用各種命名記號和識別碼。 如果要消除語義不明確的情形,以下是些這方面的生產規則 [下文中會參照它們]。 一般而言,所有識別碼都會區分大小寫。

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)
這一節的其餘部份以一系列的 DTD 片段來說明 plugin.xml 檔結構。 plugin.dtd 檔提供全部 DTD 定義。
<?xml encoding="US-ASCII"?> 
<!ELEMENT plugin (requires?, runtime?, extension-point*, extension*)> 
<!ATTLIST plugin 
  name                CDATA #REQUIRED 
  id                  CDATA #REQUIRED 
  version             CDATA #REQUIRED 
  vendor-name         CDATA #IMPLIED
  class               CDATA #IMPLIED 
>
<plugin> 元素定義處理的本體。 它選用性地包含外掛程式執行時期的定義、外掛程式所引進的任何新延伸點的宣告,以及功能延伸項目的配置(配置到其他外掛程式所定義或這個外掛程式所引進的延伸點中)。 <plugin> 屬性如下: XML DTD 建構規則 element* 表示元素出現零或多次;element? 表示元素出現零或一次;element+(以下使用)表示元素出現一或多次。 例如,根據上述 <plugin> 定義,這表示外掛程式只含有一個執行時期定義,且沒有有效的延伸點宣告或延伸項目配置(例如,其他外掛程式所依賴的共用程式庫)。 同樣地,只含有延伸項目配置而沒有本身的執行時期或延伸點的外掛程式也無效(例如,將其他外掛程式所遞送的類別配置到其他外掛程式中所宣告的延伸點)。

處理的 <requires> 區段會宣告對於其他外掛程式的任何相依關係。

<!ELEMENT requires (import+)>
<!ELEMENT import EMPTY>
<!ATTLIST import
 plugin               CDATA #REQUIRED
 version              CDATA #IMPLIED
 match                (exact | compatible) "compatible"
 export               (true | false) "false"
>
每個相依關係都是利用 <import> 元素來指定的。它含有下列屬性: 處理的 <runtime> 區段含有組成外掛程式執行時期之一或多個程式庫的定義。平台執行機制(外掛程式類別載入器)會利用所參照的程式庫來載入及執行外掛程式所需要的正確程式碼。
<!ELEMENT runtime (library+)> 
<!ELEMENT library (export*)>
<!ATTLIST library 
  name               CDATA #REQUIRED 
>
<!ELEMENT export EMPTY> 
<!ATTLIST export
  name               CDATA #REQUIRED 
>
<runtime> 元素沒有屬性。

<library> 元素共同定義外掛程式執行時期。 至少必須指定一個 <library>。 每個 <library> 元素都有下列屬性:

每個 <library> 元素都可以指定應該匯出程式庫的哪個部份。匯出規則會指定成一組匯出遮罩。依預設(沒有指定匯出規則),程式庫會視為 private。<export> 元素有下列屬性: 平台架構是以可配置之延伸點的觀念為基礎。 平台本身會預先定義一組涵蓋了延伸平台和桌面之作業(如新增功能表動作,提供內嵌的編輯器)的延伸點。 除了預先定義的延伸點之外,每個提供的外掛程式都可以宣告其他延伸點。 藉由宣告延伸點,外掛程式基本上會將使用外部提供的延伸項目來配置外掛程式功能的能力突顯出來。 例如,頁面建立器外掛程式可以宣告一個將新的「設計時間控制 (DTC)」新增到其建立器選用區的延伸點。 這表示頁面建立器已定義它要作為其 DTC 的架構,且已實作程式碼來尋找已配置到延伸點中的 DTC 延伸項目。
<!ELEMENT extension-point EMPTY>  
<!ATTLIST extension-point 
  name               CDATA #REQUIRED 
  id                 CDATA #REQUIRED    
  schema             CDATA #IMPLIED 
>
<extension-point> 元素有下列屬性: 實際的延伸項目會配置到 <extension> 區段中的延伸點(預先定義或在這個外掛程式新宣告者)。 配置資訊指定為包含在 <extension> 和 </extension> 標示之間形式完整的 XML。 平台不指定配置標記的實際形式(但要求它必須是形式完整的 XML)。 標記由偵測延伸點之外掛程式的供應商定義。 平台不會實際解譯配置標記。 它只會將配置資訊傳遞到外掛程式,以作為延伸點處理程序的一部份(在延伸點邏輯查詢所有配置的延伸項目之時)。
<!ELEMENT extension ANY> 
<!ATTLIST extension 
  point              CDATA #REQUIRED 
  id                 CDATA #IMPLIED 
  name               CDATA #IMPLIED 
>
<extension> 元素有下列屬性: 重要事項:<extension> 元素的內容是利用 ANY 規則來宣告的。這表示任何形式完整 XML 都可以在延伸項目配置區段內指定(在 <extension> 和 </extension> 標示之間)。