
Die Kopfdaten eines Webauftritts sind üblicherweise bei den meisten Dokumentdateien weitgehend gleich.
Es ist sinnvoll, die gleichbleibenden Abschnitte in eine separate Datei auszulagern und zentral
zu verwalten.
Leider bietet HTML keinen Mechanismus an, der Daten automatisch in die Dokumente
einfügt. Mit UHTML kann man ein <include>-Element definieren, das
genau dies tut, sprich, die in der Datei head-data ausgelagerten Daten automatisch einfügt.
Angenommen die Datei head-data wird im Unterverzeichnis include
des Dokumentverzeichnisses abgelegt. In diesem Fall könnte die Benutzung von <include> so aussehen:
index.uhtml <html> <head> <include file="/include/head-data"> ... </head> ... </html>
Ein solches <include>-Element kann in vielen Projekten Verwendung finden.
Ensprechend der oben beschriebenen Konvention wird der Programmcode in der Datei
uHTML/include.pm im Skriptverzeichnis abgelegt. Der Inhalt von
include.pm könnte dann so aussehen:
include.pm use uHTML ; sub Include($) { my $Node = shift; $Node->map(join('',<FH>),'') if $Node->Param('file') and open FH,$ENV{'DOCUMENT_ROOT'}.$Node->Param('file'); } uHTML->registerTag('include',\&Include);
Um diese kleine Bibliotheksfunktion mit einem Webauftritt zu verbinden, braucht man ein kurzes
cgi-Programm, das in der Datei hook.pl im Skriptverzeichnis ablegt wird:
hook.pl #!/usr/bin/perl use uHTML ; open FILE,"$ENV{'DOCUMENT_ROOT'}$ENV{'PATH_INFO'}" or die "File: $ENV{'PATH_INFO'} not found"; print "Content-type: text/html\n\n"; print uHTML->recode(<FILE>);
Durch ein paar Zeilen, die man der Datei .htaccess im Dokumentverzeichnis
hinzufügt, wird UHTML quasi “magisch” in einen Webauftritt integriert und
in allen *.uhtml Dateien lauffähig gemacht.
.htaccess
RewriteEngine on
RewriteRule ^(/?)(.*\.uhtml) $1cgi-bin/hook.pl/$2 [L,QSA]
Dieses voll funktionsfähige Beispiel zeigt das Prinzip der Integration von UHTML in einen Webauftritt. Zwar kommen darin weder variable Parameter vor noch erfordert die Serveranfrage eine Initialisierung oder Datenübernahme, die Erweiterung um diese Elemente ist jedoch trivial.
![]()
Alle Rechte bei Jorga Interactive, 2008 | valid html 4.01 | valid css