Globale Vorlagen
Eine globale Vorlage kann für jeden Node oder Typen im Schema oder für einen in einem XPath-Ausdruck definierten Node angelegt werden.
Eine globale Vorlage definiert Anweisungen für den ausgewählten Node oder Typ und wird über die Hauptvorlage, Design-Fragmente oder andere globale Vorlagen aufgerufen. Das Verarbeitungsmodell ähnelt dem deklarativer Programmiersprachen, d.h. es wird eine einzige Vorlage definiert und mehrmals aufgerufen. Auf diese Art kann eine einzige Definition mehrmals wiederverwendet werden. Globale Vorlagen werden in zwei Situationen aufgerufen:
•wenn ein Node oder Typ in der Hauptvorlage so definiert wurde, dass er die globale Vorlage referenziert (Indem Sie im Design mit der rechten Maustaste auf die Komponente klicken und den Befehl "Als globale Vorlage definieren" auswählen).
•wenn (Inhalt) oder (restlicher Inhalt) innerhalb eines Elements oder Typs in eine lokale Vorlage eingefügt wird und der restliche Inhalt dieses Elements oder Typs einen Node oder Typ enthält, für den es eine globale Vorlage gibt.
Globale Vorlagen sind nützlich, wenn ein Node (oder Typ) in verschiedenen Elementen oder an verschiedenen Stellen vorkommt und für alle Instanzen dieses Elements nur eine Gruppe von Anweisungen erforderlich ist. Angenommen, ein para Element muss immer gleich formatiert werden, egal ob es im Element chapter, section, appendix oder blockquote vorkommt. Eine effiziente Methode wäre, eine globale Vorlage für para zu definieren und in der Hauptvorlage sicherzustellen, dass das para Element überall dort, wo notwendig, verarbeitet wird (z.B. durch Inkludieren von //chapter/para in die Hauptvorlage und Definieren, dass para seine globale Vorlage referenziert; oder durch Inkludieren von //chapter/title und anschließendes Inkludieren von (Inhalt) oder (restlicher Inhalt), so dass der restliche Inhalt des Elements chapter mit den verfügbaren globalen Vorlagen und Standardvorlagen verarbeitet wird.). Daher kann eine globale Vorlage auch für einen complexType (z.B. einen, der ein Adressmodell definiert) oder auch für einen simpleType (z.B. xs:decimal) definiert werden. In solchen Fällen werden alle Instanzen dieses Typs (complex oder simple), die die globale Vorlage für diesen Typ aufrufen, gemäß den in der globalen Vorlage definierten Regeln verarbeitet.
Erstellen einer globalen Vorlage
Globale Vorlagen können für jeden Node oder Typ im Schema oder für einen in einem XPath-Ausdruck definierten Node erstellt werden. Dies erfolgt über die Seitenleiste "Schema-Struktur" (Abbildung unten).
Eine globale Vorlage kann auf eine der folgenden Arten erstellt werden:
•Klicken Sie in der Schema-Struktur rechts vom Eintrag "Globale Vorlage" (Siehe Abbildung oben) auf die Schaltfläche "Neue globale Vorlage hinzufügen". Daraufhin wird das Dialogfeld "Neue globale Vorlage hinzufügen" (Abbildung unten) angezeigt. Sie können ein Element, ein Attribut oder einen Typ aus der im Dialog angezeigten Schema-Struktur auswählen oder Sie können einen XPath-Ausdruck eingeben. (Beachten Sie, dass globale Vorlagen, die für Nodes erstellt wurden, die durch einen XPath-Ausdruck ausgewählt wurden, in Authentic nicht unterstützt werden.) Dadurch wird der Node ausgewählt, der als globale Vorlage erstellt werden muss. Klicken Sie zum Fertigstellen auf OK. Die Vorlage wird erstellt und an die bereits vorhandenen Vorlagen in der Design-Ansicht angehängt. Sie kann nun bearbeitet werden. Der Schema-Node bzw. Schema-Typ wird in der Schema-Struktur durch ein vorangestelltes Pluszeichen gekennzeichnet.
•Rechtsklicken Sie in der Schema-Struktur (unter Root-Elemente, je nachdem unter Alle globalen Elemente oder alle globalen Typen) auf den Schema-Node oder die Typkomponente und wählen Sie den Befehl Als global definieren/Globale Vorlage löschen. Die Vorlage wird erstellt und an die bereits vorhandenen Vorlagen in der Design-Ansicht angehängt. Sie kann nun bearbeitet werden. Der Schema-Node bzw. Schema-Typ wird in der Schema-Struktur durch ein vorangestelltes Pluszeichen gekennzeichnet.
•Globale Vorlagen können in der Design-Ansicht auch anhand von Vorlagen in der Hauptvorlage erstellt werden. Klicken Sie mit der rechten Maustaste auf die Vorlage (entweder in der Design-Ansicht oder der Seitenleiste "Schema-Struktur") und wählen Sie den Befehl Als globale Vorlage definieren. Von der ausgewählten Vorlage wird eine globale Vorlage erstellt (sie wird an die Vorlagen in der Design-Ansicht angehängt) und in der Vorlage in der Hauptvorlage wird automatisch definiert, dass sie diese globale Vorlage verwendet. (Informationen zur Verwendung von globalen Vorlagen finden Sie weiter unten).
Eine globale Vorlage befindet sich in der Design-Ansicht unterhalb der Hauptvorlage. Sie wird durch eine lilafarbene Leiste mit dem Namen des Node, für den die globale Vorlage erstellt wurde, gefolgt von seinem Typ (simple) oder (complex), gekennzeichnet. In der Abbildung unten sehen Sie eine globale Vorlage.
Beachten Sie, dass die Verarbeitung der globalen Vorlage benutzerdefiniert ist und sowohl statische als auch dynamische Komponenten enthalten könnte und dass dafür alle für die Verarbeitung der Hauptvorlage verfügbaren Optionen zur Verfügung stehen.
Verwenden einer globalen Vorlage
Nachdem eine globale Vorlage erstellt wurde, kann sie verwendet werden, wenn ein Node mit demselben qualifizierten Namen in das Dokument eingefügt wird. (Wählen Sie, nachdem Sie den Node mit der Maus in das Design gezogen haben, im Menü, das daraufhin angezeigt wird, den Befehl Globale Vorlage verwenden aus). Wenn das Design eine lokale Vorlage enthält und es eine globale Vorlage desselben qualifizierten Namens für einen Node gibt, so kann alternativ dazu die globale Vorlage anstelle der lokalen verwendet werden. Um eine globale Vorlage für eine lokale Vorlage zu verwenden, klicken Sie mit der rechten Maustaste in der Design-Ansicht auf die lokale Vorlage und wählen Sie den Befehl Globale Vorlage verwenden. Bei Verwendung einer globalen Vorlage werden ihre Verarbeitungsanweisungen aufgerufen und von der lokalen Vorlage zur Laufzeit verwendet.
Immer wenn eine globale Vorlage im Design zum Einsatz kommt, kann an der globalen Vorlage ein XPath-Filter angewendet werden, um das Ziel-Nodeset zu filtern. Um einen solchen Filter zu erstellen, klicken Sie mit der rechten Maustaste im Design auf den Tag der globalen Vorlage und wählen Sie im Kontextmenü den Befehl XPath-Filter bearbeiten. Daraufhin wird das Dialogfeld "XPath-Filter bearbeiten" angezeigt, in das Sie den gewünschten Ausdruck eingeben können.
Rekursive globale Vorlagen
Globale Vorlagen können rekursiv sein, das heißt, eine globale Vorlage kann sich selbst aufrufen. Um sich in Authentic aber gegen eine Endlosschleife zu schützen, kann eine Eigenschaft zur Einstellung der maximalen Aufruftiefe eingestellt werden. Diese Eigenschaft, die Maximale Tiefe des Vorlagenaufrufs steht auf dem Register "Authentic" im Dialogfeld "Eigenschaften" des SPS (Datei | Eigenschaften) zur Verfügung. Sie gibt die maximale Anzahl der Vorlagenaufrufe an, die rekursiv gemacht werden dürfen, wenn die Verarbeitung für die Authentic-Ausgabe läuft. Wenn die Anzahl der Vorlagenaufrufe die in der Eigenschaft Maximale Tiefe des Vorlagenaufrufs angegebene Zahl übersteigt, wird eine Fehlermeldung zurückgegeben.
Lokales Kopieren einer globalen Vorlage
Nachdem eine globale Vorlage erstellt wurde, können ihre Verarbeitungsanweisungen direkt in eine Vorlage mit demselben qualifizierten Namen in der Hauptvorlage kopiert werden. Klicken Sie dazu mit der rechten Maustaste auf die lokale Vorlage und wählen Sie den Befehl Globale Vorlage lokal kopieren. Der Unterschied zwischen dem lokalen Kopieren eine globalen Vorlage und der Verwendung der globalen Vorlage (zur Laufzeit) besteht darin, dass die Verarbeitungsanweisungen nur einmal kopiert werden. Die globale Vorlage hat keinen weiteren Einfluss auf die lokale Vorlage. Jeder der beiden Vorlagen bzw. beide können zu einem späteren Zeitpunkt unabhängig voneinander geändert werden, ohne dass dies einen Einfluss auf die andere hat. Wenn allerdings festgelegt wurde, dass eine globale Vorlage von einer lokalen Vorlagen (zur Laufzeit) verwendet werden soll, so wirken sich alle Änderungen an der globalen Vorlage zur Laufzeit in der lokalen Vorlage aus.
Aktivieren und Deaktivieren von globalen Vorlagen
Eine globale Vorlage kann in der Schema-Struktur durch Aktivieren des entsprechenden Eintrags in der Liste der globalen Vorlagen aktiviert werden. Durch erneutes Anklicken des Eintrags wird sie deaktiviert. Wenn eine globale Vorlage aktiviert wurde (dies ist die Standardeinstellung, wenn eine globale Vorlage erstellt wurde), wird sie im XSLT Stylesheet generiert. Wenn sie deaktiviert wurde, wird sie nicht im XSLT Stylesheet generiert, bleibt aber weiterhin im SPS Design gespeichert.
Alle lokalen Vorlagen, die eine deaktivierte globale Vorlage verwenden, greifen - da sie die fehlende globale Vorlage nicht referenzieren können -auf die Standardvorlagen von XSLT zurück, wodurch der Inhalt von untergeordneten Text-Nodes ausgegeben wird.
Die Vorteile der Aktivierung/Deaktivierung sind: (i) Globale Vorlagen müssen nicht gelöscht werden, wenn sie vorübergehend nicht benötigt werden; sie können zu einem späteren Zeitpunkt wieder aktiviert werden; (ii) Wenn es zu Namenskonflikten mit Vorlagen aus importierten Stylesheets kommt, so kann die nicht benötigte globale Vorlage vorübergehend deaktiviert werden.
Entfernen einer globalen Vorlage
Um eine globale Vorlage zu entfernen, klicken Sie mit der rechten Maustaste entweder in der Design-Ansicht oder in der Seitenleiste "Schema-Struktur" auf die gewünschte globale Vorlage und wählen Sie den Befehl Als global definieren / Globale Vorlage löschen.
Einfache globale Vorlagen und komplexe globale Vorlagen
Es gibt zwei Arten von globalen Vorlagen: einfache und komplexe globale Vorlagen. Komplexe globale Vorlagen stehen aus Gründen der Rückwärtskompatibilität zur Verfügung. Wenn eine globale Vorlage in einem SPS, das mit einer StyleVision Version vor Version 2006 erstellt wurde, eine Tabelle oder Liste enthält, so wird diese globale Vorlage normalerweise in StyleVision 2006 und späteren Versionen als komplexe globale Vorlage geöffnet.
Ein komplexe globale Vorlage unterscheidet sich von einer einfachen globalen Vorlage in der Art, wie der Node, für den die globale Vorlage erstellt wurde, verarbeitet wird. Sobald die erste Instanz des Node im Dokument gefunden wird, verarbeitet die komplexe globale Vorlage unmittelbar danach alle nachfolgenden Instanzen dieses Node. Eine einfache globale Vorlage verarbeitet dagegen jede Node-Instanz erst dort, wo diese Node-Instanz vorkommt.
Beachten Sie bitte: Eine einfache globale Vorlage wird automatisch in eine komplexe globale Vorlage konvertiert, wenn rund um den Element-Node, für den die globale Vorlage erstellt wurde, ein vordefiniertes Format oder eine neue Zeile erstellt wird. Dies führt dazu, dass die Verarbeitung für komplexe globale Vorlagen (im vorhergehenden Listeneintrag beschrieben) durchgeführt wird. Um wieder eine einfache globale Vorlage zu verwenden, muss das vordefinierte Format entfernt werden (indem Sie den Node aus dem vordefinierten Format herausziehen und das vordefinierte Format dann löschen), bzw. die neue Zeile muss entfernt werden (durch Löschen des Elements in der Seitenleiste Designstruktur). Um die automatische Konvertierung von einfachen globalen Vorlagen in komplexe globale Vorlagen zu vermeiden, stellen Sie sicher, dass das vordefinierte Format bzw. die neue Zeile innerhalb der Node Tags des Elements hinzugefügt wird, für welches die einfache globale Vorlage erstellt wurde.
Globale Vorlagen in modularen SPSs
Wenn ein SPS Modul zu einem anderen SPS Modul hinzugefügt wird, stehen die globalen Vorlagen im hinzugefügten Modul dem referenzierenden SPS zur Verwendung zur Verfügung. Nähere Informationen zur Verwendung modularer SPSs finden Sie im Abschnitt Modulare SPSs.