Eine Vorlage ist ein BSCW-Dokument vom MIME-Typ ‚Document
Generator-Dokumentvorlage‘ (text/x-bscw-template
).
Vorlagen sollte mit einem normalen Texteditor (z.B. Windows Notepad) oder
einem HTML-Editor erzeugt werden. Nicht geeignet sind
Textverarbeitungssysteme wie Microsoft Word. Beim
Hochladen einer Vorlage in einen DokSet muss der MIME-Typ ‚Document
Generator-Dokumentvorlage‘ gewählt werden. Andernfalls wird das Dokument
vom Evaluierungsprozess nicht als Vorlage erkannt.
Es wird empfohlen, ein Suffix wie .dtm für Dokumente vom
Typ Vorlage zu benutzen, so dass sie in einer Ordnerübersicht anhand ihres
Namens leicht erkannt werden können. Eine Vorlage wird durch das Symbol
dargestellt.
Es gibt zwei Klassen von Vorlagen: Aus Vorlagen der ersten Klasse werden während des Evaluierungsprozesses direkt Dokumente erzeugt. Eine Vorlage gehört zu dieser Klasse, wenn der Evaluierungsparameter document gesetzt ist, d.h. wenn der Vorlage als Parameter das zu erzeugende Dokument angegeben wurde.
Vorlagen der zweiten Klasse sind indirekt an der Erzeugung von Dokumenten beteiligt, da sie in andere Vorlagen eingebettet werden. Eine Vorlage gehört zu dieser Klasse, wenn der Evaluierungsparameter document fehlt, also kein zu erstellendes Dokument angegeben wurde.
Neben dem Evaluierungsparameter document gibt es noch den Evaluierungsparameter template, der eine Vorlage bezeichnet, in die die Werte der Instanzen der vorliegenden Vorlage eingefügt werden. Beide Parameter benennen Dateinamen innerhalb eines DokSets.
Die Evaluierungsparameter kann man als eine Art von
Instanzen ansehen, die zu Vorlagen gehören. Sie können durch die Aktion
Parameter
im Aktionsmenü einer Vorlage gesetzt (und auch wieder zurückgesetzt) werden.
Für den Evaluierungsprozess gelten die folgenden Regeln:
Der Evaluierungsprozess wertet die Vorlage X aus und erzeugt das Dokument, das im Parameter document angegeben ist. In diesem Fall besteht die Vorlage X im Wesentlichen aus Text, der Referenzen auf Instanzen enthält, die durch den Evaluierungsprozess ausgewertet werden.
Der Evaluierungsprozess wertet die mit dem Parameter template bezeichnete Vorlage aus und erzeugt ein Dokument mit dem in Parameter document angegebenen Namen. Während der Auswertung werden die Instanzen der Vorlage X eingesetzt, die in der mit dem Parameter template bezeichneten Vorlage referenziert werden. In diesem Fall besteht die Vorlage X aus Definitionen von Instanzen, die in die mit dem Parameter template bezeichnete Vorlage eingesetzt werden, bevor das neu erzeugte Dokument in den DokSet eingefügt wird.
Der Evaluierungsprozess wertet die Vorlage X nur aus, wenn sie ihrerseits in einer anderen Vorlage im Parameter template angegeben wurde (siehe Fall b oben) oder in eine andere Vorlage eingebettet wird (siehe unten). Dabei besteht die Vorlage X im wesentlichen aus Text, der Referenzen auf Instanzen enthält, die durch den Evaluierungsprozess ausgewertet werden.
Der Evaluierungsprozess wertet die Vorlage X nur aus, wenn sie in einer anderen Vorlage im Parameter template angegeben wurde (siehe Fall b oben) oder wenn sie in eine andere Vorlage eingebettet ist (siehe unten). Dabei besteht die Vorlage X aus Definitionen von Instanzen, die in die im Parameter template angegebene Vorlage eingesetzt werden.
In eine Vorlage können andere Vorlagen eingebettet werden. Dadurch kann eine Vorlage von mehreren anderen Vorlagen verwendet werden. Eine Vorlage wird mit der folgenden Notation eingebettet:
#(Name-der-Vorlage)#
Während des Evaluierungsprozesses wird zunächst die eingebettete Vorlage ausgewertet und der daraus resultierende Text eingesetzt. Solch eine Referenz auf eine eingebettete Vorlage kann auch Pfadinformationen enthalten, die die Vorlage innerhalb eines DokSets lokalisieren. Die Pfadnamen werden als relativ zum Ort derjenigen Vorlage angesehen, die die Referenz auf die eingebettete Vorlage enthält. Vorlagen, die Definitionen von Instanzen enthalten, können ebenso eingebettet werden. In diesem Fall wird während der Auswertung ebenfalls das Resultat der Auswertung der eingebetteten Vorlage für die Referenz eingesetzt.
Mit der Notation
#(Name-der-Vorlage,
Name-einer-verbundenen-Vorlage)#
kann man eine eingebettete Vorlage mit einer Vorlage verbinden, die Definitionen von Instanzen enthält. Zum Zeitpunkt der Auswertung der eingebetteten Vorlage werden zunächst die Instanzen der verbundenen Vorlage ausgewertet und in die eingebettete Vorlage eingesetzt; erst danach wird die eingebettete Vorlage ausgewertet und eingesetzt. Auf diese Weise kann man Vorlagen, die Definitionen von Instanzen enthalten, abhängig vom jeweiligen Kontext mit verschiedenen Vorlagen verbinden.
Namen von eingebetteten Vorlagen können die Jokerzeichen ‚*‘ (beliebige Zeichenkette) und ‚?‘ (beliebiges Zeichen) enthalten. In diesem Fall werden nacheinander alle Vorlagen eingebettet, die dem Muster entsprechen. Durch
#(&(content_dir);/faq/questions*.dtm,
&(template_dir);/faq.dtm)#
werden alle Vorlagen im Ordner &(content_dir);/faq, deren Name dem Muster question*.dtm entspricht, mit der Vorlage &(template_dir);/faq.dtm verbunden, ausgewertet und anschließend eingesetzt.