- Alle Tags beginnen mit tml:
- WebTML-Tags sind – nach XML-Regeln – beliebig verschachtelbar. Lediglich die Verwendung von WebTML-Tags in den Attributwerten anderer WebTML-Tags ist (genauso wie in XML) untersagt.
- Alle Tagnamen und Attributnamen werden klein geschrieben
- Jeder Tag hat ein „Ergebnis“. Dieses Ergebnis ist die Ausgabe des Tags an das Dokument.
- Die WebTML-Verarbeitung erfolgt von oben nach unten. Eingebettete Designs (über „tml:include“) werden an der Stelle verarbeitet, wo sie auch eingebettet wurden.
- Jeder Tag kann eine eindeutige id besitzen. Diese id kann über das id-Attribut vergeben werden. Geschieht dies nicht, hat der Tag keine id und ist nicht von anderen Tags aus referenzierbar. Die doppelte Vergebung von ids ist website-weit zu vermeiden. Jeder Tag kann erst nach seiner eigenen Ausführung referenziert werden.
Der Tag-Context ist ein Grundkonzept von WebTML. Jedes WebTML-Tag wird im Kontext eines XML-Inhaltsdokumentes ausgeführt. Dies bedeutet, dass sobald ein WebTML-Tag irgendwelche Informationen von einem Inhaltsdokument anfordert, z.B. per tml:item oder per tml:metadata, immer das Inhaltsdokument verwendet wird, dass sich im Kontext befindet. Bei jeder Browser-Anfrage ist das im Kontext befindliche Inhaltsdokument zunächst einmal genau das Dokument, welches per URL angefordert wurde. Bei der Anfrage „http:/.../home_index.html“ steht der allgemeine Tag-Context für alle Tags also zunächst auf dem Inhaltsdokument „index“ im Bereich „Home“. Dieser wird dann auch „Hauptkontext“ genannt.
Dieser Kontext kann sich jedoch im Verlauf der WebTML-Verarbeitung ändern. Einerseits gibt es ein Tag-Attribut „context“, über welches der Designer gezielt andere Inhaltsdokumente in den Kontext holen kann. Andererseits wird der Kontext automatisch von Navigatoren und foreach-Schleifen gewechselt. Diese beiden Tags selektieren eine Gruppe von Dokumenten und führen ihren Inhalt im Kontext jedes einzelnen Dokumentes einmal aus. So dass in folgendem Beispiel:
- <tml:navigator type="siblings">
- <tml:item name=“Text“/>
Kontexte vererben sich „in der Tag-Hierarchie nach unten“, d.h. der Kontext eines WebTML-Tags ist gleichzeitig auch der Kontext aller WebTML-Tags die sich in seinem Inhalt befinden (insofern diese nicht selbst ihren Kontext ändern). Dies gilt auch dann, wenn Designs per „tml:include“ eingebunden werden. Ein auf selber Ebene folgender Tag ist jedoch nicht beeinflusst.
Das Kontext-Konzept kann in folgendem Design-Beispiel veranschaulicht werden:
- <!-- Start mit dem Context aus der URL: index_flugrouten -->
Der Titel: <tml:meta name=“title“/> <!-- Context auf index_flugrouten -->
<tml:range context=“root“>
- <!-- Context auf root von index_flugrouten = index -->
<tml:navigator type="children">
- <!--- Wiederholt im Kontext aller Child-Dokumente von index-->
<tml:item name="Text"/>
Autor: <tml:meta name=“author“/> <!-- Context wieder auf index_flugrouten -->
Weiterhin möglich ist es, den Inhalt von Tag-Attributen in geschwungene Klammern einzuschließen und damit eine TMLScript-Auswertung des Attribut-Inhalts zu veranlassen. Das Ergebnis der Auswertung stellt dann den eigentlichen Attribut-Inhalt dar, z.B.:
- <tml:foreach pagesize="{ this.thepagesize }"/>
- <tml:foreach pagesize="10"/>
- <tml:evaluate id="itemname"/>return „Hallo User!“;</tml:evaluate>
<tml:foreach pagesize="{tag:itemname}"/>
Letztlich gibt es eine Notation um - ohne eine Berechnung - direkt den Inhalt eines Items in ein Attribut zu laden:
- <tml:evaluate var="_itemname"/>return „Hallo User!“;</tml:evaluate>
<tml:foreach pagesize="{item:_itemname}"/>