Installation


 ... [ xml2html-Tutorial ] ... [ << Einleitung ] ... [ Makros >> ] ...    ... [ Referenz ] ... 




Übersicht: Installation

  Download und Installationsvoraussetzungen
  Aufruf des xml2html-Skriptes



Download und Installationsvoraussetzungen

Das xml2html-Tool wird als ein gepacktes tar-Archiv (.tar.gz) distributiert, welches auf dem Server der FH-Wedel zum Download bereit liegt.
Zum Installieren des Tools muss das Archiv in ein beliebiges Verzeichnis entpackt werden. Soll das Tool direkt über einen Webserver, wie z.B. den Apache, betrieben werden, sollte das tar-Archiv dann irgendwo unterhalb des Document-Root des Webservers entpackt liegen. Dem Webserver wird so der direkte Zugriff auf das Tool ermöglicht. Der Einsatz eines symbolischen Links ist hier natürlich auch möglich.
Bei einer Standard SUSE-Linux Installation, auf die sich im Folgenden bezogen wird, ist der Document-Root Pfad auf "/usr/local/htdocs" gesetzt. Andere Unix-Distributionen verwenden ähnliche Pfade, die aber in den entsprechenden Manuals der Distributionen nachgeschlagen werden können.

Entpackt wird das Archiv mit dem Befehl tar:

tobyto@linux:~/public_html > tar -xzvf xml2html.tar.gz

Dabei wird ein Verzeichnis xml2html/ mit folgendem Inhalt erstellt:

-rw-r--r--    1 tobyto   users        2247 Jun 27 13:01 Makefile
drwxr-xr-x    2 tobyto   users        4096 Jun 27 13:03 db
drwxr-xr-x    2 tobyto   users        4096 Jun 27 13:03 cgi-bin
drwxr-xr-x    3 tobyto   users        4096 Jun 27 13:04 icons
drwxr-xr-x    2 tobyto   users        4096 Jun 27 12:39 static_html
drwxr-xr-x    3 tobyto   users        4096 Jun 14 12:40 styles
drwxr-xr-x    2 tobyto   users        4096 Jun 18 18:52 tcl
drwxr-xr-x    2 tobyto   users        4096 Jun 27 12:57 xml

Mit Hilfe des Makefiles lässt sich dieses Tutorium in einer statischen Version erzeugen:

tobyto@linux:~/public_html/xml2html >make static

Die statischen Dateien werden dabei in das Verzeichnis static_html/ abgelegt.
In den Verzeichnissen db/, icons/, styles/, tcl/, xml/ befinden sich alle notwendigen Quellen für das Tutorium. Auf den Inhalt der verschiedenen Verzeichnisse wird noch im weiteren Verlauf genauer eingegangen. Das Verzeichnis cgi-bin/ beinhaltet das eigentlich xml2html-Tool.


TCL
Um xml2html verwenden zu können, muss eine lauffähige TCL-Version 8 oder neuer auf dem System installiert sein. Die meisten neueren Unix-Distributionen enthalten bereits die erforderliche TCL-Shell (tclsh). Sollte TCL auf dem System nicht vorhanden oder nicht in der richtigen Version installiert sein, kann eine aktuelle Version bei Skriptics heruntergeladen werden. Ausserdem ist es erforderlich, dass die TCL-Shell unter /usr/bin/tclsh installiert ist, wenn nicht ist das Setzen eines symbolischen Links in dieses Verzeichnis erforderlich:

tobyto@linux:~ > ln -s /usr/bin/tclsh /tcl_home_dir/tclsh8.x
 // Root-Rechte erforderlich

Zum Testen, welche TCL-Version installiert ist, können folgende Schritte verwendet werden:
1. Schritt: Aufruf von

tobyto@linux:~ > which tclsh

Man erhält bei installierter TCL-Shell (tclsh) den entsprechenden Pfad :

/usr/bin/tclsh
 // Pfad ist korrekt, kein symbolischer Link erforderlich

2. Schritt: Bestimmen der vorhandenen TCL-Version

tobyto@linux:~ > tclsh 
% info tclversion
8.3
% exit

 // TCL-Shell starten
 // Version abfragen
 // TCL liegt in der Version 8.3 vor
 // TCL-Shell beenden





Aufruf des xml2html-Skriptes

Der Aufruf von xml2html ist prinzipiell auf drei Arten möglich: entweder per Kommandozeile, mit einem Makefile oder direkt über einen Webserver.


1. Aufruf über die Kommandozeile
Soll xml2html auf Kommandozeile verwendet werden, bietet es sich an, das Skript mit in die PATH-Umgebungsvariable aufzunehmen. Dies kann entweder direkt in einer geöffneten Shell (z.B. bash-shell) passieren:

export PATH=$PATH:/pfad_zum_skript_verzeichnis/cgi-bin

Diese Änderung ist allerdings eine temporäre Änderung und hat nur Einfluss auf die aktuell geöffnete Shell. Soll der Pfad dem System dauerhaft hinzugefügt werden, ist die Aufnahme des export-Befehls in eine Shell-Konfigurationsdatei notwendig. Die Dateien .profile und .bashrc sind zwei Beispiele für diese Konfigurations-Dateien, die Dateien können aber von System zu System und verwendeter Shell einen unterschiedlichen Namen besitzen. Eine weitere Möglichkeit, das Tool einfach auf Kommandozeile anzusprechen, besteht darin, xml2html entweder direkt in eines der Standardverzeichnis für Programme (z.B. /usr/local/bin) zu kopieren, oder aus diesem Verzeichnis einen symbolischen Link auf den aktuellen Ort zu setzen, z.B.:

tobyto@linux:~/public_html > ln -s /pfad_zum_skript_verzeichnis /cgi-bin/usr/local/bin

Der einfache Aufruf von xml2html:

tobyto@linux:~/public_html > xml2html

liefert nach erfolgreicher Installation und Aufnahme in die Umgebungsvariable die Ausgabe:

tobyto@linux:~/public_html > xml2html
no document specified

xml2html ist somit grundsätzlich einsatzbereit und erwartet eine Quelldatei zur Verarbeitung.
Einen Überblick über die Aufruf-Konventionen von xml2html liefert:

tobyto@linux:~/public_html > xml2html -help
usage: /usr/bin/xml2html -<option> <value> ...
options:
        -file <filepath>        html file to be parsed
        -document <docpath>     URL path to be used instead of <filepath>
        -script <scriptpath>    script name to be used instead of /usr/bin/xml2html
        -query <querystring>    query string for cgi arguments encoded like in an URL
        -defstyle <stylefile>   style file to be read in before processing document
        -httpsysdir <path>      system path for httpd dir, default. /usr/local/httpd
        -extension <.old.new>   rename all parsedref documents *.old to *.new (e.g. *.xml to *.html)
        -help                   or -h, -?, --help: this message
        -include <file>         include file before processing document
        -<xxx> <yyy>            parameter def: global_options(<xxx>) <yyy>
                                for all other options

Die Verarbeitung einer Datei test.html erfolgt dementsprechend über den Aufruf von:

tobyto@linux:~/public_html > xml2html -file test.html

Das Ergebnis der Verarbeitung wird allerdings auf stdout ausgegeben, so dass eine Umleitung in eine Datei über:

tobyto@linux:~/public_html > xml2html -file test.html > ./static_pages/test.html

sinnvoll ist, wenn die zu generierende Seite im Unterverzeichnis ./static_pages/ liegen soll.


2. Aufruf über ein Makefile
Möchte man mehr als vielleicht vier oder fünf Seiten verarbeiten, ist der manuelle Aufruf über die Kommandozeile allerdings recht mühsam.
Es bietet sich hier die Verarbeitung der Dokumente mit Hilfe eines Makefiles (z.B. GNU Make) an. So können leicht ganze Dokumentenbäume mit xml2html verarbeitet werden.
Voraussetzung für die Benutzung eines Makefiles (Beispiel-Makefile) ist allerdings, dass xml2html über Kommandozeile ansprechbar ist.


3. Aufruf über einen Webserver
Die wohl eleganteste Art xml2html zu verwenden, ist die Einbingung des Tools in einen Webserver als CGI-Skript. Es ermöglicht, sich die erstellten Seiten direkt im Webbrowser anzusehen, ohne den Umweg über das statische Generieren auf Kommandozeilenebene gehen zu müssen.
Hierfür muss der Anwender allerdings das Recht besitzen, eigene CGI-Skripte auf den Server ausführen zu dürfen, was nicht bei allen Webhostern der Fall ist.
Zum Entwickeln der Seiten eignet sich natürlich sehr gut der eigene Webserver (localhost), für die spätere Verbreitung im Internet muss dann ein geeigneter Webhoster gefunden werden.
Nachteil dieser Methode ist die Geschwindigkeit mit der die Seiten erstellt bzw. ausgeliefert werden. Jede Seite wird "on-the-fly" durch den Webserver generiert, was zu Zeitverlusten führt. Eine Möglichkeit dieses Problem zu beheben, ist das Cachen bereits generierter Seiten, auf das später noch näher eingegangen wird.

Da das Konfigurieren von Webservern eine nicht triviale Aufgabe ist, soll hier nur eine Möglichkeit beschrieben werden, wie sich das Tool relativ unkompliziert in den Apache integrieren lässt.
Ausführlichere Information über die einzelnen Schritte und Direktiven finden sich im Manual des Apache.

Eine wesentliche Voraussetzung für die Nutzung ist das Freigeben von .htaccess-Dateien in der Apache-Konfiguration. Dazu sollte sich im Konfigurationsfile httpd.conf des Apache, welches standartmässig im Verzeichnis: /etc/httpd liegt, folgender oder ein ähnlicher Eintrag befinden:

<directory "/usr/local/apache/htdocs">
	AllowOverride All
	Order allow,deny
	Allow from all
</directory>

Damit wird festgelegt, wer wie auf das Dokumentenverzeichnis und dessen Unterverzeichnisse zugreifen darf. Wesentlich ist für xml2html die Option AllowOverride All. Durch die Angabe von All lassen sich für eigene Verzeichnisse - etwa public_html/ im Home-Directory - eigene Verarbeitungshinweise in einer speziellen Datei angeben. Der Name dieser Datei steht ebenfalls in der Konfiguration des Webservers. Beim Apache lautet er defaultmässig: .htaccess (Direktive: AccessFileName in der httpd.conf)

Im Unterverzeichnis xml/ des xml2html-Verzeichnisses befindet sich eine .htaccess-Beispieldatei:

#RemoveHandler .html
AddType application/x-tohtml .html
AddType application/x-tohtml2 .xml
Action  application/x-tohtml /cgi-bin/xml2html-fhlayout
Action  application/x-tohtml2 /cgi-bin/xml2html
allow from all

Die AddType-Direktive bewirkt hierbei, dass alle Dateien mit der Endung .html (MIME-Typ) durch die Applikation x-tohtml und alle .xml Dateien durch x-tohtml2 verarbeitet werden.
Die Action-Direktive stellt nun die Verbindung zwischen dem Type (x-tohtml) und dem tatsächlichen Speicherort der Applikation her. Sie beschreibt also, wo der Apache das xml2html-Skript findet.
Hierbei wird der Pfad relativ zum Document-Root des Webservers angegeben. Im obigen Beispiel befindet sich das Tool also im Verzeichnis:

tobyto@linux:~/public_html > /usr/local/httpd/cgi-bin/xml2html

wenn Document-Root dabei /usr/local/httpd/ ist.
Um den Zugriff durch den Apache-Server auf das Skript zu ermöglichen, sind zwei Wege denkbar. Erstens ist das einfache Kopieren von xml2html in das cgi-bin-Verzeichnis des Apache möglich. Für das Kopieren werden einmalig Root-Rechte benötigt. Dieser Weg sollte der übliche auf dem eigenen System sein. Soll xml2html nicht nur genutzt, sondern auch weiterentwickelt werden, oder spricht etwas Anderes gegen das Kopieren, kann auch ein symbolischer Link auf xml2html aus dem cgi-bin-Verzeichnis des Apache gesetzt werden.
Dies ermöglicht dem Entwickler (nicht sinnvoll für Nutzer!) das Tool zu verändern, ohne ständig Root-Rechte nutzen zu müssen, da er nicht direkt im cgi-bin-Verzeichnis des Apache arbeitet.
Für diesen Weg sind allerdings noch ein paar Voraussetzungen zu erfüllen. Es muss erstens ein symbolischer Link aus dem cgi-bin-Verzeichnis zur aktuellen Position des Apache gesetzt werden:

tobyto@linux:~/public_html > ln -s /pfad_zum_skript_verzeichnis/cgi-bin/xml2html /usr/local/httpd/cgi-bin/xml2html

Ausserdem muss in dem schon oben genannten <directory>-Eintrag unter dem Punkt Options das Ausführen von CGI-Skripten sowie das folgen symbolischer Links erlaubt werden. Dies geschieht über:

ExecCGI bzw. +FollowSymLinks

Eine weitere Besonderheit der obigen .htaccess-Datei liegt im Aufruf des Skriptes.
Der Dateiendung .html wird statt /cgi-bin/xml2html die Action-Direktive /cgi-bin/xml2html-fhlayout zugeordnet. Dabei handelt es sich nicht um ein anderes Skript, sondern lediglich um eine Aufrufkonvention. Auf diese Art lässt sich xml2html mitteilen, dass standardmässig für jede Seite das Stylefile fhlayout.style als default-style eingebunden werden soll. Dieser Direktive entspricht also dem Shell-Aufruf:

tobyto@linux:~/public_html > xml2html -defstyle fhlayout.style ...

Hierfür muss das Skript nicht einmal kopiert werden - es genügt, einen symbolischen Link mit dem Name von Skript und Stylefile auf das Original-Skript zu erzeugen. Das sei hier nur am Rande erwähnt - Stylefiles werden an anderer Stelle im Tutorial näher erläutert.

Abschliessend ist zu beachten, dass die RemoveHandler-Direktive nur bei neueren Apache-Versionen funktioniert. Wird etwa noch Version 1.2 eingesetzt, muss die RemoveHandler-Anweisung aus der .htaccess-Datei entfernt werden. Es darf ausserdem in der Apache-Konfigurationsdatei kein handler für .html installiert sein.

Der Apache muss nach der Bearbeitung seiner Konfigurations-Dateien neu gestartet werden. Die vorgenommenen Änderungen werden erst nach dem erfolgreichem Neustart wirksam.

root@linux:/root > /etc/init.d/apache restart

Bei Änderungen an den .htaccess-Dateien muss allerdings kein Neustart durchgeführt werden, da .htaccess-Dateien bei jedem Zugriff auf das Verzeichnis abgearbeitet werden. Die oben genannte Beispieldatei muss somit nur in das Verzeichnis, in dem die zu verarbeitenden Seiten liegen, kopiert werden. Bei richtiger Konfiguration des Apache werden die Seiten bei einem localhost-Aufruf durch einen Browser "on-the-fly" vom Apache generiert.





 ... [ xml2html-Tutorial ] ... [ << Einleitung ] ... [ Makros >> ] ... [ nach oben ] ...   ... [ Referenz ] ...