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)
本节余下的部分将 plugin.xml 文件结构描述为一系列 DTD 段。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> 元素都可指定应导出库的哪个部分。将导出规则指定为一组导出掩码。缺省情况下(未指定任何导出规则),库被认为是专有的。<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> 标记之间)内指定。