In dieser Lerneinheit wird das JET-Eingabemodell weiter untersucht;
außerdem wird gezeigt, wie das Eingabemodell mit XPath-Ausdrücken
durchquert werden kann und wie das Verhältnis von JET-Aktionen zum Eingabemodell
ist.
JET-Eingabemodell Die Eingabemodelle, die Sie durch ein Authoring
von JET-Umsetzungen erstellen, haben folgende Merkmale:
- Das Modell ist hierarchisch angelegt und verfügt über ein einziges Stammelement.
- Jeder Elementtyp in dem Modell kann Attribute enthalten, die
Zeichenfolgewerte aufweisen.
- Elementeinschluss hat immer die Kardinalität null oder höher.
Die Funktionen des Modells sind absichtlich eingeschränkt, damit
eine schnelle Erstellung von Modell-zu-Text-Umsetzungen einfacher
durchgeführt werden kann, ohne dass der Benutzer über detaillierte
Kenntnisse der Gestaltung von Metamodellen verfügen muss.
Modellverarbeitung durch JET-Umsetzungen und Aktionsaufruf
Der Editor für das JET-Authoring generiert Code, um das
Eingabemodell zu verarbeiten. Dieser Code ist in der Schablone
main.jet enthalten und weist die folgenden Merkmale auf:
- Der generierte Code führt eine Tiefensuchdurchquerung (Depth-First
Traversal) des Modells aus.
- Der Code verarbeitet das Modell zweimal: Die erste Iteration wertet abgeleitete
Attributausdrücke aus. Bei der zweiten Iteration werden JET-Aktionen aufgerufen, die
Projekte, Ordner und Dateien erstellen. Die JET-Aktionen, bei denen
Dateien erstellt werden, heißen JET-Dateiaktionen und sie rufen
JET-Schablonen auf.
- Während der Verarbeitung wird jedes Modellelement einer XPath-Variablen zugeordnet.
Der Name dieser Variable wird in der Eigenschaftensicht für den Elementtyp
definiert, der im Editorbereich zu sehen ist. Standardmäßig ist der Name der Variablen
mit dem Namen des Modellelements identisch. Sie können die Variable
vom Elementnamen unterscheiden, da XPath-Variablen immer das
Dollarzeichen ($) als Präfix in einem XPath-Ausdruck enthalten.
- Bei der Verarbeitung eines Elements werden in der ersten Iteration
abgeleitete Attribute berechnet; in der zweiten Iteration werden
JET-Aktionen ausgeführt und anschließend werden untergeordnete
Modellelemente verarbeitet.
- Die XPath-Variablen, die dem aktuellen Element und allen seinen übergeordneten Elementen
zugeordnet sind, sind bei der Berechnung der abgeleiteten Attribute und dem Aufruf der
JET-Aktion verfügbar. Aus diesem Grund verweist jede Berechnung
abgeleiteter Attribute, jede JET-Aktion oder jede JET-Schablone, die
von einer JET-Dateiaktion aufgerufen wird, möglicherweise durch die
Verwendung einer XPath-Variablen auf das derzeit verarbeitete Element
oder auf ein beliebiges übergeordnetes Element.
Sie können das in diesem Modul beschriebene Modell als Beispiel
betrachten. In der folgenden Abbildung sehen Sie den Inhalt des
Fensters "Eingabeschemas und Ausgabeaktionen".
Aktion
'Datei erstellen' (Create File): Die Datei letter.html und die
zugehörige JET-Schablone (templates/letter.html.jet)
werden immer dann aufgerufen, wenn das Element 'mailing'
unter dem Element 'root' festgestellt wird.
Sowohl die Aktion als auch die Schablone haben Zugriff auf zwei XPath-Variablen:
$mailing und $root. Aktionsparameter und Ersetzungen von Text können
sämtliche Attribute verwenden, die zu den Elementtypen 'mailing' und
'root' gehören.
XPath-Ausdrücke und Modellelemente umbenennen
Die XPath-Ausdrücke, die von der JET-Authoring-Funktionalität erstellt werden,
haben immer das Format $variable/@attribute. Mit dem JET-Authoring wird ein
Refactoring für solche Ausdrücke ausgeführt, wenn der Variablenname oder der
Elementtyp umbenannt wird. Dieses Refactoring umfasst jedoch keine
JET-Schablonen. Das bedeutet, dass bei der Umbenennung einer
Variablen oder eines Elementtyps im JET-Authoring-Editor sämtliche
XPath-Ausdrücke in JET-Schablonen, die den alten Variablennamen
verwenden, funktionsunfähig gemacht werden.