Erweiterungspunktschema

Erweiterungen sind der Hauptmechanismus, mit dem ein Plug-in neue Funktionen zur Plattform hinzufügen kann. Erweiterungen können nicht willkürlich erstellt werden. Sie werden mit einer genauen Spezifikation deklariert, die durch einen Erweiterungspunkt definiert ist.

Jede Erweiterung muss die Spezifikation des Erweiterungspunkts beachten, den sie erweitert  Jeder Erweiterungspunkt definiert Attribute und erwartete Werte, die durch eine Erweiterung deklariert werden müssen.  Verwaltet werden diese Informationen in der Plug-in-Registrierung der Plattform.  Erweiterungspunkt-Provider fragen diese Werte aus der Registrierung ab. Daher muss unbedingt gewährleistet werden, dass ein Plug-in die erwarteten Informationen angibt.

In der minimalen Form ist die Deklaration eines Erweiterungspunkts sehr einfach.  Sie definiert lediglich eine ID und einen Namen für den Erweiterungspunkt. Alle weiteren Informationen, die von dem Erweiterungspunkt erwartet werden, sind spezifisch für diesen Erweiterungspunkt und werden an anderer Stelle dokumentiert.  (Zu den Definitionen für Plattform-Erweiterungspunkte siehe >Referenz für Plattform-Erweiterungspunkte.)

Die Referenzinformationen sind zwar hilfreich, aktivieren jedoch keine programmgestützte Hilfe, mit der die Spezifikation einer Erweiterung ausgewertet werden kann. Aus diesem Grund führt PDE ein Erweiterungspunktschema ein, das Erweiterungspunkte in einem zur automatisierten Verarbeitung geeigneten Format beschreibt.

Das Erweiterungspunktschema ist ein gültiges XML-Schema gemäß der Definition in der W3C-Spezifikation. Die vollständige XML-Schemaspezifikation ist jedoch sehr komplex und für diese spezielle Verwendung gar nicht erforderlich. Daher verwendet PDE nur eine Untergruppe der XML-Schemafunktionen.  Jedes Erweiterungspunktschema ist ein gültiges XML-Schema, aber PDE setzt nicht alle verfügbaren Funktionen ein.

Vorteile des Erweiterungspunktschemas

Die Beschreibung eines Erweiterungspunktes mit einem XML-Erweiterungspunktschema in PDE bietet zahlreiche Vorteile:

  1. Auf Grund der Grammatik des Erweiterungspunktes können Elemente, Attribute und Typen formal ausgedrückt werden. Diese Informationen können von Tools verwendet werden, um Erweiterungen auszuwerten oder um bei der Erstellung einer Erweiterung eine Unterstützung zur Verfügung zu stellen.
  2. Ein XML-Schema ermöglicht Dokumentationsanmerkungen, die Ähnlichkeit mit Javadoc-Angaben in der Java-Quelle haben. Dieser Mechanismus verknüpft einen kurzen Text für gültige Elemente und Attribute mit der Deklaration dieser Elemente und Attribute. Auf diese Weise kann die Dokumentation viel einfacher synchronisiert werden, da beim Entfernen eines Attributs die Dokumentation für das Attribut ebenfalls entfernt wird.  Das Referenzdokument muss nicht aktualisiert werden.
  3. Referenzdokumentation kann generiert werden.  PDE bietet ein Tool, das Änderungen in den Erweiterungspunktschemata protokolliert und während der Verarbeitung die Referenzdokumentation aktualisiert.
  4. Sie können zusätzliche Metadaten über den Erweiterungspunkt angeben, die durch Tools verwendet werden können, die das Schema verarbeiten.  PDE verwendet diesen Mechanismus, um zusätzliche Informationen zu Elementen und Attributen hinzuzufügen. Ist beispielsweise ein Attribut mit "Java" markiert, kann PDE durch eine Interaktion mit den Java-Funktionen der Plattform eine Unterstützung für das Festlegen des Werts für dieses Attributs anbieten.

Einschränkungen für die XML-Schemaunterstützung von PDE

PDE verwendet eine kleine Untergruppe des XML-Schemas. Die Verwendung aller XML-Schemafunktionen würde im speziellen Fall von PDE eine übermäßige und nicht gerechtfertigte Systembelastung verursachen. Die Untergruppe lässt quasi eine Eins-zu-eins-Zuordnung von DTDs zu Schemata zu, jedoch ohne DTD-Einschränkungen. Für das Erweiterungspunktschema von PDE gelten die folgenden Haupteinschränkungen:

  1. Es sind nur Deklarationen von globalen Elementen zulässig.
  2. Es sind nur Deklarationen von lokalen Attributen zulässig.  Globale Attribute können nicht deklariert werden.
  3. Die folgenden Zusammensetzungsparameter werden unterstützt: all (= Alle), sequence (= Folge), choice (= Auswahl) und group (= Gruppe).
  4. Es gibt keine Unterstützung für globale Typen.  Typen müssen deklariert und sofort verwendet werden.
  5. Attribute können nur den Typ string und boolean haben.
  6. Wenn ein Attribut den Typ string hat, wird nur die Rahmenbedingung enumeration unterstützt.

Wenn Sie unter Verwendung dieser Rahmenbedingungen ein XML-Schema schreiben, werden Sie feststellen, dass die resultierende Datei einer äquivalenten DTD, die dieselbe Grammatik definiert, verblüffend ähnlich ist. Der Vorteil von Schemata sind die Anmerkungen (sowohl Dokumentation als auch Metadaten). Ein weiterer Pluspunkt ist die Tatsache, dass das XML-Schema selbst in XML geschrieben wird, was seine Verarbeitung und Lesevorgänge vereinfacht.

Die oben stehende Liste ist nur für Referenzzwecke gedacht. In den meisten Fällen verwenden Sie zur Definition eines XML-Schemas wahrscheinlich den PDE-Schemaeditor. Dieser Editor sorgt dafür, dass die korrekte Datei generiert wird.