Variablen definieren

Dieses Dokument beschreibt die Erstellung von Page Templates. Dieses Dokument wurde mit Microsoft Word erstellt und mit WordXML automatisch in XML , HTML und HTMLHelp (.chm) konvertiert. Mit WordXML, dem Word-PlugIn der struktur AG, erweitern Sie Microsoft Word zu einem leistungsfähigen XML-Werkzeug.


Variablen definieren

Das Beispiel-Template wird immer mindestens eine Zeile anzeigen, da das Template selbst eines der aufgelisteten Objekte ist. Unter anderen Umständen will man vielleicht eine spezielle Behandlung für die Möglichkeit einführen, daß die Tabelle leer ist. Angenommen, die Tabelle soll überhaupt nicht angezeigt werden, falls sie leer ist. Dies kann dadurch erreicht werden, daß die ’tal:condition’-Anweisung zur Tabelle hinzugefügt wird.

<table border=“1“ width=“100%“ tal:condition=“container/objectValues“>

Sollte keine Objekte vorhanden sein, so wird kein Teil der Tabelle mit ausgegeben. Sind Objekte vorhanden, dann wird der Ausdruck ’container/objectValues’ zweimal ausgewertet. Dies ist etwas ineffizient. Ebenso muß man darauf achten, daß im Falle einer Änderung des Ausdrucks der Ausdruck an beiden Stellen im Code geändert werden muß.

Um dieses Problem zu vermeiden, kann eine Variable deklariert werden, die den Inhalt der Liste enthält. Die Variable kann dann sowohl in ’tal:condition’ als auch in ’tal:repeat’ verwendet werden. Wir verändern die ersten paar Zeilen wie folgt:

<table border =“1= width=“100%“ tal:define=“items container/objectValues“ tal:condition=“items“>

<tr>

<th>#</th><th>Id</th><th>Meta Typ</th><th>Titel</th>

</tr>

<tbody tal:repeat=”item items”>

Die ’tal:define’-Anweisung erzeugt die Variable ’items’, die innerhalb des gesamten <table>-Tags verwendet werden kann. Beachten Sie auch, daß man sehr wohl zwei TAL-Attribute in einem Tag verwenden kann. Tatsächlich kann man so viele verwenden wie man will. Sie werden der Reihe nach ausgewertet. Zum Beispiel deklariert das erste Attribut eine Variable und weist ihr einen Wert zu, das zweite Attribute wertet die Variable in einer Bedingung aus und prüft auf wahr oder falsch.

Nehmen wir nun an, daß wir anstatt die leere Tabelle einfach auszulassen eine Meldung ausgeben wollen. Um das zu tun, schreiben wir folgendes über die Tabelle:

<h4 tal:condition=“not:container/objectValues”>Es gibt keine Einzelposten</h4>

Die ’items’-Variable kann hier nicht verwendet werden, da Sie noch gar nicht definiert ist. Wird die Variablendeklaration in das <h4>-Tag verlagert, so kann es in der Tabelle nicht mehr verwendet werden, da es dann eine lokale Variable für das <h4>-Tag ist. Man kann die Definition in ein Tag einschließen, welches sowohl die Überschrift als auch die Tabelle klammert, aber es gibt eine einfachere Lösung. Durch das Voranstellen des Schlüsselworts ’global’ vor den Variablennamen erlangt die Variable Gültigkeit ab der Deklaration bis zum Ende des Templates. Ein Beispiel:

<h4 tal:define=“global items container/objectValues” tal:condition=”not:items”>

There Are No Items

</h4>

<table border=”1” width=”100%” tal:condition=”items”>

</table>

Das ’not:’ in der ersten ’tal:condition’-Anweisung ist ein Präfix, das jedem Ausdruck vorangestellt werden kann. Ist der Ausdruck wahr, dann ist ’not:’ falsch und umgekehrt.