第 2.1 版 - 上次修訂時間 2003 年 3 月 17 日
以下處理標記定義會利用各種命名記號和識別碼。 如果要消除語義不明確的情形,以下是些這方面的生產規則 [下文中會參照它們]。 一般而言,所有識別碼都會區分大小寫。
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 provider-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 (perfect | equivalent | compatible | greaterOrEqual) "compatible"
export (true | false) "false"
optional (true | false) "false"
>
每個相依關係都是利用 <import> 元素來指定的。它含有下列屬性:
處理的 <runtime> 區段含有組成外掛程式執行時期之一或多個程式庫的定義。平台執行機制(外掛程式類別載入器)會利用所參照的程式庫來載入及執行外掛程式所需要的正確程式碼。
<!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> 元素沒有屬性。
<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> 標示之間)。
片段是用來增加外掛程式的範圍。 範例是用來納入資料,如其他語言中的訊息或標籤。<?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" >
每一個片段與特定的外掛程式相關聯。相關聯的外掛程式使用 <plugin-id>、 <plugin-version> 來識別,或選用性的使用<match>。 請注意,如果這個規格符合一個以上的外掛程式,將使用相符外掛程式的最新版本。
<requires>、<runtime>、<extension-point> 和 <extension> 片段元件將被邏輯地新增至相符的外掛程式。<fragment> 屬性如下: