Tidy und FrontPage

HTML Tidy läßt sich mittels eines einfachen VBA-Makros in FrontPage verwenden.

Über Tidy

There's a similar article in English, written by Michael Suodenjoki.

HTML Tidy ist in der Lage, zahlreiche syntaktische Fehler in HTML-Dokumenten zu beseitigen und das Quelltext-Layout zu verbessern, etwa durch Leerzeilen und Einrückungen. Tidy kann auch verwendet werden, um HTML-Dokumente in XHTML zu konvertieren. (Wer XHTML in FrontPage 2003 verwenden möchte, kann FrontPage um entsprechende IntelliSense-Schemata erweitern.)

HTML-Dokumente, die mit FrontPage erstellt wurden, können eine Überarbeitung mit Tidy üblicherweise gut gebrauchen, die Bedienung über die Kommandozeile ist aber nicht jedermanns Sache. Auch gibt es unter Windows 98 keine triviale Möglichkeit, Tidy mit einem Aufruf über ganze Verzeichnisbäume laufen zu lassen. Diese Funktionalität bietet auch TidyGUI nicht. Ab Windows 2000 funktioniert allerdings ein Befehl wie for /R %f in (*.html) do tidy %f.

Ein einfaches VBA-Modul integriert nun Tidy in FrontPage. Sie können damit sowohl die aktuelle Seite als auch ein komplettes Web mit einem Mausklick von Tidy bearbeiten lassen.

Mit ASP.NET geht es noch bequemer, dort läßt sich Tidy als Filter einrichten.

Installation

Die Shell-Funktion von Visual Basic führt Programme parallel aus. Das bedeutet, daß das aufrufende Makro bereits fortgesetzt wird, wenn das aufgerufene Programm noch nicht beendet ist. Das ist hier jedoch nicht erwünscht. Microsoft bietet hierzu eine effiziente Lösung in Form einiger VBA-Prozeduren an. Sie müssen deren Quelltext in ihr Projekt kopieren oder das funktional identische Modul importieren, das ich zusammengestellt habe.

Führen Sie dann die folgenden Schritte aus:

Konfiguration von Tidy

Tidy wird idealerweise mit einer einfachen Textdatei konfiguriert. Eine solche Datei könnte etwa so aussehen:


doctype: transitional
input-encoding: win1252
output-encoding: latin1
break-before-br: yes
write-back: yes
tidy-mark: no
markup: yes
indent: auto
quote-marks: yes
quote-ampersand: yes
show-warnings: yes
keep-time: yes

Mit der Option output-xhtml: yes werden Ihre Seiten in XHTML konvertiert. Sie sollten dann Extras → Seitenoptionen → HTML-Quelltext → Bestehende HTML erhalten aktivieren. Ansonsten hat FrontPage kaum Schwierigkeiten mit XHTML. In FrontPage 2000 lassen sich allerdings keine XML-Deklarationen oder Processing Instructions verwenden.

FrontPage 2002 schreibt übrigens selbst XHTML-Code, wenn im Registry-Schlüssel HKEY_CURRENT_USER\Software\Microsoft\FrontPage\Editor\HTML der Wert XML Syntax auf 1 gesetzt ist. FrontPage-Komponenten wie bspw. Navigationsleisten geben allerdings weiterhin HTML-Code aus, außerdem funktioniert diese Einstellung in FrontPage 2003 nicht mehr richtig. Vermutlich ist es am besten, FrontPage wie gewohnt HTML ausgeben zu lassen und dann mit Tidy zu konvertieren.

Tidy hat noch weitaus mehr Optionen, sehen Sie einfach in der Dokumentation nach. Die meisten Optionen können Sie den eigenen Vorlieben bzw. Erfordernissen anpassen. Lediglich die Option writeback: yes darf nicht verändert werden.

Ein komplettes Web mit Tidy bearbeiten

Um alle HTML-Dateien in einem Web (inklusive Unterverzeichnissen) zu überprüfen, starten Sie die Prozedur Tidy_Web().

Bei einem datenträgerbasierten Web geht es sofort los. Bei einem serverbasierten Web wird beim ersten Start der Speicherordner abgefragt. Die Dateien des Webs müssen über Dateipfade erreichbar sein. Eine HTTP-Verbindung genügt für FrontPage, aber nicht für Tidy; Sie können also bspw. Ihr Web nicht direkt beim Provider mit Tidy bearbeiten. Der Name des Speicherordners wird dann in der Properties-Auflistung des aktuellen Webs gespeichert und kann ggf. über Extras → Webeinstellungen → Parameter geändert werden.

Beachten Sie, daß dieses Makro keine Sicherungskopien erstellt! Der Einsatz von Tidy kann Datenverlust verursachen.

Aktuelle Seite mit Tidy bearbeiten

Wenn Sie im FrontPage-Editor ein HTML-Dokument geöffnet haben, können Sie die Prozedur Tidy_File() aufrufen. Tidy überprüft den Quelltext und schreibt die korrigierte Version ggf. direkt ins Editor-Fenster zurück. Fehlermeldungen und Probleme können auf Wunsch angezeigt werden. Sie können die von Tidy durchgeführten Änderungen sogar über Bearbeiten → Rückgängig wieder aufheben! Bei schwerwiegenden Problemen bricht das Makro ab; der Quelltext wird in diesem Fall nicht verändert.

FAQ

Die Funktion ExecCmd ist nicht definiert!

Diese Funktion gibt es in einem Modul, das Sie importieren müssen.

Die Variable ForReading ist nicht deklariert!

Sie müssen im VBA-Editor über Extras → Verweise einen Verweis auf die „Microsoft Scripting Runtime“ einrichten.

Wieso wird keine Dokumenttyp-Deklaration geschrieben?

Tidy_File() kann nur unter FrontPage 2002 einen DOCTYPE schreiben. Unter FrontPage 2000 ist dies aus unerfindlichen Gründen nicht möglich. Für Tidy_Web() gilt diese Einschränkung nicht.