Mixing- und Matching-Anweisungen

Dieses Dokument beschreibt die fortgeschrittenen Konzepte von Page Templates. Das 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.


„Mixing“- und „Matching“-Anweisungen

Wie wir bereits im Beispiel-Template gesehen haben, kann mehr als eine TAL-Anweisung in einem Tag stehen. Allerdings sollte man sich dreier Einschränkungen bewußt sein.

  1. Es darf nur jeweils eine Anweisung eines Anweisungstyps in einem einzelnen Tag verwendet werden. Da HTML nicht die mehrfache Verwendung eines Attributes mit demselben Namen erlaubt, ist beispielsweise die mehrfache Verwendung von ’tal:define’ nicht erlaubt.
  2. Die beiden Anweisungen ’tal:content’ und ’tal:replace’ können nicht im selben Tag verwendet werden, da sich Ihre Funktionalitäten überschneiden bzw. miteinander in Konflikt stehen.
  3. Die Reihenfolge, in der die TAL-Attribute in einem Tag stehen, beeinflußt nicht die Ausführungsreihenfolge. Ungeachtet der Anordnung werden die Attribute immer in folgender, feststehender Reihenfolge ausgewertet: define, condition, repeat, content/replace, attributes

Um diese Reihenfolge zu umgehen, können weitere Tags hinzugefügt und die TAL-Attribute entsprechend darauf verteilt werden. Falls es kein passendes Tag gibt, kann einfach oder

verwendet werden.

Soll beispielsweise eine Variable für jede Wiederholung eines Paragraphen definiert werden, so kann das ’tal:define’-Attribut nicht in das selbe Tag geschrieben werden wie die ’tal:repeat’-Anweisung, da die Definition vor der Wiederholung stattfinden würde. Stattdessen würde man eher etwas schreiben wie:

<div tal:repeat=“p phrases“>

<p tal:define=”n repeat/p/number”>

Phrase Nummer <span tal:replace=”n”>1</span> is

“<span tal:replace=”p”>Phrase</span>”.

</p>

</div>

oder

<p tal:repeat=”p phrases”>

<span tal:define=”n repeat/n/number”>

Phrase Nummer <span tal:replace=”n”>1</span> is

“<span tal:replace?”p”>Phrase</span>”.

</span>

</p>