|
||||||||||||||||||||||||||||||||||||||||
| ISBN: 3936400040 ISBN: 3936400040 ISBN: 3936400040 ISBN: 3936400040 | ||||||||||||||||||||||||||||||||||||||||
|
|
Wir empfehlen: | |||||||||||||||||||||||||||||||||||||||
Anhang[ Inhaltsverzeichnis ] ... [ zurück ] DTMLvar-Tag
Syntax von var-Tag-Ausdrücken Mit Hilfe von Tag-Attributen können auch Python-Ausdrücke benutzt werden. Zum Beispiel kann ein Ausdruck benutzt werden, um ein Skript "getNilpferd" mit exakten Argumenten aufzurufen: <dtml-var expr="getNilpferd('mit einem großen Netz')"> Oder es können auch einfach Bedingungen getestet werden: <dtml-if expr="foo < bar"> Foo ist weniger als bar. </dtml-if> Der Umgang mit Python-Ausdrücken kann haarig sein. Ein verbreiteter Fehler ist die Verwechslung von Ausdrücken mit grundsätzlicher Tag-Syntax. Zum Beispiel können <dtml-var objectValues> und <dtml-var expr="objectValues"> zwei völlig verschiedene Ergebnisse liefern. Im ersten Beispiel wird die Variable automatisch interpretiert. Ist die Variable ein Skript, wird es mit den entsprechenden Argumenten aufgerufen. Im zweiten Beispiel wird nur versucht, das Skript einzufügen, mit einem Ergebnis-String wie <Python Method object at 8681298> Um ein Skript über einen Ausdruck aufzurufen, muss die Standard-Aufruf-Syntax von Python mit Klammern benutzt werden: <dtml-var expr="objectValues()"> Beim Benutzen von Python-Ausdrücken sollte Klarheit darüber bestehen, was für eine Art Variable eingesetzt wird und die passende Python-Syntax benutzt werden, damit die Variable entsprechend interpretiert werden kann. Der Teil "expr=" in einem Ausdrucks-Tag für eine Variable kann, sollte aber nicht weggelassen werden, weil dabei folgendes verwechselt werden könnte: <dtml-var aName> mit: <dtml-var "aName"> mit völlig verschiedenen Resultaten. Diese "Abkürzungen" wurden vor langer Zeit in DTML eingebaut, und diese subtilen Syntaxunterschiede können zu Schwierigkeiten führen. Ausführlicheres zum Thema Python-Skripting findet sich im Abschnitt "Python/Perl" und zu Pythons Syntax im Python-Tutorial unter http://www.Python.org. in-Tag Beispiel: Das folgende Beispiel iteriert über die Inhalte eines Ordners und zeigt in einer Tabelle einen Link zu jedem gefundenen "File"-Objekt an, wobei jede zweite Tabellenzeile in einer anderen Farbe dargestellt wird (durch je ein tr-Tag mit entweder grauem oder ohne Hintergrund): <dtml-var standard_html_header> <table> <dtml-in expr="objectValues('File')"> <dtml-if sequence-even> <tr bgcolor="grey"> <dtml-else> <tr> </dtml-if> <td><a href="&dtml-absolute_url;"><dtml-var title_or_id></a></td> </tr> </dtml-in> </table> <dtml-var standard_html_footer> Dieser Code zeigt die folgende Datei-Liste:
Abb. Dateilistung mit wechselnden Zeilenfarben Hier wird ein if-Tag benutzt, um gegen eine spezielle Variable zu prüfen, die sequence-even heißt. Wenn die aktuelle Iterationszahl ungerade ist, gilt sie als unwahr. Innerhalb des in-Blocks wird über ein Attribut das Zope-API-Skript "objectValues" aufgerufen (<dtml-in expr="objectValues('File')">), welches eine Sequenz von Objekten im aktuellen Ordner zurückgibt, die bestimmte Kriterien erfüllen. In diesem Fall müssen die Objekte Dateien (Files) sein. Anstelle des Skriptaufrufes könnte z.B. auch ein SQL-Skript aufgerufen werden: <dtml-in SQL-Query>, wobei nicht spezifiziert werden muss, dass eine Datenbank abgefragt wird und auch nicht, wo sich die Argumente zur Datenbankabfrage befinden. Es muss lediglich angegeben werden, welches Objekt aufgerufen werden soll, und dieses wird selbst die Weise des Aufrufs und die zu übergebenden Argumente herausfinden. Wird das objectValues-Skript durch ein anderes Objekt wie etwa ein SQL-Skript, ein ZCatalog oder ein anderes DTML-Skript ausgetauscht, müssen die Formatierungsvorgaben nicht geändert werden. Diese Fähigkeit der Datenformatierung erlaubt die Änderung von Geschäftslogik ohne Änderung der Präsentation. Es gibt viele spezielle Variablen, die ein in-Tag definieren kann. Zu den gebräuchlichsten gehören: sequence-item, sequence-index, sequence-number, sequence-start und -end. if-Tag Beispiels-Bedingung: objectValues: Wahr, wenn die Variable objectValues existiert und wahr ist, d.h. wenn nach Auffinden und Auswertens objectValues nicht 0, Nichts, eine leere Sequenz oder ein leerer String ist. Genau wie beim var-Tag kann hier Namens- und Ausdrucks-Syntax verwendet werden. Hier sind einige Bedingungen als DTML-Ausdrücke dargestellt:
Das if-Tag ist ein Block-Tag,
und der Block innerhalb des if-Tags wird ausgeführt, wenn die
Bedingung wahr ist. if-Tags können beliebig tief verschachtelt
werden. [ Inhaltsverzeichnis ] ... [ zurück ] |
|
|||||||||||||||||||||||||||||||||||||||
![]() | ||||||||||||||||||||||||||||||||||||||||
|
Back to the topic site: StudyPaper.com/Startseite/Computer/Informatik/Programmieren External Links to this site are permitted without prior consent. | ||||||||||||||||||||||||||||||||||||||||
| Home | deutsch | Set bookmark | Send a friend a link | Copyright © | Impressum | ||||||||||||||||||||||||||||||||||||||||