V3.2 - 上次修订时间为:2006 年 5 月 9 日
下面的清单标记定义使用了各种命名标记和标识。要消除岐义,使用以下一些生产规则[在下面的文本中将引用这些规则]。通常情况下,所有标识都是区分大小写的。
SimpleToken := sequence of characters from ('a-z','A-Z','0-9','_') ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken) QualifiedId := ComposedToken '.' SimpleToken ExtensionId := SimpleToken | QualifiedId ExtensionPointId := SimpleToken | QualifiedId ExtensionPointReference := SimpleToken | QualifiedId
本节余下的部分将 plugin.xml 文件结构描述为一系列 DTD 段。plugin.dtd 文件提供了全部 DTD 定义。
<?xml encoding="US-ASCII"?> <?eclipse version="3.2"?> <!ELEMENT plugin (extension-point*, extension*)>
<plugin> 元素定义清单的主体。它可以有选择地包含由该插件引入的任何新扩展点的声明以及功能扩展的配置(配置到由其他插件定义的或由此插件引入的扩展点中)。
XML DTD 构造规则 element* 表示元素的零次或多次出现;element? 表示元素的零次或一次出现;element+(在下面使用)表示元素的一次或多次出现。例如,根据上述 <plugin> 定义,这表示未包含扩展点声明或扩展配置的插件是有效的(例如,其他插件所依赖的公共库)。同样,仅包含扩展配置并且没有自己的扩展点的插件也是有效的(例如,将其他插件中交付的类配置到其他插件中声明的扩展点中)。
Eclipse 体系结构基于可配置扩展点这一概念。平台本身预定义一组涉及扩展平台和桌面的任务(例如:添加菜单操作以及添加嵌入的编辑器)的扩展点。除预定义的扩展点之外,每一个所提供的插件还可声明附加的扩展点。通过声明扩展点,插件实质上表明了具有用外部提供的扩展来配置插件功能的能力。例如,“页面构建器”插件可声明一个扩展点以将新的“设计时控件”(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"?> <?eclipse version="3.2"?> <!ELEMENT fragment (extension-point*, extension*)>
将把段的 <extension-point> 和 <extension> 组件在逻辑上添加至主插件。
添加了特殊处理,以支持向后兼容 V3.2 以前包含点(“.”)的 ExtensionId 和 ExtensionPointId。根据 <?eclipse version?> 标记中指定的版本:
此规则仅适用于包含点(“.”)字符的 ExtensionId 和 ExtensionPointId。
可以在以下位置找到旧版本的插件清单: