Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Erstellen von HTML Help Dateien

Geschrieben von: Hubert Daubmeier
Kategorie: Dokumentation

This printed page brought to you by AlphaSierraPapa

Dieser Artikel beschreibt kompakt worum es sich dabei handelt, wo die Vor- und Nachteile liegen und wie Sie es nutzen können. Und er zeigt wie Sie im Schnellgang eine eigene kompilierte Windows HTML Hilfedatei erstellen können.

Was sind HTML Help Dateien?

HTML Help (*.chm) ist das Nachfolgeformat der allseits bekannten HLP Hilfedateien. CHM Dateien sind komprimierte HTML Dateien, welche in einem Archiv gespeichert werden. Im CHM sind neben den HTML Dateien auch die abhängigen Objekte wie zB Grafiken gespeichert. Meist haben HTML Help Dateien einen Verzeichnisbaum der automatisch oder manuell erstellt und gepflegt werden kann. Weitere optionale Elemente sind ein Index (Schlüsselwortliste) und die notwendigen Daten zur Volltextsuche. Zahlreiche Beispiele finden Sie beispielweise im Verzeichnis c:\windows\help oder c:\winnt\help.

Warum HTML Help einsetzen?

HTML Help ist für Programmierer gedacht, die ihr eigenes Programm um ein Hilfesystem ergänzen oder eine Komponente dokumentieren wollen. Neben der klassischen Programmierung bieten sich CHM Dateien an, um einfach Offline Inhalte jenseits von Programmdokumentation bereitzustellen, um Zusammengehörendes, wie etwa eine Projektdokumentation, zusammenzupacken und als eine Datei ausliefern zu können. Die Komprimierung spart Platz und die eingebaute Navigation erleichtert den Einstieg.

Alternativen zu HTML Help sind PDF Dokumente, die neben dem Umstieg auf ein anderes Werkzeug nicht die Möglichkeiten von HTML bieten: zum Beispiel wird in CHM Dateien Scripting und Multimedia unterstützt. Ein Nachteil der HTML Hilfe ist die Plattformabhängigkeit.

Grundzüge der Erstellung von HTML Hilfe

Die Inhalte der Hilfe werden in HTML Seiten erstellt. Zum Erstellen der Seiten kann jeder HTML Editor eingesetzt werden. Eine (sehr) einfache Editor-Funktion ist im HTML Help Workshop selbst eingebaut.

Der oben erwähnte HTML Help Workshop ist das wichtigste Werkzeug bei der Erstellung von HTML Help Dateien. Es ist ein kostenlos ladbares Programm von Microsoft, das die folgenden Grundfunktionen und einiges darum herum beinhaltet:

Zur Unterstützung des Autors gibt es mehrere kommerzielle Pakete wie z.B. RoboHelp oder HelpMagician, (mehr dazu auch unter HTML Help Sidebar) die komplexere Projekte ermöglichen. In diesem Artikel geht es um den Schnellstart ohne diese Hilfsmittel.

Zur Anzeige der HTML Help Datei werden Komponenten des Internet Explorers verwendet. Auf den Betriebssystemversionen nach Windows 95 sind üblicherweise alle Komponenten standardmäßig installiert. Die Internet-Einstellungen des Client-Rechners, wie Zeichensatz, Schriftgrößen oder Sicherheitseinstellungen werden vom Hilfesystem übernommen. Wer sich beispielsweise über zu große oder zu kleine Schrift wundert, weiß hiermit wo sich die Einstellung ändern lässt.

Legen wir los

Der HTML Help Workshop, den es übrigens nur in englischer Sprachversion gibt, kann von hier geladen werden (zum Zeitpunkt der Erstellung dieses Artikels war die HTML Help Version 1.32 aktuell). Beim Setup kann die Meldung "This Computer already has a newer version of HTML Help" erscheinen, die getrost ignoriert und übersprungen werden kann. Dahinter steht der Versuch die Windows Hilfe - das reine Anzeigewerkzeug, nicht das Autorenwerkzeug - in Form der HH.EXE zu aktualisieren; was sich etwa im Fall von Windows 2000 und höher erübrigt.

Nach der Installation findet sich im Startmenü eine Gruppe HTML Help Workshop, von der das gleichnamige Tool gestartet wird. Los geht es mit einer neuen Projektdatei über File - New - Project. Es wird ein Assistent mit den folgenden Schritten gestartet:

Nach Abschluß des Assistenten sollte es etwa so aussehen.

Ein Doppelklick auf einen beliebigen Eintrag im Options-Bereich oder das erste Icon in der vertikalen Symbolleiste am linken Rand öffnet den Eigenschaften Dialog des Projekts. Interessant hier: dem "Kind" unter Title einen Namen geben. Den Reiter wechseln zu Files und dort die Inhaltsverzeichnisdatei (contents file), automatische Erstellung es Inhaltsverzeichnis und die Überschriftentiefe (head level) auf vernünftigere 2 oder 3 stellen.

Damit könnte der erste Compilelauf stattfinden. Die Schaltfläche dazu findet sich auf der horizontalen Symbolleiste als drittes Symbol oder als Befehl im File Menü. Zum Betrachten der eben kompilierten Datei dient das vierte Symbol auf derselben Symbolleiste (neben dem Compilerknopf) oder als Befehl im View-Menü.

Projektdateien von Hand verwalten

Neugierig geworden? Nach den oben beschriebenen Schritten sieht die Projekt-Datei (Endung HHP für HTML Help Project) beispielsweise wie folgt aus:

[OPTIONS]
Auto TOC=2
Compatibility=1.1 or later
Compiled file=MeinProjekt.chm
Default topic=Demo.htm
Display compile progress=No
Language=0x407 Deutsch (Deutschland)
Title=Mein erstes Projekt


[FILES]
Demo3.htm
Demo2.htm
Demo1.htm

[INFOTYPES]

Interessant ist die Liste der eingebundenen HTML Seiten. Wer möchte, kann hier durchaus von Hand weitere Dateien einpflegen oder die Liste auf Vollständigkeit prüfen. Die Optionen werden praktischerweise besser im Workshop eingestellt. Selbstverständlich lassen sich auch die Dateien im HTML Help Workshop vollständig verwalten.

Inhaltsverzeichnis pflegen

Nach dem ersten Kompilierlauf findet sich das automatisch erzeugte Inhaltsverzeichnis als xxx.HHC Datei auf der Platte. Ab hier stellt sich die Frage, will ich die Datei weiterhin vom Workshop bei jedem Kompilierlauf neu erzeugen lassen oder stelle ich die automatische Generierung ab und pflege sie von Hand weiter. Es handelt sich um "handelsübliches HTML" ohne besondere Tricks, wie das folgende Beispiel verdeutlicht. Letztlich entscheidet persönliche Präferenz und die Erfordernisse des Projekts, sodaß es hier keinen allgemeingültigen Rat geben kann.

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
<!-- Sitemap 1.0 -->
</HEAD><BODY>
<UL>
  <LI> <OBJECT type="text/sitemap">
    <param name="Name" value="Einführung">
    <param name="Local" value="Demo1.htm">
    <param name="ImageNumber" value="1">
    </OBJECT>
  <LI> <OBJECT type="text/sitemap">
    <param name="Name" value="Funktionen">
    <param name="Local" value="Demo2.htm">
    <param name="ImageNumber" value="1">
    </OBJECT>
</UL>
</BODY></HTML>

Der Workshop ist hilfreich beim Arrangieren der einzelnen Überschriften. Reihenfolge und Gliederungstiefe lassen sich im Contents-Tab verschieben und anpassen. Per Doppelklick auf einen Inhaltseintrag öffnet sich die Eigenschaftenseite eines Eintrags. Im Tab Advanced können Sie den Image Index (gewissermaßen die Überschriftenebene) ändern. Wird dort die standardmäßige auto Einstellung abgewählt, lassen sich mit den Pfeilknöpfen alle Einträge beliebig verschieben.

Index erstellen

Ein Wort der Warnung: beim ersten Erkunden der Möglichkeiten bleibt es nicht aus, daß der Tab Index Interesse findet. Wenn Sie nicht jetzt gleich beabsichtigen die weitere erforderliche Arbeit in die Erstellung der Indexes zu investieren, brechen Sie beim Angebot einen automatischen Index zu erstellen besser ab, denn sonst ist Ihnen der erzeugte leere Index ständig im Weg und in der Ergebnisdatei stört ein leerer Index auch.

Was ist ein Index? Als sichtbares Ergebnis hat die fertige CHM Datei einen neuen Tab in der linken Navigationsleiste. Falls die Navigationsleiste nicht sichtbar ist, kann man diese per Klick auf den Einblenden-Button im Toolbar einschalten.

Der Index ist eine Liste von Begriffen, die nicht direkt mit dem Inhaltsverzeichnis zu tun haben müssen. Ein Doppelklick auf einen Indexeintrag zeigt die zugehörige Seite an (oder Seiten). Der Index macht es letztlich dem Leser leicht, auf unterschiedlichen Wegen zur gewünschten Information zu finden. Leider erfordert die Erstellung einiges an Arbeit; und mehr noch viel Nachdenken über gute Begriffe zur Aufnahme in den Index. Dem steht gegenüber, daß der Index von der Mehrheit der Benutzer als bevorzugte Suchmethode verwendet wird..

Der klassische Ansatz ist

Als andere Variante können die Keywords direkt im HTML Code eingebettet werden, wie das folgende Beispiel zeigt.

<Object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
  <param name="Keyword" value="Accept">
  <param name="Keyword" value="ConnectionTimeout">
  <param name="Keyword" value="TrustUnknownCA">
  <param name="Keyword" value="UserAgent">
</OBJECT>

Eine dritte Variante, die sich bei größeren Projekten empfiehlt, ist die Pflege des Index außerhalb des HTML Help Workshops. Denn in der Praxis passiert folgendes: in verschiedenen Seiten taucht der gleiche Begriff mehrmals unter unterschiedlichen Keywords auf. Beispiel: "Anlage", "Anlagen" und "Attachment". So etwas sehe ich teilweise in der fertigen Hilfedatei. Die Pflege wird jedoch umständlich. Hinzu kommt, daß bei der Durchsicht der Schlüsselwörter einfacher auffällt, daß der Benutzer möglicherweise gar nicht an "Anlagen" denkt und folglich der Sucherfolg ganz einfach gesteigert werden kann mit zusätzlichen Schlüsselwörter wie etwa "Datei anfügen" und "Anhängen".

Praktischer ist es, in diesem Fall den Index in einer Excel-Datei zu pflegen. Beim Erstellen des Indexes hilft ein kleines Script.

Als Vorbereitung braucht es eine Exceltabelle mit zwei Spalten. In der ersten steht der Dateiname der HTML-Seite und in der zweiten Spalte wird das Schlüsselwort eingetragen. Je Seite können mehrere Schlüsselworte eingetragen werden. Es wird einfach der Dateiname wiederholt und das neue Schlüsselwort eingetragen. Auf diese Art kann man einfach nach Schlüsselworten sortieren und sich die Pflege deutlich erleichtern. Das Beispiel im Download verdeutlicht das Prinzip noch einmal.

  Option Explicit
  Const CDATABASE = "keywords.xls"
  Const OUTPUTDATEI = "meinprojekt.hhk"
  Const OVERWRITE = True
  Dim oRS, oConn, fso, KeyDatei, strOutput
  strOutPut = vbTab & "<LI> <OBJECT type=""text/sitemap"">" & vbCrLf & _
    vbTab & vbTab & "<param name=""Name"" value=""yyyy"">" & vbCrLf & _
    vbTab & vbTab & "<param name=""Local"" value=""xxxx"">" & vbCrLf & _
    vbTab & vbTab & "</OBJECT>" & vbCrLf

  Set fso = CreateObject("Scripting.FileSystemObject")
  Set KeyDatei = fso.CreateTextFile(OUTPUTDATEI, OVERWRITE)
  WriteHead()
  Readdb
  WriteFooter()
  KeyDatei.Close
  MsgBox "Fertig"


  Sub Readdb()
    Set oConn = CreateObject("ADODB.Connection")
    oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Excel 8.0;DATABASE=" & CDATABASE
    Set oRs = oConn.Execute("SELECT * FROM Datenbank ORDER BY 2")
    Do Until oRs.eof
      KeyDatei.write Replace(Replace(strOutPut, "xxxx", oRS(0)), "yyyy", oRS(1))
      oRs.MoveNext 
    Loop 
    oRs.close
    oConn.close 
  End Sub


  Sub WriteHead()
    KeyDatei.Write "<HTML>" & vbCrLf & "<HEAD>" & vbCrLf & _
      "<!-- Sitemap 1.0 -->" & vbCrLf & "</HEAD>" & vbcrlf & _
      "<BODY>" & vbCrLf & "<UL>" & vbCrLf
  End Sub


  Sub WriteFooter()
  	KeyDatei.Write "</UL>" & vbCrLf & "</BODY></HTML>"  	
  End Sub

Volltextsuche

Nach der Arbeit mit dem Index ist die Volltextsuche ziemlich einfach zu implementieren. Das Eigenschaftenfenster des Projekts öffnen und im Tab Compiler die Checkbox "Compile fulltext search information" einschalten. Aber Vorsicht, die Dateigröße wird deutlich größer. Ist Platz bzw. Übertragungsgeschwindigkeit ein Thema, wäre zu überlegen, ob es das Feature wert ist. Es kommt hinzu, daß in der Praxis so mancher Benutzer eine Volltextsuche nicht verwendet.

Für Leute, die sich trauen die Volltextsuche zu verwenden ist es jedoch einfach und praktisch. Als Beispiel könnte man auf die Idee kommen, die Dateien von SelfHTML in eine CHM Datei zu packen um sie hinterher per Volltextsuche zu durchsuchen. Als kleinen Bonus finden Sie ein Script im Download, das bei der Erstellung der Dateienliste hilft. Für eine vollautomatische Generierung einer SelfHTML in CHM-Format mit Volltextsuche reicht es allerdings noch nicht ganz aus. Wenn Sie aber die automatische Erzeugung des Inhaltsverzeichnisses abschalten steht zumindest einem ersten Schnelltest nichts mehr im Weg.

Einige Tips

Schlußbemerkung

Mein besonderer Dank gilt Dominik-Pascal Kovacic-Voß, Frank Matthiesen und Jens Lukas für Ihre Durchsicht und die kritischen Beiträge bei der Erstellung dieses Artikels. Ich hoffe, wir konnten Ihnen eine praktische und nachvollziehbare Anleitung zum Erstellen von CHM Dateien liefern. Es stecken noch viele Möglichkeiten im System, die heute in der Kürze eines Artikels nicht angesprochen werden konnten.

This printed page brought to you by AlphaSierraPapa

Download des Codes

Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20020617.zip

Verwandte Artikel

C# XML-Kommentare — Dokumentation von selbst
http:/www.aspheute.com/artikel/20020730.htm
Schreib"kunst" für Programmierer, Teil I
http:/www.aspheute.com/artikel/20020506.htm

Links zu anderen Sites

HTML Help Download
http://msdn.microsoft.com/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp
HTML Help Sidebar
http://www.microsoft.com/mind/0297/htmlhelpsidebar.htm

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.