Схема точки расширения

Расширения - это основной механизм расширения функциональности платформы с помощью модулей. Расширения не могут быть созданы произвольно.   Они объявляются с помощью четкой спецификации, которая задается точкой расширения.

Расширение должно соответствовать спецификации точки расширения, которую оно расширяет.   Точка расширения задает атрибуты и ожидаемые значения, которые должны быть объявлены расширением.   Эта информация хранится в реестре модулей платформы.   Провайдеры точек расширения запрашивают эти значения в реестре, поэтому важно, чтобы модуль предоставлял требующуюся информацию.

Минималистическое объявление точки расширения выглядит очень просто.  Оно задает ИД и имя точки расширения.  Вся прочая информация, предоставляемая точкой расширения, для каждой точки расширения задается по-своему и указывается отдельно.   Определения точек расширения платформы описаны в разделе Справочник по точкам расширения платформы.

Справочная документация полезна, но она не предоставляет программных возможностей проверки спецификации расширения. Поэтому в используется схема точки расширения PDE, которая описывает точку расширения в формате, пригодном для машинной обработки.

Схема точки расширения - это правильная схема XML согласно спецификации W3C. Однако полная спецификация схем XML слишком сложна, в нашем случае большинство этих сложностей не нужны. В PDE применяется подмножество функций схем XML.  Каждая схема точки расширения - это правильная схема XML, но в PDE используется лишь часть ее функций.

Преимущества работы со схемой точки расширения

Описание точки расширения с помощью схемы XML в PDE имеет следующие преимущества:

  1. Элементы, атрибуты и типы точки расширения могут быть описаны формально. Эта информация может быть использована инструментами для проверки расширений или для помощи при создании расширений.
  2. Схема XML содержит возможности для аннотаций документации, подобно Javadoc в исходных текстах Java. Этот механизм связывает краткий текст для допустимых элементов и атрибутов с объявлениями этих элементов и атрибутов. При этом сопровождение документации заметно упрощается, поскольку удаление атрибута автоматически влечет за собой и удаление документации по этому атрибуту.   Справочный документ обновлять не придется.
  3. Документация может генерироваться автоматически.  В PDE входит утилита, отслеживающая изменения в схемах точек расширения и обновляющая справочную документацию на лету.
  4. Можно указать дополнительные мета-данные для точки расширения, которые могут быть использованы при обработке схемы.   PDE применяет этот механизм для создания дополнительной информации об элементах и атрибутах. Например, атрибут помечен как "Java,", то PDE может помочь задать значение этого элемента, взаимодействуя с комплектами платформы Java.

Ограничения поддержки схем XML в PDE

PDE использует небольшое подмножество схем XML.  Работа с полным набором функций схем XML представляется излишеством в данном конкретном случае. Это подмножество служит практически точным отображением схем на DTD, но свободно от недостатков DTD. Ниже перечислены основные ограничения схем точки расширения в PDE:

  1. Можно использовать только глобальные объявления элементов.
  2. Можно использовать только локальные объявления атрибутов.  Глобальные атрибуты объявлять нельзя.
  3. Поддерживаются только следующие составители: all, sequence, choice и group.
  4. Поддержка глобальных типов отсутствует.   Типы должны объявляться непосредственно перед использованием.
  5. Атрибуты могут иметь только типы string и boolean.
  6. Если тип атрибута - это string, поддерживается только ограничение enumeration.

Записав схему XML в этих ограничениях, вы с удивлением обнаружите, насколько она похожа на DTD, задающий ту же самую грамматику. Преимущество схемы заключается в аннотациях (и документации, и мета-данных). Дополнительным преимуществом схем является то, что они сами написаны на XML, и читать и обрабатывать их проще.

Список выше приведен только для справки. Скорее всего вы будете создавать схему XML в редакторе схем PDE, который позаботится о создании правильного файла.