Den Editor für Erweiterungspunktschemata können Sie auf zwei unterschiedlichen Wegen öffnen: als Artefakt bei der Erstellung eines neuen Erweiterungspunktes oder durch das Öffnen eines vorhandenen Erweiterungspunktschemas. Gemäß der Konvention ist der Name eines neuen Schemas mit der Erweiterungspunkt-ID identisch, an die die Dateierweiterung .xsd angehängt wird. Solche Schemata werden in das Verzeichnis schema der Verzeichnisstruktur Ihres Plug-ins gestellt.
Sobald in PDE ein neuer Erweiterungspunkt erstellt wird, wird auch die Datei für das Ausgangsschema erstellt, und der Schemaeditor wird zur Bearbeitung geöffnet. Sie können das Schema sofort definieren, aber auch schließen und später bearbeiten. Durch die Angabe eines vollständigen Erweiterungspunktschemas kann PDE den Benutzern Ihres Erweiterungspunkts eine automatisierte Unterstützung anbieten.
Der PDE-Schemaeditor basiert auf denselben Konzepten wie der Editor für Plug-in-Manifeste. Er enthält zwei Formatseiten und eine Quellenseite. Da das XML-Schema ausführlich und in der Quellenform möglicherweise nur schwer lesbar ist, sollten Sie den Großteil der Bearbeitung auf den Formatseiten vornehmen. Die Quellenseite ist für das Lesen des resultierenden Quellcodes nützlich.
Sie haben bereits den Erweiterungspunkt "Sample Parser" und das Ausgangsschema erstellt. Jetzt können Sie das Schema öffnen, indem Sie in den Ordner schema Ihres Projekts wechseln und auf die Datei parsers.xsd doppelklicken. Daraufhin wird der Schemaeditor geöffnet.
Jetzt werden Sie Folgendes ausführen:
Jedes Erweiterungspunktschema beginnt mit der Deklaration des Elements "extension". Sie fügen ein neues XML-Element namens "parser" hinzu.
Bis hierher sollte der Schemaeditor etwa so aussehen:
Jetzt fügen Sie alle zusätzlichen Attribute hinzu, die Werte aus einer diskreten Auswahlliste annehmen. Das bedeutet, dass Sie eine Aufzählungseinschränkung für den Basistyp string erstellen müssen. Außerdem legen Sie einen Standardwert für das Attribut fest.
Wählen Sie bei ausgewähltem Element "parser" die Schaltfläche Neues Attribut aus. Ändern Sie seinen Namen auf der Eigenschaftenseite in "mode".
Klicken Sie auf die Wertzelle der Eigenschaft "restriction", um den Dialog "Einschränkung" aufzurufen.
Ändern Sie den Einschränkungstyp von "none" in "enumeration."
Fügen Sie die folgenden drei Optionen hinzu: "never" (= nie), "always" (= immer) und "manual" (= manuell). (Dies sind die drei fiktiven Moduswerte für die Parser-Erweiterung.)
Der Dialog "Einschränkung" sollte etwa so aussehen:
Wenn der Dialog geschlossen wurde, ändern Sie das Attribut "use" in "default" und das Attribut "value" in "always." Hierdurch wird der Standardwert definiert. Sie werden bemerken, dass in der Statuszeile einen Fehlernachricht erscheint, wenn Sie den Wert eingeben, da die gültigen Werte auf die drei Optionen für "enumeration" beschränkt sind. Sobald Sie die Eingabe beendet haben, wird die Fehlernachricht jedoch ausgeblendet, da "always" ein gültiger Wert ist.
Nachdem Sie alle Elemente und Attribute angegeben haben, müssen Sie jetzt die Grammatik definieren. Ziel der Definition ist es, dass das Element "extension" eine beliebige Anzahl von Elementen "parser" als Kindelemente enthalten kann.
Wählen Sie das Element "extension" aus. Sein anfängliches Inhaltsmodell zeigt ein leeres Objekt für die Folgeerstellung an.
Wählen Sie das Objekt für die Folgeerstellung aus, und wählen Sie im Kontextmenü die Optionen Neu > Verweis > parser aus. Hierdurch wird der Parser-Verweis zum Objekt für die Folgeerstellung hinzugefügt.
Die Standardbeziehungsart von Verweisen ist [1,1]. Dies bedeutet, dass genau 1 Element "parser" vorhanden sein kann. Dies ist von Ihnen jedoch nicht beabsichtigt. Daher wählen Sie den Verweis "parser" aus, und ändern die Eigenschaft minOccurs auf der Eigenschaftenseite in "0" und die Eigenschaft maxOccurs in "unbounded" (= unbegrenzt).
Nachdem Sie die Grammatik definiert haben, zeigt die DTD-Annäherung unter dem Grammatikabschnitt an, wie die Grammatik für das ausgewählte Element in DTD aussehen würde. Diese Informationen sind für Entwickler gedacht, die mit DTD-Dateien vertrauter als mit XML-Schemata sind.
Nachdem Sie gültige Elemente, Attribute und die Grammatik definiert haben, müssen Sie jetzt einige Informationen zum Erweiterungspunkt angeben. Es gibt zwei Typen von Dokumentationsausschnitten für Schemata:
Dokumentation zu Elementen und Attributen
Dokumentation zur Verwendung des Erweiterungspunkts, zur API usw.
Der erste Ausschnitttyp wird auf der Seite "Definition" des Schemamanifests angegeben. Wenn Sie Elemente und Attribute auswählen, können Sie im Abschnitt "Beschreibung" einen kurzen Text über sie hinzufügen. Das erwartete Format sind HTML-Rohdaten (wie bei Javadoc). Der Text wird so in das endgültige Referenzdokument kopiert, wie er hier angegeben ist.
Wählen Sie das Attribut "id" des
Elements "parser" aus, und geben Sie im Editor
"Beschreibung" Folgendes ein:
Ein eindeutiger Name, mit dem auf diesen Parser
verwiesen wird.
Wählen Sie das Attribut "name"
aus, und fügen Sie den folgenden Text hinzu:
Ein umsetzbarer Name, der in der
Benutzerschnittstelle für diesen Parser verwendet wird.
Wählen Sie das Attribut "class"
aus, und fügen Sie den folgenden Text hinzu (achten Sie auf die
HTML-Tags):
Der vollständig qualifizierte Name einer Java-Klasse, die die
Schnittstelle <samp>com.example.xyz.IParser</samp>
implementiert.
Wählen Sie das Attribut "mode" aus, und
fügen Sie Folgendes hinzu:
Eine optionale Markierung, die angibt, wie oft dieses Parser-Exemplar
ausgeführt wird. Die Standardeinstellung ist
<samp>always</samp> (= immer).
Jetzt müssen Sie noch eine kurze Textbeschreibung für den eigentlichen Erweiterungspunkt angeben. Hierzu wechseln Sie auf die Seite "Dokumentation":
Wählen Sie im kombinierten Feld
über dem Texteditor den Eintrag "Übersicht" aus, und fügen Sie
den folgenden Text hinzu:
An diesem Erweiterungspunkt können zusätzliche Parser integriert
werden. Die Parser führen keine Aktionen aus. Sie wurden lediglich
als Beispiel für ein Erweiterungspunktschema hinzugefügt.
Klicken Sie auf Anwenden.
Wählen Sie im kombinierten
Feld den Eintrag "Examples" aus, und fügen Sie den
folgenden Text hinzu:
Das folgende Beispiel veranschaulicht die
Verwendung des Erweiterungspunktes:
<p>
<pre>
<extension point="com.example.xyz.parsers">
<parser
id="com.example.xyz.parser1"
name="Sample Parser
1"
class="com.example.xyz.SampleParser1">
</parser>
</extension>
</pre>
</p>
Klicken Sie auf Anwenden.
Hinweis: Beim Angeben von Beispielen müssen besondere Aspekte beachtet werden. Normalerweise behandelt PDE den angegebenen Text als HTML-Rohdaten und respektiert weder neue Zeilen noch Leerräume, die mehr als ein Zeichen umfassen (Leerräume werden also ignoriert). Bei herkömmlichem Text ist diese Funktionsweise erwünscht. Wenn Sie Beispiele angeben wollen, bei denen zur optimalen Darstellung Tabulatorschritte und vertikale Ausrichtungen eingesetzt werden müssen, kann dies jedoch ziemlich lästig sein. PDE bietet für diese Situation einen Kompromiss: Falls PDE das HTML-Tag <pre> findet, wird der Inhalt wie vorliegend übernommen (alle Zeichen bleiben unverändert erhalten), bis das abschließende Tag </pre> erreicht wird. Auf diese Weise können Sie ein Beispiel wie oben darstellt angeben und sich darauf verlassen, dass es auch im endgültigen Referenzdokument gut aussieht.
Vielleicht haben Sie beim Eingeben der Dokumentation bereits bemerkt, dass immer mehr Elemente im Editor der Sicht "Gliederung" durch ein Stiftimage überlagert wurden. Dieser kleine Anzeige weist Sie darauf hin, dass dem betreffenden Element Text zugeordnet ist. Auf diese Weise können Sie ganz schnell überprüfen, ob im Dokument noch Angaben fehlt.
Sobald Sie die Dokumentation fertig gestellt haben, können Sie einen Blick auf die Referenzdokumentation (Datei parsers.html) im Ordner "doc" werfen. Sie wird durch ein PDE-Erstellungsprogramm erstellt, das für die Reaktion auf Änderungen in Dateien für ein Erweiterungspunktschema registriert ist. Das resultierende Dokument für dieses Beispiel sieht so aus: