Pfad-Ausdrücke

Dieses Dokument enthält eine die TALES Spezifikation 1.3. 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.


Pfad-Ausdrücke

Ein Pfad-Ausdruck besteht aus einem oder mehreren Pfaden, die durch die Pipe (’|’) getrennt werden. Ein Pfad besteht aus einem oder mehreren Strings, die durch einen Schrägstrich (’/’) getrennt werden. Dabei muß der erste String ein Variablenname sein, und die restlichen Strings – die Pfadsegmente – dürfen Zahlen, Buchstaben und Leerzeichen enthalten, sowie die Zeichen Unterstrich (’_’), Minus (’-’), Punkt (’.’), Komma (’,’) und Tilde (’~’).

Die Syntax lautet:

PathExpr ::= Path [’|’ Path]*

Path ::= variable[‘/’URL_Segment]*

variable ::= Name

Ein Beispiel:

request/cookies/oatmeal

nothing

here/some-file 2001_02.html.tar.gz/foo

root/to/branch | default

When ein TALES Pfadausdruck ausgewertet wird, wird versucht, die Pfade von links nach rechts abzuarbeiten bis entweder ein Pfad gültig ist oder keine Pfade mehr vorhanden sind. Um einen Pfad zu durchlaufen, wird erst einmal das Objekt, das an erster Stelle steht, eingelesen. Für jedes Pfadsegment wird dann das dadurch benannte Unterobjekt geladen. Wurde ein Pfad erfolgreich abgearbeitet, ist das gegenwärtig aktuelle Objekt das Ergebnis des Ausdrucks. Ist das Objekt ausführbar – wie eine Funktion oder eine Klasse – so wird es ausgeführt. Die Semantik der Pfadtraversierung und was ausführbar bedeutet ist implementierungsspezifisch.

Misslingt ein Traversierungsschritt, wird die Auswertung sofort beim nächsten Pfad fortgesetzt. Gibt es keinen weiteren Pfad, ist das Ergebnis ein Fehler.

Da jeder Pfad mit einem Variablennamen beginnen muß, benötigt man eine Grundmenge von Objekten, über die andere Objekte lokalisiert und angesprochen werden können. Page Templates definieren die unten aufgelisteten Variablennamen. Da Variablen zuerst lokal, dann global und dann in dieser Liste gesucht werden, verhalten sich die aufgelisteten Variablen wie eingebaute Standardvariablen in Python. Sie sind jederzeit verfügbar, können aber durch die Deklaration globaler oder lokaler Variablen ausgeblendet werden. Die Variablen können jedoch jederzeit angesprochen werden, wenn man dem Namen das Wort ’CONTEXTS’ voranstellt, also beispielsweise ’CONTEXTS/root’ oder ’CONTEXTS/nothing’.