Template Attribute Language Expression Syntax
Die Template Attribute Language Expression Syntax (TALES) beschreibt die Syntax für die Auswertung der von der Template Attribute Language (TAL) und Macro Expansion Template Attribute Language (METAL) für Attributwerte verwendeten Ausdrücke. Die Möglichkeit, hierfür eine andere Syntax als TALES zu verwenden, ist ausdrücklich vorgesehen; in der Regel wird TALES jedoch nicht ersetzt, sondern erweitert.
Der Webanwendungsserver Zope erweitert die TALES-Spezifikation im Rahmen der Zope Page Templates.
Überblick
TALES stellt mehrere Methoden zur Verfügung, Ausdrücke zu formulieren, die in TAL- und METAL-Attributen verwendet werden können und durch ein (optionales) Präfix unterschieden werden:
Ausdrucksarten
- Pfadausdruck
- Präfix
path:(optional, und deshalb fast immer fortgelassen): zum Zugriff auf strukturierte Variablen, Dateisystemobjekte, Makros (METAL) usw. - Stringausdruck
- Präfix
string:; erlaubt Pfadausdrücke in${...} - Logische Negation
- Präfix
not:; wertet den restlichen Ausdruck aus und gibt seine logische Negation zurück - Python-Ausdruck
- Präfix
python:; wenn implementiert, gibt den Wert des folgenden Python-Ausdrucks zurück. Dies findet üblicherweise nur Anwendung, wenn Pfadausdrücke nicht ausreichen, z. B. wenn eine Funktion mit bestimmten Argumenten aufgerufen werden muss. - Unterdrückung des Quotings
- Das vorangestellte Schlüsselwort
structure(ohne Doppelpunkt) unterdrückt das sonst automatisch angewendete HTML-Quoting, um beispielsweise ein komplettes HTML-Element zu erzeugen.
Eingebaute Namen
- nothing
- ein „Nicht-Wert“, der keine Zeichenkette sein darf, z. B. None (Programmiersprache Python), void, Nil, oder NULL.
- options
- die (benannten) Argumente, die dem Template übergeben wurden
- repeat
- zum Zugriff auf Schleifenvariablen wie index, number usw.
Diese Namen werden üblicherweise noch um weitere ergänzt, siehe Zope Page Templates.
Beispiele
Einfacher Pfadausdruck zum Zugriff auf ein Makro
<metal:form use-macro="location/page/MACROS/myform"/>
Hier sei beispielsweise location das Verzeichnis, das eine Vorlagendatei page enthält, in der wiederum das Makro myform definiert wurde. In Zope Page Templates würde hier anstelle von location z. B. here (als Ausgangspunkt der Akquisition zur Suche nach page) oder container stehen.
Schleife mit Pfad-, Python- und Stringausdrücken
<tr tal:repeat="item python:({'key': 'eins'}, {'key': 'zwei'})"> <td tal:content="repeat/item/number">99</td> <td tal:content="string:Zeile ${item/key}">Zeile 99</td> </tr>
Ausgabe:
<tr> <td>1</td> <td>Zeile eins</td> </tr> <tr> <td>2</td> <td>Zeile zwei</td> </tr>
Erläuterungen:
- das
tal:repeat-Attribut erzeugt eine Variableitemund, mit Hilfe des Python-Ausdrucks, eine Sequenz von Dictionarys, die verwendet wird, um mehrere HTML-Tabellenzeilen zu erzeugen - die speziellen Schleifenvariablen (z. B. number) für
itemwerden über die spezielle, vom TALES-Standard geforderte Variablerepeatzur Verfügung gestellt - Pfadausdrücke können auch innerhalb von String-Ausdrücken verwendet werden
Logische Negation und TAL-Elemente
<div tal:define="view_ok context/is_view_ok"> <tal:if condition="view_ok"> ... </tal:if> <tal:else condition="not:view_ok"> ... </tal:else> </div>
is_view_ok könnte hier eine Methode sein, die aus dem context aufgerufen wird und die Leseberechtigung des Benutzers überprüft. Im „Else-Zweig“ (der syntaktisch nichts anderes ist als der „If-Zweig“; if und else sind hier frei gewählte Namen, die sogar hätten gleich sein dürfen) wird die logische Bedingung des If-Zweigs umgekehrt, sodass nur einer der beiden ausgeführt wird.
Siehe auch
Weblinks
- TALES-Spezifikation, Version 1.3
- <templatestyles src="Webarchiv/styles.css" />{{#if:20120909105154
| {{#ifeq: 20120909105154 | *
| {{#if: Schleifenvariablen | {{#invoke:WLink|getEscapedTitle|Schleifenvariablen}} | {{#invoke:Webarchiv|getdomain|http://wiki.zope.org/ZPT/RepeatVariable}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20120909105154}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Schleifenvariablen | {{#invoke:WLink|getEscapedTitle|Schleifenvariablen}} | {{#invoke:Webarchiv|getdomain|http://wiki.zope.org/ZPT/RepeatVariable}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20120909105154}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Schleifenvariablen | {{#invoke:WLink|getEscapedTitle|Schleifenvariablen}} | {{#invoke:Webarchiv|getdomain|http://wiki.zope.org/ZPT/RepeatVariable}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Schleifenvariablen | {{#invoke:WLink|getEscapedTitle|Schleifenvariablen}} | {{#invoke:Webarchiv|getdomain|http://wiki.zope.org/ZPT/RepeatVariable}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Schleifenvariablen | {{#invoke:WLink|getEscapedTitle|Schleifenvariablen}} | {{#invoke:Webarchiv|getdomain|http://wiki.zope.org/ZPT/RepeatVariable}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Schleifenvariablen | {{#invoke:WLink|getEscapedTitle|Schleifenvariablen}} | {{#invoke:Webarchiv|getdomain|http://wiki.zope.org/ZPT/RepeatVariable}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20120909105154|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://wiki.zope.org/ZPT/RepeatVariable}}
|| {{#if: || }}
}}{{#if: Schleifenvariablen
| {{#if: {{#invoke:WLink|isBracketedLink|Schleifenvariablen}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://wiki.zope.org/ZPT/RepeatVariable%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://wiki.zope.org/ZPT/RepeatVariable%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://wiki.zope.org/ZPT/RepeatVariable }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}
- TALES Overview (im Zope-Book)
- <templatestyles src="Webarchiv/styles.css" />{{#if:20110914055131
| {{#ifeq: 20110914055131 | *
| {{#if: TALES-Seite im Zope-3-Wiki | {{#invoke:WLink|getEscapedTitle|TALES-Seite im Zope-3-Wiki}} | {{#invoke:Webarchiv|getdomain|http://zope3.mpg.de/cgi-bin/twiki/view/Zope/TaLes}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20110914055131}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: TALES-Seite im Zope-3-Wiki | {{#invoke:WLink|getEscapedTitle|TALES-Seite im Zope-3-Wiki}} | {{#invoke:Webarchiv|getdomain|http://zope3.mpg.de/cgi-bin/twiki/view/Zope/TaLes}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20110914055131}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: TALES-Seite im Zope-3-Wiki | {{#invoke:WLink|getEscapedTitle|TALES-Seite im Zope-3-Wiki}} | {{#invoke:Webarchiv|getdomain|http://zope3.mpg.de/cgi-bin/twiki/view/Zope/TaLes}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: TALES-Seite im Zope-3-Wiki | {{#invoke:WLink|getEscapedTitle|TALES-Seite im Zope-3-Wiki}} | {{#invoke:Webarchiv|getdomain|http://zope3.mpg.de/cgi-bin/twiki/view/Zope/TaLes}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: TALES-Seite im Zope-3-Wiki | {{#invoke:WLink|getEscapedTitle|TALES-Seite im Zope-3-Wiki}} | {{#invoke:Webarchiv|getdomain|http://zope3.mpg.de/cgi-bin/twiki/view/Zope/TaLes}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: TALES-Seite im Zope-3-Wiki | {{#invoke:WLink|getEscapedTitle|TALES-Seite im Zope-3-Wiki}} | {{#invoke:Webarchiv|getdomain|http://zope3.mpg.de/cgi-bin/twiki/view/Zope/TaLes}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20110914055131|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://zope3.mpg.de/cgi-bin/twiki/view/Zope/TaLes}}
|| {{#if: || }}
}}{{#if: TALES-Seite im Zope-3-Wiki
| {{#if: {{#invoke:WLink|isBracketedLink|TALES-Seite im Zope-3-Wiki}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://zope3.mpg.de/cgi-bin/twiki/view/Zope/TaLes%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://zope3.mpg.de/cgi-bin/twiki/view/Zope/TaLes%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://zope3.mpg.de/cgi-bin/twiki/view/Zope/TaLes }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}