Манифест модуля платформы Eclipse

Версия 3.2. Дата последнего исправления - 9 Мая 2006 года

В приведенных ниже определениях манифеста применяются различные маркеры и идентификаторы. Для того чтобы избежать неоднозначности, далее рассмотрены правила их обработки [упоминаются в тексте, приведенном ниже]. В общем случае все идентификаторы обрабатываются с учетом регистра символов.

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 в виде отдельных фрагментов определения типа документа. Файл plugin.dtd содержит определение типа документа в целом.

<?xml encoding="US-ASCII"?> 
<?eclipse version="3.2"?>
<!ELEMENT plugin (extension-point*, extension*)>

Элемент <plugin> задает тело манифеста. Он может содержать объявления новых точек расширения, предоставленных модулем, а также конфигурацию функциональных расширений (настроенных в точках расширения, определенных этим или другими модулями).

Правило создания определения типа документа в формате XMLelement* указывает на произвольное число вхождений элемента; элемент? указывает на одно вхождение элемента или его отсутствие; элемент+ (применяется ниже) указывает на одно или несколько вхождений элемента. Таким образом, учитывая определение элемента <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. Таким образом, между тегами <extension> и </extension> можно указать произвольный текст в формате XML.

Фрагменты

Фрагменты позволяют увеличить область действия модуля. В качестве примера можно привести добавление данных, таких как сообщения и метки, на другом языке.

<?xml encoding="US-ASCII"?> 
<?eclipse version="3.2"?>
<!ELEMENT fragment (extension-point*, extension*)>

Компоненты фрагмента <extension-point> и <extension> логически добавляются к исходному модулю.

Примечания о ExtensionId и ExtensionPointId

Для поддержки совместимости с ExtensionId и ExtensionPointId, в которых раньше (в версиях до 3.2) использовались символы точки ('.') были добавлены дополнительные возможности обработки данных. В зависимости от номера версии, указанного в теге <?eclipse version?>:

Это правило применяется только для ExtensionId и ExtensionPointId, которые содержат символы точки ('.').


Предыдущие версии манифеста модуля находятся здесь: