WebTML Referenz Home

Allgemeine Richtlinien
  • 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
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“/>
    </tml:navigator>
...das Item „Text“ bei jeder Iteration des Navigator-Tags aus einem anderen Inhaltsdokument ausgelesen wird.
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"/>
      </tml:navigator>
    </tml:range>

    Autor: <tml:meta name=“author“/> <!-- Context wieder auf index_flugrouten -->
Spezielle Funktionen für Tag-Attribute
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 }"/>
In Diesem Beispiel wird das Attribut "pagesize" aus dem Feld "ThePageSize" gelesen. Hat dieses Feld z. B. Den Wert 10, so ist der obige ausdruck identisch mit:
    <tml:foreach pagesize="10"/>
Eine weitere Notation erlaubt die Übernahme des Ergebnisses anderer Tags als Attributinhalt:
    <tml:evaluate id="itemname"/>return „Hallo User!“;</tml:evaluate>
    <tml:foreach pagesize="{tag:itemname}"/>
Dieses Beispiel führt das oben genannte TMLscript in einem separaten evaluate-Tag aus und lädt den Inhalt dann über eine spezielle Syntax in das Attribut ein. Diese Strategie ist empfehlenswert, wenn Berechnungen zu komplex werden, um sie im räumlich begrenzten Attribut übersichtlich darzustellen, oder einem die "Anführungszeichen ausgehen".
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}"/>
Die Notationen "{item:" und "{tag:" haben ggü. der Auswertung von TMLScript-Ausdrücken den Vorteil, dass sie schneller verarbeitet werden, da die Ausführung des TMLScript-Ausdrucks entfallen kann.