Dev


MakeHtmlIdx - Hauptdokument

(Letztes Update: 15.1.2017)
Allgemeines Eine lauffähige Testversion von MakeHtmlIdx ist Bestandteil dieses Softwarepakets. MakeHtmlIdx ist optimiert für Pentium und bessere CPUs ab 128 MB RAM, Windows XP SP3.
Über MakeHtmlIdx
Abb.: "Über MakeHtmlIdx"

Durch Auswählen der Option "Info über MakeHtmlIdx" (Rechtsklick in die Titelleiste des Hauptdialogs von MakeHtmlIdx oder Linksklick auf das Titelleistenicon) erhalten Sie Informationen über

Funktion MakeHtmlIdx ist ein Programm, mit dessen Hilfe aus bestehenden HTML- (*.HTM, *.HTML, *.SHT, *.SHTM, *.SHTML,...) Dateien Informationen zur automatischen Erstellung von Indexlisten, Abbildungs- und Tabellenverzeichnissen, zum Einbetten von Suchfunktionen, etc. gewonnen und nach unterschiedlichen Gesichtspunkten sortiert und aufbereitet werden können.

MakeHtmlIdx ist dabei aufgrund seiner Orientierung an Vorlagen und Platzhaltern flexibel und funktioniert auch mit zukünftigen HTML-Standards völlig transparent. Dabei wird im ersten Schritt - ausgehend von einem anzugebenen Basisverzeichnis - eine Liste von HTML-Dateien erstellt und nach dem Auftreten von Konstrukten wie

<a name="ankername" parameter1="Argument 1" parameter2="Argument 2" ...>
Ankerbeschreibung</a>
gesucht und - im zweiten Schritt - die gefundenen Parameter (im Beispiel {parameter1}, {parameter2},...) samt ihrer Argumente (hier "Argument 1", "Argument 2",...) ausgewertet. Zusätzlich zu den benutzerdefinierten Parametern und den zugehörigen Argumenten werden
  • eine laufende Nummer (Parametername {num}),
  • der Dateipfad der aktuell durchsuchten HTML-Datei relativ zum angegebenen Basisverzeichnis (Parametername {url}),
  • der Text im durch <a name="ankername">Ankerbeschreibung</a> umgrenzten Bereich - im Beispiel "Ankerbeschreibung" - (Parametername {alt}) und
  • der Ankername selbst - im Beispiel "ankername" (Parametername {name})
automatisch hinzugefügt.

Die in einer Vorlage (sog. "Template") vorkommenden Parameternamen werden dann in einem dritten Schritt durch die in der zugehörigen Datei angegeben Parameter ersetzt.

Im vierten - optionalen - Schritt erfolgt eine Sortierung der gemäß Vorlage erstellten Information nach einem frei wählbaren Parameternamen. Schließlich werden - im fünften Schritt - die zu einer Liste zusammengefaßten Informationen in eine Datei geschrieben.

Folgende Einschränkungen sind bei der Formatierung von Ankern zu beachten, damit sie von MakeHtmlIdx ordnungsgemäß aufgefunden, indiziert und formatiert werden können:

  1. Das ein- und ausleitende Tag (d. h. <a name="..."> ... </a>) muß in einer Zeile stehen.
  2. Argumente und Ankerbeschreibungen dürfen - mit Ausnahme von Leerzeichen bzw. Tabulatoren, Interpunktions- und Satzzeichen (",", ".", "!", "?", ""), Buchstaben, Ziffern und Umlauten - keine weiteren Sonderzeichen enthalten. Daher sind hier insbesondere keine HTML-Anweisungen erlaubt. Ungültig ist z.B.
    <a name="ankername" parameter1="!§$%&()"> <b>formatierter HTML-Code</b> </a>
  3. Der Ankername sowie die Parameternamen selbst dürfen nur aus Buchstaben, Ziffern und dem Unterstrich ("_") zusammengesetzt werden. Ungültig ist daher
    <a name="$onderbarer <p>Anker" komischer!parameter="Text 1" geht-auch-nicht="Nix">Ankerbeschreibung</a>
Beispiel Ein Beispiel soll diesen Sachverhalt sowie die Funktionsweise von MakeHtmlIdx verdeutlichen helfen:

Kommen in einer HTML-Datei (angenommener Dateipfad c:\www\test.htm im Basisverzeichnis c:\www) folgende Anker vor

<a name="index" dsc="Seitenindex anzeigen">Indexseite</a>
<a name="hilfe" dsc="Hilfeseite aufrufen">Hilfeseite</a>
, dann würde eine Vorlage der Art
Nr. {num} <a href="{url}#{name}">{alt}</a>: {dsc}<br>
die untenstehende Ausgabe bzw. den untenstehenden HTML-Code hervorrufen:
Nr. 1 <a href="test.htm#index">Indexseite</a>: Seitenindex anzeigen<br>
Nr. 2 <a href="test.htm#hilfe">Hilfeseite</a>: Hilfeseite aufrufen<br>
Die zugehörige HTML-Darstellung des Browsers würde dann in etwa so

Nr. 1 Indexseite: Seitenindex anzeigen
Nr. 2 Hilfeseite: Hilfeseite aufrufen

aussehen und sich z. B. für eine sog. "Sitemap" (die die verfügbaren HTML-Dokumente in der Reihenfolge ihres Autretens auflistet) eignen.

Soll ein alphabetischer Index der für eine Website verfügbaren Verweise erstellt werden, kann eine Vorlage der Art

<a href="{url}#{name}"><b>{alt}</b></a>: {dsc}<br>
mit Sortierkriterium "alt" zum Ziel führen (s. auch das Stichwortverzeichnis und den zugehörigen Funktionsaufruf).
Bedienung Die graphische Benutzeroberfläche von MakeHtmlIdx erlaubt die Eingabe von fünf Parametern.
Einstellung der Pfade
Abb.: Pfade
  1. "HTML": Erlaubt die Angabe eines HTML-Basisverzeichnisses, ausgehend von dem Unterverzeichnisse durchsucht und HTML-Dateien aufgefunden werden. Die Ersetzung des Parameternamens {url} erfolgt relativ zu dem hier angegebenen Verzeichnis. Durch Drücken auf den mit "..." markierten Auswahlknopf öffnet sich ein Dialog zur grafischen Auswahl eines Verzeichnisses.
  2. "INDEX": Dateiname und -pfad der auzugebenden Indexdatei, d. h. derjenigen Datei in die die modifizierten Vorlagenzeilen geschrieben werden. Durch Drücken auf den mit "..." markierten Auswahlknopf öffnet sich ein Dialog zur grafischen Auswahl einer Datei. Falls die Datei zum Zeitpunkt der Ausführung bereits existiert, wird ihr Inhalt ggf. mit aktualisierten Daten überschrieben.
  3. "LOG": Dateiname und -pfad für Logbuchausgaben. Beim Aktivieren der Kontrollbox links neben dem Eingabefeld erfolgt eine zusätzliche Ausgabe von Protokolldaten in die spezifizierte Datei. Durch Drücken auf den mit "..." markierten Auswahlknopf öffnet sich ein Dialog zur grafischen Auswahl einer Datei. Falls die Datei zum Zeitpunkt der Ausführung bereits existiert, werden die neu generierten Protokolldaten am Dateiende angehängt.
  4. "TEMPL": Auswahlfeld für Vorlagen. In diesem Auswahlfeld sind bereits einige Einträge vordefiniert:
    1. <b><a href="{url}#{name}">{alt}</a></b>: {dsc}<br>
    2. <b>Treffer {num}</b> <a href="{url}#{name}">{alt}</a>: {dsc}<br>
    3. Entry[{num}] = new Element("{url}#{name}", "{alt}", "{dsc}", "{kwd}")
    Neue Vorlagen können im Eingabefeld eingegeben (bis zu 20) und nicht mehr benötigte Vorlagen entfernt werden. Die Änderungen treten hierbei in Kraft, sobald das Eingabefeld den Fokus verliert. Alternativ wird durch Drücken auf den mit "..." markierten Auswahlknopf ein Dateiauswahldialog geöffnet. Die so ausgewählte Datei wird zeilenweise durchsucht und bis zu 20 Zeilen daraus in die Vorlagenliste übernommen. Tokens wie "\\n" werden in Steuerzeichen "<NL>" umgewandelt.
  5. "SORT": Sobald das Eingabefeld für Vorlagen (s. 4.) den Fokus verliert, wird die Auswahl der möglichen Sortierkriterien (d. h. alle in "{...}" eingeschlossenen Zeichenketten der Vorlage) automatisch in das Eingabefeld für die Sortierreihenfolge übertragen. Falls keine Sortierung durchzuführen ist (d. h. die modifizierten Vorlagen in der Reihenfolge des Auftretens in den HTML-Dateien erzeugt und auf die Festplatte geschrieben werden sollen), ist der Text im Eingabefeld manuell zu löschen.
Im Abschnitt "Logbuch" werden die einzelnen Verarbeitungsschritte, Ergebnisse und Fehlermeldungen während der Indexerstellung angezeigt. Durch Aktivieren des Kontrollkästchens bei "LOG" (s. auch Protokollfunktionen) und Angabe eines Dateinamens gelangen die hier gezeigten Ergebnisse parallel in eine Protokolldatei.
Logbuchfunktion
Abb.: Logbuch
Parameter Die Vollversion von MakeHtmlIdx kann über Kommandozeilenparameter gesteuert werden und im Hintergrund ablaufen. Diese Funktionalität erlaubt einen automatischen Aufruf z. B. aus HTML-Generatoren (DreamWeaver, Netscape Composer,...) und Batchdateien heraus.

Folgende Optionen stehen zu Verfügung:

makehtmlidx [-?] [-h] [-help]
            -html <htmlpath> -index <indexfile>
            [-log <logfile>] [-sort <sortorder>]
            -templ <template>
Wobei Angaben in "[...]" optional sind und Dateinamen, Pfade und Vorlagen in "..." geklammert werden können (z. B. wenn sie Leerzeichen enthalten).

Innerhalb einer geklammerten Zeichnkette sind dann allerdings keine weiteren doppelten Anführungszeichen erlaubt - in diesem Fall ist auf einfache Anführungszeichen (" ' ") auszuweichen, z. B. bei folgendem Aufruf:

makehtmlidx -html Doc\ -index output.htm
            -templ "<a href='{url}#{name}'></a>"
Zur Beschreibung der Kommandozeilenparameter:
  • -?, -h, -help: Hilfedialog anzeigen
  • <htmlpath>: Pfad zu den HTML-Dateien
  • <indexfile>: Dateiname der zu erstellenden Indexdatei
  • <logfile>: Protokolle in Datei <logfile> umleiten
  • <sortorder>: Sortierkriterium für Einträge
  • <template>: Vorlage für die Indexeinträge
Kommandozeilenparameter
Abb.: Kommandozeilenparameter

Der Index dieses Dokuments wurde durch Aufruf der Kommandozeile

makehtmlidx -html "D:\Programme\MakeHtmlIdx\Doc"
-index "D:\Programme\MakeHtmlIdx\Doc\output.htm"
-templ "<a href='{url}#{name}'><b>{alt}</b></a>: {dsc}<br>" -sort alt
automatisch von MakeHtmlIdx erstellt. Dabei war D:\Programme\MakeHtmlIdx das aktive Verzeichnis in dem sich auch MakeHtmlIdx.exe befand. Das selbe Resultat kann natürlich auch durch Eintragen der jeweiligen Parameter in der graphischen Benutzeroberfläche (auch Demonstrationsversion) von MakeHtmlIdx erzielt werden.
Demoversion Folgende Einschränkungen gelten für die Testversion:

  • Der Testzeitraum endet nach einem Monat. Danach läßt sich die Demonstrationsversion von MakeHtmlIdx nicht mehr starten.
  • Maximal 10 Unterverzeichnisse werden ausgehend vom HTML-Basisverzeichnis indiziert.
  • Insgesamt maximal 100 HTML-Dateien werden nach Ankern und Referenzen durchsucht.
  • Maximal 100 Ausgabezeilen werden in die zu erstellende Indexdatei geschrieben.
  • Es erfolgt keine Auswertung von Kommandozeilenparametern.
Falls Sie Gefallen an MakeHtmlIdx gefunden haben und die Software uneingeschränkt nutzen wollen, können Lizenz- bzw. Nutzungbedingungen und Preise für die unbeschränkte Version beim Autor erfragt werden.
Download Eine Installationspaket der aktuellen Demoversion von MakeHtmlIdx (lauffähig unter Windows 2000 und besser) kann hier heruntergeladen werden: setup.exe.
Schlusswort Für weitergehende Fragen und Anregungen stehe ich jederzeit zur Verfügung. Viel Spaß beim Testen und Realisieren eigener HTML-Anwendungen!
Extras Für diejenigen, die noch tiefer in Tricks und Kniffe der HTML- und Javascript-Programmierung einsteigen wollen, sei an dieser Stelle eine Anleitung zur Realisierung einer JavaScript- (V. 1.1) basierenden Volltextsuchmaschine und der automatischen Generierung der Suchdatenbank mit MakeHtmlIdx gegeben.

Grundlagen der Suchmaschine sind Stefan Münz's hervorragendem SELFHTML zu entnehmen. Die für jeden Webdesigner und HTML-Programmierer unentbehrliche Anleitung kann unter http://de.selfhtml.org/ heruntergeladen werden.

Der von mir erstellte Javascript-Quellcode macht Webprojekte lokal durchsuchbar, ohne dazu auf Fremdprogramme zurückzugreifen.

Es handelt sich hierbei nicht um eine Volltextsuche im HTML-Code (die das Vorhandensein von CGI-Anwendungen oder Perl-Scripts erforderlich machen würde), sondern um eine Stichwortsuche aus einer vorgegeben Datenbank. Die Daten, in denen die Suchmaschine sucht, werden aus den <a name="...">...</a>-Angaben der einzelnen HTML-Dateien durch MakeHtmlIdx gewonnen.

Zur automatischen Generierung/Pflege der Datenbank (enthalten in der Datei wdaten.js) müssen im HTML-Text Anker im folgenden Stil an den in die Datenbank aufzunehmenden Positionen positioniert werden (die Zeilenumbrüche dienen der besseren Lesbarkeit und sind im HTML-Dokument nicht erlaubt. S. dazu auch die Einschränkungen bei der Formatierung von Ankern!):

<a name="ankername"
dsc="Kurzbeschreibung" kwd="komma, separierte, stichwortliste">
Suchwort</a>
Dabei werden jeweils die in der Stichwortliste des Ankers angegebenen Suchworte gefunden und dem Suchergebnis zugeordnet.

Ein Implementierungsbeispiel ist in der Datei search.htm zu finden. Zunächst muß noch die Suchlogik sowie die Suchdatenbank geladen werden

<head>
    <script language="JavaScript1.1" src="wsuchen.js" type="text/javascript">
    </script>
    <script language="JavaScript1.1" src="wdaten.js" type="text/javascript">
    </script>
</head>
um mit
<form onSubmit="return QueryEnter()" NAME="QueryForm">
  <input type="hidden" name="str1" value="Suchergebnis">
  <input type="hidden" name="str2" value="Suche nach:">
  <input type="hidden" name="str3" value="ergab:">
  <input type="hidden" name="str4" value="Keine Treffer.">
  <input type="hidden" name="str5" value="Bitte mehr als zwei Zeichen eingeben!">
  <input type="hidden" name="css" value="styles.css">
  <input type="hidden" name="font" value="text">
  <input type="text" name="query" maxlength=30 size=30 value="">
  <input LANGUAGE="javascript" type=button onClick="Validator()" value="Suche">
</form>
die Eingabemaske zu erzeugen.

Die zugehörige Suchdatenbank wdaten.js kann schließlich automatisch mit der Vorlage

Entry[{num}] = new Element("{url}#{name}", "{alt}", "{dsc}", "{kwd}")
durch MakeHtmlIdx erzeugt werden - dabei ist die Sortierung abzuschalten, damit die Einträge in der Reihenfolge ihres Auftretens erzeugt werden.
Stichwortverzeichnis Klicken Sie Index zum Anzeigen des (mit MakeHtmlIdx aus diesem Dokument erstellten) Stichwortverzeichnisses.