UHTML–Beispiel

uHTML

Auslagern gleicher Daten

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 Dateien 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->Attr('file') and
      open FH,$ENV{'DOCUMENT_ROOT'}.$Node->Attr('file');
  }
  uHTML->registerTag('include',\&Include);

Um diese kleine Bibliotheksfunktion mit einem Webauftritt zu verbinden, braucht man ein kurzes cgi-Programm, das in der Datei uhtml.pl im Skriptverzeichnis abgelegt wird:

uhtml.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(join('',<$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
 DirectoryIndex index.uhtml
 RewriteEngine on
 RewriteRule ^(/?)(.*\.uhtml) $1cgi-bin/uhtml.pl/$2 [L,QSA]

Dieses voll funktionsfähige Beispiel zeigt das Prinzip der Integration von einem benutzedefiniertem UHTML–Element 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.

  • Dieses Beispiel mit allen Dateien und Verzeichnissen so wie vom apache benötigt:

    Vollständiges uHTML Beispiel uHTML Beispiel (7.84kB, from 18.11.2016, 18:13:48)

divider

English Version
 

Externe Seiten:

uHTML-Logo 2008 All Rights Reserved Amina Mendez & Roland Okello Valid HTML 4.01 Transitional CSS is valide!