Jeder WebTML-Tag wird im Kontext eines Inhaltsdokumentes ausgeführt. Dies heisst, dass Funktionen zur Abfrage von Content-Daten dieses Inhaltsdokument benutzen um die Daten abzufragen, z.B. <tml:item>.
Grundsätzlich haben WebTML-Tags zunächst das Inhaltsdokument im Kontext, welches in der URL des aktuell verarbeiteten Requests per Content-Key oder eindeutigen Namen adressiert wurde. Diesen Kontext nennt man auch den Hauptkontext dieses Requests.
Es gibt jedoch diverse Funktionalitäten um innerhalb der WebTML-Verarbetiung das im Kontext befindliche Dokument gezielt zu ändern. Man spricht hier vom Kontextwechsel. Hier ist zunächst das Attribut context zu nennen, welches für alle WebTML-Tags benutzt werden kann. Über eine Pfadsyntax kann der Designer hier bestimmte Inhaltsdokumente ansteuern die er im Kontext des aktuellen Tags haben möchte:
<tml:item context="name:home" name="body"/>
In diesem Beispiel wird das Item "body" abgerufen, und zwar gezielt vom Inhaltsdokument dessen eindeutiger Name "home" ist.
Desweiteren arbeiten WebTML-Navigatoren (z.B. <tml:navigator>) so, dass sie die Dokumente, die im Navigator angezeigt werden sollen, nacheinander in den Kontext bewegen. Der Inhalt des Navigator-Tags wird je einmal im Kontext jedes Inhaltsdokumentes ausgeführt. Identisch arbeitet auch der Iterations-Tag <tml:foreach> wenn er über Inhaltsdokumente iteriert.
Der Dokumentenkontext eines WebTML-Tags wird an jene Tags vererbt die sich in seinem Inhalt befinden. Wechselt man beispielsweise den Kontext des Tags <tml:range>, so arbeiten die Tags die er umschliesst im selben Kontext (es sei denn sie würden selbst wieder explizit den Kontext wechseln).
<tml:range context="name:home">
<tml:item name="body"/>
</tml:range>
Der Code dieses Beispiels hat denselben Effekt wie im vorherigen Beispiel. Durch die Kontextvererbung wird auch dieser Item-Tag im Kontext des Dokumentes "home" ausgeführt.
Ein Sonderfall ist die Verwendung des Dummy-Kontextes. Dies ist ein virtueller Kontext der keinem tatsächlichen Inhaltsdokument zugeordnet ist und der ein leeres Dokument simuliert. Dieses simulierte Dokument kann nicht gespeichert werden.
Der Dummy-Kontext kommt z.B. in folgenden Situationen zum Einsatz:
- In einem "kontextlosen" WebTML-Request, bei welchem in der URL kein Inhaltsdokument adressiert wird
- Nach dem Kontextwechsel in eine andere Datenbank per Kontextausdruck "db:dbkey"
- Beim Aufruf einer WebTML-Aktion deren Aktionskontext nicht wiederhergestellt werden kann


WebTML