binaeres ZIP-Archiv Z2H


ReadMe für ...

... <t2h.Exe> & <x2h.Exe> & <z2h.Exe> & <tConv.Exe>


 
        NEU: z2h hat ein Schwesterchen bekommen! 
                Herzlich willkommen, t2h! 
        NOCH neuer: Die beiden haben weiteren Zuwachs: tConv 
        Am ALLERneusten: Nun ist auch noch x2h dazugekommen! 

Moin!

Hier mal wieder einige Tühlchen aus meiner Bastelkammer :-)

Die vorgestellten Programme sind sozusagen "Publikations-Hilfen" für die Arbeit im WWW (WeltWeitWarten). Sie sollen das Erstellen formal korrekter HTML-Seiten ermöglichen - Ob der Inhalt dieser Seiten deren Publikation indes rechtfertigt, können sie nicht entscheiden.


=> "z2h" - der ZConnect nach HTML Konverter <=


Viehtschörs von z2h:


optionale Aufruf-Parameter für z2h:

-i
führt nur eine Indizierung der herumliegenden HTML-Dateien durch;
-n
läßt das Indizieren bleiben;
-a
fügt eine spezielle (naturgemäß nicht HTML-konforme!) NetScape-Auszeichnung ein;
-v
zeigt 'ne Menge auf'm Bildschirm (nur für Neugierige);
-z
erzeugt alphanumerische HTML Zeichen-Entitäten, also für den großen A-Umlaut (Ä) anstelle des vorgegegeben &#196; die Zeichen &Auml;
-fTEXT
schreibt TEXT in die Fußzeile der erzeugten HTML-Seiten; Leerzeichen sind hier durch "_" zu ersetzen, also z.B:
    -fein_Service_von_Tolle.Systeme@Do.Main.Com 

Hinweise:


=> "t2h", das Schwesterchen von "z2h" <=


Anders als z2h ist t2h als sog. "Filter" für Text-Dateien realisiert, d.h. es liest von der Standard-Eingabeeinheit und gibt die erzeugten Daten auf die Standard-Ausgabeeinheit. Der Aufruf sieht mithin typischerweise so aus:

    t2h < datei.txt > seite.htm 

Hier wird also die Text-Datei "datei.txt" eingelesen und nach HTML konvertiert in die Datei "seite.htm" geschrieben. Dabei wird die Text-Datei (StdIn) zeilenweise (mit bis zu 32 KB pro Zeile) gelesen und unterstellt, daß die einzelnen Elemente (Überschriften, Absätze usw.) jeweils durch (mindestens) eine Leerzeile voneinander abgetrennt sind.

Handelt es sich mithin um eine solche einfache Text-Datei, so erkennt und markiert t2h darinnen:

Bei Definitions-Listen wird jeweils das erste Wort (d.i. eine durch Leerzeichen umschlossene Zeichenfolge) als Definitions-Ausdruck (definition term, DT) aufgefaßt und der Rest des Absatzes (d.i. Text bis zur nächsten Leerzeile) als Definition (data definition, DD).

Bei Aufzählungen (ungeordnete UL- und geordnete OL-Listen) wird jeweils der komplette Absatz (d.i. Text bis zur nächsten Leerzeile) als Listen-Eintrag (list item, LI) ausgezeichnet.

Sofern die Eingabe-Datei nicht im IBM-Zeichensatz (Code-Seite 437) vorliegt, kann der tatsächliche Zeichensatz mit einem für t2h optionalen Aufruf-Parameter angegeben werden:

-eCode
bezeichnet (in "Code") den Eingabe-Zeichensatz

Weitere Hinweise zu Zeichensätzen stehen unten, im Abschnitt zu tConv.


Um das Erscheinungsbild der erzeugten HTML-Datei noch zu verbessern, können in der Text-Datei zusätzlich einige simple Element-Kennzeichnungen vorgenommen werden (ohne dafür die HTML lernen zu brauchen - schließlich gibt's schon genug, die sie benutzen, ohne sie zu verstehen). Diese müssen jeweils am Anfang der Zeile stehen und setzen sich je aus einem Doppelpunkt, einem Großbuchstaben und einem weiteren Doppelpunkt zusammen (mithin eine Zeichenfolge, die in 'normalem Text' nicht vorkommt und daher eindeutig sein sollte).

Gegenwärtig erkennt t2h folgende Kennzeichnungen:

  1. :E: fügt eine andere Datei ein (s.u.)
  2. :H: hebt die Zeile hervor (EM);
  3. :I: bewirkt Ignorierung allen Textes bis zur nächsten Leerzeile;
  4. :L: erzeugt eine horizontale Linie (HR);
  5. :U: markiert die Zeile als eine Überschrift (H2);
  6. :V: zeichnet den Absatz (d.i. Text bis zur nächsten Leerzeile) als vor-formatierten Text (PRE) aus, beispielsweise für ASCII-Skizzen oder Tabellen sinnvoll;
  7. :Z: zeichnet den Absatz (Text bis zur nächsten Leerzeile) als Zitat (BLOCKQUOTE) aus.

Soll beim Konvertieren in die aktuelle Eingabe-Datei eine andere Text-Datei aufgenommen werden, so ist deren Name direkt nach der entsprechenden Kennung anzugeben, also bspw. so:

:E:sonstiges.txt

Hier wird dann die Datei "sonstiges.txt" - soweit sie vorhanden ist und geöffnet werden kann - eingelesen so bruchlos in die erzeugte HMTL-Datei eingefügt. Als praktische Demonstration folgt hier (in der HTML-Version dieses Textes) eine auch im Distributions-Archiv enthaltene Datei:

    +++++++++++++++++++++++++++++++++++ 
    +     z2h, x2h, t2h und tConv     + 
    +   ---------------------------   + 
    +    Tools zur Erstellung von     + 
    +  HTML-Seiten und Zeichensatz-   + 
    +          Konvertierung          + 
    +  -----------------------------  + 
    +   (C) 1995,96 DFG/M.Watermann   + 
    +++++++++++++++++++++++++++++++++++ 

Eine Verschachtelung derartiger Einfügungen ist nicht möglich, um womöglich unendlichen Schleifen vorzubeugen. Falls sich in einer einzufügenden Datei eine weitere Kennung :E:filename.ext befindet, so wird sie geflissentlich 'übersehen'.


Ob nun mit oder ohne 'manuelle Unterstützung' - auch t2h produziert nach RFC 1866 (ds.internic.net/rfc/rfc1866.txt) korrekten HTML-Code (mit Ausnahme der optionalen Netscape-Auszeichnung, die, wie die anderen sog. HTML-"Erweiterungen" durch diese obskure Firma, ein Verstoß gegen Intention und Definition von HTML ist; vgl. o. "-a"), weshalb diese Seiten mit der entsprechenden DTD-Kennzeichnung versehen sind. Falls die erzeugten HTML-Seiten indes nachbearbeitet werden, sollten sie anschließend mit einem SGML-Validator geprüft werden (vgl. beispielsweise http://www.halsoft.com/html-val-svc/).

Mögliche Aufruf-Parameter von t2h:

-a
AntiNetscape-Schalter (wie bei Z2h);
-fTEXT
schreibt TEXT in die Fußzeile der erzeugten HTML-Seiten;
-eCode
bezeichnet (in "Code") den Eingabe-Zeichensatz;
-k
kurze HTML-Zeilen erzeugen (s.u.);
-n
die oben erwähnten, optionalen Auszeichnungen (wie ":H:" z.B.) nicht auswerten (d.h. ignorieren);
-v
schreibt das Tagesdatum als Änderungs-Vermerk ans Ende der erzeugten HTML-Seite.
-z
erzeugt alphanumerische HTML Zeichen-Entitäten, also für den großen O-Umlaut (Ö) anstelle des vorgegegeben &#214; die Zeichen &Ouml;

Sonstiges


=> "x2h", ein anderer ZConnect nach HTML Konverter <=



        STILL UNDER CONSTRUCTION ...

Mögliche Aufruf-Parameter von x2h:

-a
AntiNetscape-Schalter;
-fTEXT
schreibt TEXT in die Fußzeile der erzeugten HTML-Seiten;
-i
Verweis auf Index-Datei erzeugen;
-h
kurzen Hilfe-Bildschirm mit Parameter-Übersicht aufrufen;
-k
kurze HTML-Zeilen erzeugen;
-v
schreibt das Tagesdatum als Änderungs-Vermerk ans Ende der erzeugten HTML-Seite.
-z
erzeugt alphanumerische HTML Zeichen-Entitäten, also für den großen U-Umlaut (Ü) anstelle des vorgegegeben &#220; die Zeichen &Uuml;

=> "tConv", ein Programm zum Konvertieren von Zeichensätzen <=


Wie auch t2h ist tConv ein sog. "Filter, d.h. es liest von der Standard-Eingabe und schreibt auf die Standard-Ausgabe. Beide können durch Umleitungs- oder Filter-Zeichen ("<", ">", "|") auf Dateien (oder andere Filter) gelenkt werden. Der Programm-Aufruf sieht mithin typischerweise so aus:

    tConv < datei.ein > datei.aus

Anders als bei t2h findet hier keine HTML-Auszeichnung statt, sondern "nur" eine Wandlung des in der Datei verwendeten Zeichensatzes. Gegenwärtig kennt tConv die folgenden Zeichensätze:

  1. ISO 8859-1 (aka Latin-1)
  2. ISO 8859-2 (aka Latin-2)
  3. ISO 8859-3 (aka Latin-3)
  4. ISO 8859-4 (aka Latin-4)
  5. ISO 8859-5 (aka Latin-5)
  6. ISO 8859-6 (aka Latin-6)
  7. ISO 8859-7 (aka Latin-7)
  8. ISO 8859-8 (aka Latin-8)
  9. ISO 8859-9 (aka Latin-9)
  10. IBM/MS Code-Seite 437 (aka IBM extended ASCII)
  11. IBM/MS Code-Seite 850 (aka MS Latin-1)
  12. IBM/MS Code-Seite 1250 (aka Weißichnich)

Mithilfe von tConv können der Zeichensätze beliebig in jeder Richtung konvertiert werden. Dafür kennt das Programm, das bewußt keine eigene Zeichensatz-Prüfung der Eingangsdaten vornimmt, zwei optionale Aufruf-Parameter:

-eCode
bezeichnet (in "Code") den Eingabe-Zeichensatz (Vorgabe: Code-Seite 437),
-oCode
bezeichnet (in "Code") den Ausgabe-Zeichensatz (Vorgabe: ISO 8859-1).

Anstelle der Zeichenfolge "Code" ist jeweils die Kennung des gewünschten Zeichensatzes anzugeben, d.h. bei den ISO-Codes eine der Ziffern 1 bis 9, bei den Code-Seiten deren Kennzahl. Um also beispielsweise die mit dem IBM-Zeichensatz 437 erzeugte Datei "meintext.txt" in die Datei "meintext.doc" im ISO-Zeichensatz Latin-1 (aka 8859-1) zu konvertieren, wäre folgender Aufruf zu verwenden:

    tConv < meintext.txt > meintext.doc -e437 -o1

(Genaugenommen sind in diesem speziellen Falle die zusätzlichen Parameter optional, weil genau diese Werte - Code-Seite 437 für die Eingabe- und ISO 8859-1 für die Ausgabe-Datei - ja die programminternen Vorgaben sind, falls keine Parameter beim Aufruf angegeben werden.)

Nehmen wir ein anderes Beispiel. Mit einem WinDoz-Editor wurde die Datei "testtext.doc" als sog. ASCII-Text mit dem Zeichensatz der Code-Seite 850 (von MS fälschlich auch als "Latin-1" bezeichnet) gespeichert. Diese Datei soll nun automagisch als HTML-Datei ausgezeichnet werden. - Wie? - Nun, versuchen wir's so:

    tConv -e850 -o1 < testtext.doc | t2h > testtext.htm -e1

Hier wird also "testtext.doc" zunächst von tConv in den ISO-Zeichensatz 8859-1 konvertiert, dann führt t2h die HTML-Auszeichnung (einschließlich der Konvertierung bestimmter Sonderzeichen) durch. - Es geht aber auch noch einfacher:

    t2h < testtext.doc > testtext.htm -e850

In diesem Falle konvertiert t2h direkt aus dem Zeichensatz der Code-Seite 850 ins HTML-Format (und den darinnen verwendeten ISO-Zeichensatz 8859-1).

Klingt gut? - Freut mich!


Zu guter Letzt ..


Was noch zu tun bleibt:


    Ciao
        Matthias


=> Zur Entwicklungs-Geschichte <=


Die erste Programm-Version von z2h entstand im November 1995 im Zusammenhang mit einen anderen Projekt, bei dem über die BBS-Einwahl auch ein Internet-Zugang realisiert werden sollte. Ich wollte sehen, ob sich die (wenigstens ästhetisch) häßlichen Brett-Nachrichten nicht ein wenig ansprechender darstellen ließen. So entwarf ich zunächst eine Listenstruktur, die es ermöglichte, die einzelnen Nachrichten im Speicher zu verarbeiten.

Aus der einfachen HTML-Auszeichnung als vorformatierter Text wurde bald eine differenziertere Darstellung. Zitate wurden gesondert ausgezeichnet, URLs im Nachrichten-Text als Hypertext-Verknüpfungen gekennzeichnet. Schließlich kam eine Index-Datei hinzu, die später einer Verkettung von mehreren Index-Dateien wich. So entstanden in recht schneller Abfolge etwa drei Dutzend Versionen, von denen manche nur ein paar Stunden "überlebten", andere mehrere Tage.

Durch Hinweise einiger geduldiger Test-Opfer kam dabei manches Detail hinzu oder wurde anders implementiert. Parallel entstand im Dezmeber 1995 dann t2h, dem nach und nach ebenfalls etliche Details zuwuchsen. Als ich mich schließlich etwas intensiver mit den verschiedenen Zeichensätzen beschäftigte, um die zugehörige Kennzeichnung in ZConnect-Nachrichten korrekt auswerten und umsetzen zu können, entstand - im Januar 1996 zunächst als reines Test-Tuhl - dann noch tConv, das dann seinerseits eine rasante Evolution durchlief, bis ich schließlich den 16-Bit "UniCode" als Bezugsgröße für die vielfältigen Konvertierungs-Richtungen benutzte, die dann auch von t2h und z2h verwendet wurde.

Unterdessen hatte der Quell-Code ein beachtliches Maß an Umfang und Undurchschaubarkeit gewonnen. Daher beschloß ich, das gesamte Paket komplett neu zu entwerfen und zu schreiben. Im Ergebnis werden nun alle drei Programme aus denselben Quellcode-Dateien generiert und auch - beginnend mit Version 0.37 (die tatsächlich wohl v.98 oder so heißen müßte <g>) - einheitlich gezählt.

Also, watz njuh?

v0.37
v0.38
v0.39
v0.40
v0.41
v0.42


ß-Hinweis: automagisch generierte HTML-Seite - © 1995,96 DFG/M.Watermann, Hannover, FRG