HTML Help の自動生成

トップに戻る


HTML Help とは

Windows でのみ利用可能なヘルプの形式です. スタートメニューの「ヘルプ」などで見ることができます. 目次,キーワードからの項目表示が可能で,加えて全文検索機能が利用できます.

HTML Help の作り方

Keiyu HelpLab に詳しくまとめられています. ここでは, HTML Help ファイルを構成するプロジェクトファイル,コンテンツファイル, インデクスファイルの中身がどのようになっているかについてだけ,紹介します.

HTML Help 自動生成のパターン

基本的には,以下の手順で実装が可能です.

利用例

文学部西洋史学研究室 では, 実データを XML で記述し,カスタマイズした namazu によって web からの検索機能を実装しています. しかし,回線の細いコンピュータや切り離されたコンピュータでの利用, また大学の停電などによるサーバの一時停止時への対処などから, HTML Help の生成も試みています. 実装としては,XML から HTML へ変換すると同時にタグの中身から コンテンツ構造とキーワードを抽出し, コンテンツファイルやインデクスファイルを生成しています.

ファイルの構成

基本的なファイルの構成は,Microsoft HTML Help Workshop (MSDN Online Library からダウンロード可能です)を使って ファイルを作成してみると分かると思いますが,次のようになっています.

#{subdir} に index.html などのファイルが置かれており,
#{title}がタイトルであるような hhp ファイルは次のように
なっています.

[OPTIONS]
Compatibility=1.1 or later
Compiled file=#{filename}.chm
Contents file=#{filename}.hhc
Binary Index=Yes
Binary TOC=No
Default Window=titlewindow
Default topic=#{subdir}/index.html
Display compile progress=Yes
Full-text search=Yes
Index file=#{filename}.hhk
Language=0x411 日本語
Title=#{title}

[WINDOWS]
titlewindow="#{title}","#{filename}.hhc",
"#{filename}.hhk","#{subdir}/index.html",
"#{subdir}/index.html",,,,,0x22520,,0x300e,,,,,,,,0

[FILES]
{HTML ファイルリストをここに}
コンテンツファイルは,以下のように,OBJECT タグを要素とするような
UL, LI タグで構造化された HTML になっています.
HTML Help Compiler 4.74.8702 の実装では,
li の開始タグと object 開始タグが同一行であること,
また param タグはそれぞれ独立した行に置くことが必要です.
ツリー構造を操作するライブラリを用いてファイルを生成する場合は,
これに注意しないと,不可解な出力結果となることがあります.

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<!-- Sitemap 1.0 -->
</HEAD><BODY>
<UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="トップ要素のタイトル">
<param name="Local" value="トップ要素のURL(例: subdir/index.html)">
</OBJECT>

<UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="トップ要素の子供はULタグで包む">
<param name="Local" value="subdir/child.html">
</OBJECT>
</LI>
</UL>
</LI>

</UL>
</BODY></HTML>
インデクスファイルについても,同様の注意が必要です.
LI タグと OBJECT タグは同じ行に,PARAM タグは改行してから置いてください.

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<!-- Sitemap 1.0 -->
</HEAD><BODY>
<UL>

  <LI><OBJECT type="text/sitemap">
      <param name="Name" value="キーワード欄に表示される文字列">
      <param name="Name" value="同一キーワードが複数ある場合のページ名">
      <param name="Local" value="HTMLファイル名 subdir/index.html">
  </OBJECT></LI>

  <LI><OBJECT type="text/sitemap">
      <param name="Name" value="サンプル">
      <param name="Name" value=".hhk ファイルのサンプル">
      <param name="Local" value="subdir/hhksample.html">
  </OBJECT></LI>

  <LI><OBJECT type="text/sitemap">
      <param name="Name" value="サンプル">
      <param name="Name" value=".hhc ファイルのサンプル">
      <param name="Local" value="subdir/hhcindex.html">
  </OBJECT></LI>

  <LI><OBJECT type="text/sitemap">
      <param name="Name" value="以下繰り返し">
      <param name="Name" value="自動整列されるので,順番は適当でもOKです">
      <param name="Local" value="subdir/hoge.html">
  </OBJECT></LI>

</UL>
</BODY></HTML>

トップに戻る

Written by いしお たかし