www. Myselfine .de    Index

About Me

Fotos

Just For You

Guestbook

Kontakt

Utilities

Overview

WebCompile

My-Brace

Eladine

WebCompile

Dies ist eines meiner neuesten Werke, ausschließlich gemacht, um diese Seiten zu erstellen. Es ist ein Python-Skript, dem man eine Reihe von HTML-Fragmenten gibt, die in einer hierarchischen Verzeichnisstruktur liegen, eine Menge an Vor- und Nachcolspannen und das "kompiliert" daraus eine Menge an Seiten die ein einheitliches Aussehen tragen, ohne daß man sich die Finger wundtippt.

Wie funktioniert das?

  1. Da WebCompile ein Pythonskript ist, muß zuerst Python installiert werden (freier Download von http://www.python.org für alle gängigen Betriebssysteme)

  2. Man sollte eine zunächst leere Verzeichnisstruktur anlegen, die folgendermaßen aussieht:

    ./                             
    WebCompile.py
    in/
    head.tmp
    foot.tmp
    index.html
    seite1.html
    subdir1/
    head.tmp
    foot.tmp
    index.html
    bild.jpg
    out/

    Dabei können mehrere Unterverzeichnisse gebildet werden, die beliebig tief verschachtelt sein können. In jedem Unterverzeichnis müssen die Dateien "head.tmp" und "foot.tmp" vorhanden sein (sie dürfen aber leer sein).

  3. Alle HTML-Dokumente im in-Verzeichnis sind eigentlich nur HTML-Fragmente. Sie beinhalten nur die Informationen, die nur auf dieser Seite zu sehen sind. HTML-Code für Banner, Überschriften und Navigationsleisten wird auf diverse head.tmp und foot.tmp Dateien verteilt. Bei einer verschachtelten Verzeichnisstruktur werden die *.tmp-Dateien hintereinandergehängt. Bsp: Bei der Verzeichnisstruktur

    ./in/                             
    head.tmp /* head main*/
    foot.tmp /* foot main*/
    subdir1
    head.tmp /* head main.1 */
    foot.tmp /* foot main.1 */
    subdirA
    head.tmp /* head main.1.A */
    foot.tmp /* foot main.1.A */
    index.html

    Würde WebCompile für ./out/subdir1/subdirA/index.html eine Datei erstellen, die eine Aneinanderreihung folgender Dateiinhalte ist:
    ./in/head.tmp
    ./in/subdir1/head.tmp
    ./in/subdir1/subdirA/head.tmp
    ./in/subdir1/subdirA/index.html
    ./in/subdir1/subdirA/foot.tmp
    ./in/subdir1/foot.tmp
    ./in/foot.tmp

  4. Nicht-HTML Dateien (Jpeg, Gif, Exe, ...) werden an die entsprechende Stelle im out-Verzeichnis kopiert.
    Dateien, die head.tmp oder foot.tmp heissen, werden nicht kopiert.

  5. Aus organisatorischen Gründen empfiehlt es sich, in diversen *.tmp Dateien absolute Pfade zu verwenden (z.B. <a href="/subdir1/index.html">) jetzt besitzt nicht jeder Webdesigner einen eigenen Webserver sondern häufig nur ein Unterverzeichnis (z.B. http://www.rz.uni-frankfurt.de/~ldietz/). WebCompile löst das Problem, indem im WebCompile.py relativ weit oben eine Basis-Url angegeben wird (z.B. baseurl = "http://www.rz.uni-frankfurt.de/~ldietz/") und WebCompile setzt diese Adresse automatisch alle Verweise, die mit "/" beginnen. (In dem Beispiel würde man dann <a href="http://www.rz.uni-frankfurt.de/~ldietz/subdir1/index.html"> erhalten.)

  6. Für HTML-Seiten ist es sinnvoll wenn im <head> ein Titel gesetzt ist. Hier wird sich der Header meist obersten head.tmp befinden. Wie kann man jetzt einen individuellen Titel setzen? An die entsprechende Stelle im Header wird der Platzhalter WebCompile gesetzt (also <head><title>WebCompile</title></head>) Steht in der ersten Zeile einer HTML-Datei mit einem Kommentar (z.B. <!-- Meine Erinnerungen -->), so interpretiert WebCompile diesen automatisch als Titel für die Datei. (Wichtig: die Leerzeichen vor den Minussen sind unerläßlich, werden aber nicht in den Titel aufgenommen!) (In dem Beispiel würde das Ergebnis folgendermaßen aussehen: <head><title>Meine Erinnerungen</title></head>

  7. Manchmal möchte man verschachtelte Titel, die auch die Verzeichnisstruktur repräsentieren darstellen. Das funktiniert analog zu den normalen Titeln, nur muß jetzt auch ein Titelkommentar in alle head.tmp Dateien eingefügt werden, der Platzhalter heißt dann www. Myselfine .de - Utilities - WebCompile. Das Ergebnis sieht dann etwa so aus: MainHead - Subdir1 - Subdir2 - Meiner Erinnerungen

  8. Enthalten die *.tmp-Dateien eine Navigationsleiste, dann verweisen Links in einem generierten Dokument, auf das Dokument selbst. Das ist eine unschöne Sache, deswegen entfernt WebCompile diese Links. (Also aus <a href="/index.html">Blubbblubb</a> wird Blubblubb) Dies funktioniert aber nur, wenn der komplette a-Tag innerhalb einer Zeile steht.

  9. Möchte man, daß Verweise auf ein index.html in einem darüberliegendem Verzeichnis ebenfalls gelöscht werden, sollte man in der Navigationsleiste nur das Verzeichnis angeben (ohne das index.html). Eigentlich alle Webserver wählen dann automatisch das index.html aus diesem Verzeichnis. Möchte man, daß solche Verweise nicht entfernt werden, hängt man das index.html wieder an.
    Beispiel: es soll die Datei .out/subdir1/subdirA/test.html generiert werden.
    Die Datei würde Verweise auf /subdir1/subdirA/test.html, /subdir1/subdirA/ und /subdir1/index.html enthalten.
    WebCompile würde die <a>-Tags, die /subdir1/subdirA/test.html und /subdir1/subdirA/ enthalten löschen. Der Verweis auf /subdir1/index.html würde erhalten bleiben.

  10. Wird jetzt WebCompile.py aus dem Verzeichnis "./" heraus aufgerufen, wird eine äquivalente Verzeichnisstruktur im out-Verzeichnis erstellt, entsprechende HTML-Dateien dort erstelllt und sonstige Dateien rüberkopiert. Natürlich werden Umlaute wie ä, ö, ü, ß automatisch in ihre HTML-Äquivalente &auml; &ouml; &uuml; und &szlig; ersetzt.

Download

WebCompile.py (nur das Python-Script)

webcompile.zip (Python-Script mit dieser Anleitung)

Python-Distribution

Known Bugs