# インフォメーション・ライブラリの構築

この章では、SGML ドキュメントを検証してインフォメーション・マネージャでブラウズ可能なライブラリを構築するための `dtdocbook2infolib` サブコマンドの使用方法、およびブックケースのスタイル・シート情報を更新する方法について説明します。

`dtdocbook2infolib validate` コマンドを使用して、SGML ブック・ドキュメントおよびブックケース規定を検証します。検証は、構築のための準備期間に有用です。

`dtdocbook2infolib build` コマンドを使用して、SGML の検証実行はもとより、新規インフォメーション・ライブラリの構築、既存インフォメーション・ライブラリへのブックケース追加、および既存ライブラリの更新を行います。

インフォメーション・ライブラリを一度構築すれば、`dtdocbook2infolib update` コマンドを使用して、ライブラリに関連するスタイル・シート情報を更新することができます。これらの手続きは、次で説明しています。

- 「SGML ドキュメントの検証」

- 「ライブラリのブックケースの構築、追加、および置換」

- 「構築されたブックケースのスタイル・シートの更新」

コマンドの構文およびこれらのコマンドの例については、`dtdocbook2infolib(1)` マニュアル・ページを参照してください。

## 新規ライブラリ構築の前に

インフォメーション・マネージャの新規インフォメーション・ライブラリを構築する前に、次に示すことを行う必要があります。

- 外部エンティティ参照をユーザのシステム・ファイルにマップするときに使用されるメソッドを指定します。次のうちのいずれかで行うことができます。

  - 外部エンティティ参照の適切な環境変数を設定します。

  - `dtdocbook2infolib build` コマンドの `-m` オプションを使用して、適切なカタログ・ファイルを指定します。

- 必要な SGML 準拠ドキュメントがすべて揃っているか確認します。これには、ブックケースの各ブックのための文書型定義、ハイパーテキスト目次、およびスタイル・シートが含まれます。「dtdocbook2infolib validate の実行」 で説明しているように、`dtdocbook2infolib validate` コマンドを使用して、SGML ドキュメントを検証することができます。

- 「ライブラリのブックケースの構築、追加、およぴ更新」 で説明しているように、`dtdocbook2infolib build` のオプションを理解します。

## 環境変数の設定

ユーザが、SGML Open Technical Resolution 9401:1994 の外部エンティティ参照に関する推奨を使用しているかどうかに依存して、以下の環境変数のひとつまたは両方を設定するか、`dtdocbook2infolib` コマンドの `-m` オプションを使用する必要があります。

`SGML_CATALOG_FILES`

- SGML Open Technical Resolution 9401:1994 の外部エンティティ管理に関連する推奨にしたがっている場合は、この環境変数を設定してください。この環境変数の値は、SGML エンティティ宣言の一覧表記とファイル・マッピング識別子がある `catalog` または `CATALOG`（大文字、小文字どちらでも使用することができます）の位置を指定します。

  環境変数を設定しない場合は、適切な `dtdocbook2infolib` コマンドの `-m` オプションを使用して、パブリックな識別子とエンティティ名をシステム・ファイルにマップすることができます。 詳細については、`catalog(5)` マニュアル・ページを参照してください。

`SGML_PATH`

- 外部エンティティ参照をシステム・ファイルにマップするときに、この環境変数を設定します。

  詳細については、`dtdocbook2infolib(5)` マニュアル・ページを参照してください。

関連情報については、以下に示す文献を参照してください。

- SGML Open Technical Resolution 9401:1994

## SGML ドキュメントの検証

インフォメーション・ライブラリを構築する前に、適切な文書型定義にしたがっているか確認するために、SGML ドキュメントを検証しなければなりません。

`dtdocbook2infolib validate`
コマンドを使用して、ブックケース規定、個別のドキュメント、および他の SGML 準拠ドキュメントの SGML 検証を行うことができます。検証過程において、`dtdocbook2infolib validate` は、次に示すことを実行します。

- SGML にしたがっていることを検証するために、入力ドキュメントの文書型定義をチェックします。

- 入力ドキュメントの SGML マークアップが、ドキュメントの文書型定義で定義されているマークアップ言語と整合性があることを検証します。

無効なドキュメントを検出した場合には、`dtdocbook2infolib validate` プログラムによってエラー・メーセージが出力されます。インフォメーション・ライブラリを構築するときに使用されるファイルのエラーは、データが構築される前に、すべて修正されなければなりません。

### dtdocbook2infolib validate の実行

次に示す例の基本的なコマンド行（これは、単一ブックケースのインフォメーション・ライブラリの検証を実行します）は、以下のとおりです。

    dtdocbook2infolib validate ch03.sgm ch04.sgm ch05.sgm

以下に、引き数の説明を示します。

`ch03.sgm ch04.sgm ch05.sgm`

検証すべき SGML ドキュメントを指定します。`dtdocbook2infolib validate` コマンドは、いかなる有効な SGML 準拠ドキュメントに対しても実行することができます。

ドキュメントが無効な場合は、エラー・メッセージが返されます。例のファイル `ch05.sgm` に対して返されたエラーの型の例を、次に示します。これには、不足あるいは無効のエンティティ宣言があります。

    %:  dtdocbook2infolib validate

    nsgmls:ch05.sgm:12:1:E: cannot open "hal.gml" (No such file or directory)
    nsgmls:ch05.sgm:20:1:E: general entity "tab" not defined and no default entity
    ..............................
    ..............................
    ..............................
    dtdocbook2infolib: command failed: nsgmls -sg /usr/dt/infolib/C/SGML/dtinfo.decl ch05.sgm
    ch05.sgm

## ライブラリのブックケースの構築、追加、および置換

本節では、ブックケースの新規インフォメーション・ライブラリへの構築、既存のインフォメーション・ライブラリへのブックケースの追加、および既存のライブラリのインフォメーション・データベースの更新を行うための `dtdocbook2infolib build` コマンドの使用方法について説明します。

### 構築にあたって考慮すること

ブックとブックケースをいくつでも含むすべてのサイズのインフォメーション・ライブラリを構築することができます。次に示すインフォメーション・ライブラリ（これに限られるわけではありません）を構築することができます。

- ひとつまたは複数のブックから成る単一のブックケース

- それぞれがひとつまたは複数のブックから成る複数のブックケース

インフォメーション・ライブラリを設計するときには、インフォメーション・マネージャにおけるその表現とユーザによるその表示を考慮しなければなりません。多くのユーザは、オンラインのマニュアルに慣れていないかもしれないからです。

インフォメーションの構造とインフォメーションの検索機能は、オンラインのインフォメーション・ライブラリの設計にあたって、もっとも重要な要素の一部です。ユーザが、容易に、ブックの構造を下ったり、ブックケースのブックを設定できるようにしなければなりません。さらに、明確なハイパーテキスト・リンクと効果的な検索機構によって、望む情報をすばやく見つけることができるようにしなければなりません。

#### ライブラリの構成

インフォメーション・マネージャには、非常に強力な検索機能があります。しかしながら、ユーザのインフォメーション・ライブラリの構成は、検索過程の効果に影響します。

一般に、インフォメーション・ライブラリのブックケースが少ければ少いほど、また、各ブックケースに含まれるブックが少ければ少いほど、構築過程の進捗は高速になります。また、このようなインフォメーション・ライブラリ構造は、すばやく、容易に更新することができます。

残念ながら、ブックケース数が増加すると、情報に関してその内容を検索するブラウザ機能については、このようなライブラリ構造は非効果的になります。

その一方、その内容が相対的に大量のブックを含む少量のブックケースから構成されるインフォメーション・ライブラリは、構築とその後の更新により長い時間を要するようになります。しかし、このようなライブラリ構造の検索時間は、顕著に短縮されます。

#### 構築スペース

インフォメーション・ライブラリを構築する前に、十分なスペースを構築過程が行われる適切な場所に確保しなければなりません。

構築が完了すると、インフォメーション・ライブラリは、構築の元になったソースとほぼ同じ容量のスペースを占めます。しかしながら、構築過程そのものについては、一時的ファイルの記憶領域として、最大３倍の追加スペースが必要です。この追加スペースは、構築完了時に自動的に削除される一時的な構築スペースとして確保しなければなりません。一時的な構築スペースのデフォルトは、`/usr/tmp` に確保されます。

`/usr/tmp` で使用可能なディスク・スペースが、元のドキュメント・ソースのサイズの３倍よりも小さい場合、`dtdocbook2infolib build` コマンドの `-T` オプションを使用して、一時的な構築ファイルのために別の場所を指定するか、 `TMPDIR` 環境変数を設定しなければなりません。

インフォメーション・マネージャの現在のバージョンには、ユーザが同じインフォメーション・ライブラリの構築や修正を同時に行うことを回避する同時使用のロック機構がありません。`dtdocbook2infolib build` コマンドを実行するときには、他の `dtdocbook2infolib` やインフォメーション・マネージャのプロセスが、インフォメーション・ライブラリにアクセスしないことを確認するため、事前に注意を払ってください。`dtdocbook2infolib` コマンドの同時使用は、インフォメーション・マネージャの失敗をもたらします。

## インフォメーション・ライブラリの編成

インフォメーション・ライブラリを構築すると、ブラウザで表示可能なファイルが、図 「構築ディレクトリ構造」 で示される構造で編成されます。

### 構築ディレクトリ構造

構築ディレクトリ構造を、以下に示します。

`BC``.dbd`

- このファイルは、ブックケース `BC` のためのドキュメント・データベースです。これには、すべてのコンパイルされたテキスト、グラフィック、および表のデータが含まれます。

`BC``.dbi`

- このファイルには、ブックケース `BC` のための索引データが含まれます。

`BC``.sch`

- このファイルには、データベースの構造が記述されています。

`dtsearch` directory

- このディレクトリには、全文検索エンジンに関係するすべてのファイルが含まれます。

`bookcase.map`

- このファイルは、ブックケースをライブラリ内に編成します。`dtdocbook2infolib admin` コマンドを使用して、このファイルを修正することができます。

`LIB``.oli`

- `LIB` のために使用される文字列は、ライブラリにそのファイル名を与えます。

## 新規ライブラリの構築

新規のインフォメーション・ライブラリ構築のための基本的な `dtdocbook2infolib build` コマンド行の例を、次に示します。

    dtdocbook2infolib build -T /k1/local/daver/ -l InfoLib1 DCE.bc INFOMGR.bc PROG.bc

各オプションの意味を、以下に示します。

`-T` `/k1/local/daver`

- 構築過程で生成される一時的なファイルが置かれる場所を指定します。

`-l` `InfoLib1`

- インフォメーション・ライブラリを含むディレクトリの名前を指定します。構築後、`InfoLib1` には、続くコマンド行の引き数で指定される３つのブックケースが含まれます。

`DCE.bc INFOMGR.bc PROG.bc`

- ブックケース規定ファイルのファイル名を指定します。各ブックケース規定には、構築されるひとつまたは複数のブックの名前が含まれます。コマンド行では、任意の数のブックケースのファイル名を指定することができます。

`dtdocbook2infolib build` コマンドは、ブックケース規定のそれぞれで指定されたドキュメントをブラウザで表示可能なフォーマットに変換し、それらを新規に作成されたインフォメーション・ライブラリのディレクトリ `InfoLib1` に置きます。

３つのブックケースの名前を（それぞれのブックケースの BOOKCASENAME 要素で指定されるように）それぞれ `DCE`、`INFOMGR`、および `PROG` とすると、`InfoLib1` ディレクトリ下に、ブックケースのディレクトリ `DCE`、`INFOMGR`、および `PROG` が生成されます。その一方、各ブックケースには、その BOOK 要素で指定されるドキュメント・データベース（ブック）が含まれます。

図 「新規ライブラリの作成」 は、新規に構築される `InfoLib1` ライブラリを示しています。

### 新規ライブラリの作成

## 既存ライブラリへのブックケース追加

インフォメーション・マネージャの新規インフォメーション・ライブラリ作成に加えて、`dtdocbook2infolib build` を使用して、既存のインフォメーション・ライブラリにまだ構築されていないブックケースを追加することもできます。以下に示す例では、引き数 `-l` `InfoLib1` が、新規のインフォメーション・ライブラリではなく、既存のインフォメーション・ライブラリの名前であることを仮定しています。

    dtdocbook2infolib build -l InfoLib1 ORA.bc

以下に説明を示します。

`-l` `InfoLib1`

- これは、既存のインフォメーション・ライブラリを含むディレクトリの名前です。

`ORA.bc`

- これは、その内容を `InfoLib1` インフォメーション・ライブラリに追加するブックケース規定ファイルの名前です。コマンド行では、任意の数のブックケース規定名を指定することができます。

`dtdocbook2infolib build` これは、ブックケース規定ファイル `ORA.bc` のブック・ドキュメントを、ブラウザで表示可能なフォーマットに変換し、それらを既存のインフォメーション・ライブラリのディレクトリ `InfoLib1` に追加します。

追加されるブックケースの名前を（その BOOKCASENAME 要素で指定されるように）`ORA` と仮定すると、`InfoLib1` ディレクトリには、ブックケースのディレクトリ `DCE`、`INFOMGR`、`PROG` および `ORA` が生成されます。

図 「既存のライブラリへのブックケース追加」 は、更新された `InfoLib1` ライブラリを示しています。

追加されるブックケースは、インフォメーション・マネージャのブック・リスト中の既存のブックケースのリストの末尾に追加されます。`dtdocbook2infolib admin` コマンドを使用して、構築後にリストの再調整を行うことができます。 `dtdocbook2infolib(1)` マニュアル・ページを参照してください。

### 既存のライブラリへのブックケース追加

## 既存のライブラリのブックケースの置換

インフォメーション・ライブラリの作成および既存のライブラリへのブックケース追加に加えて、`dtdocbook2infolib build` コマンドで、ライブラリの指定されたブックケースを置換することもできます。以下に示す例では、`dtdocbook2infolib build` プロセスが、ブックケース `INFOMGR` および `PROG` の再構築と `InfoLib1` インフォメーション・ライブラリにある同じ名前の既存ブックケースの上書きを行うために使用されています。

    dtdocbook2infolib build -l InfoLib1 INFOMGR.bc PROG.bc

各オプションの説明を、以下に示します。

`-l` `InfoLib1`

- これは、既存のインフォメーション・ライブラリがあるディレクトリの名前です。

`INFOMGR.bc PROG.bc`

- これは、その内容で、インフォメーション・ライブラリ `InfoLib1` を更新するために再構築するブックケース規定ファイルのファイル名です。コマンド行では、任意の数のブックケース規定のファイル名を指定することができます。

`dtdocbook2infolib build` は、ブックケース規定ファイル `INFOMGR.bc` および `PROG.bc` のブックを再構築し、それらを既存のインフォメーション・ライブラリのディレクトリ `InfoLib1` に置きます。

そのブックケース名が（それぞれの BOOKCASENAME 要素で指定されているように）`INFOMGR` および `PROG` である新規に構築されたブックケースは、同じ名前をもつ既存のブックケースを上書きします。

図 「既存ライブラリのブックケースの置換」 は、更新された `InfoLib1` ライブラリを示しています。

### 既存ライブラリのブックケースの置換

## 構築されたブックケースのスタイル・シートの更新

インフォメーション・マネージャでは、そのデータベースを再構築せずに、既存のブックケースのフォーマット指定を変更することができます。この機能によって、異なる読者や製造要件に合致するように、フォーマット属性を変更しなければならないブックを処理するときに、柔軟な対処が可能になります。

`dtdocbook2infolib update` コマンドを使用して、フォーマットを管理するスタイル・シート情報を更新することによって、既存のインフォメーション・ライブラリのブックの再フォーマットを行います。

`dtdocbook2infolib update` によって、スタイル・シートを更新してその変更の結果をすばやく確認したり、あるスタイル・シートを別のものに置き換えて関連するドキュメントの再フォーマットをすばやく行うことができます。

`dtdocbook2infolib update` を実行すると、スタイル・シートの変更によって影響を受けるドキュメントあるいはドキュメントのセクションのみが再フォーマットされます。

`dtdocbook2infolib update` を実行して、インフォメーション・ライブラリのドキュメントを再フォーマットする前に、次のことを行います。

- スタイル・シートに対して行った変更が有効なものであることを確認します。`dtdocbook2infolib update` コマンドは、更新過程において、スタイル・シートのファイルを検証します。

- `dtdocbook2infolib update` を実行するときに、外部エンティティ参照を処理するための適切な環境変数の設定、あるいは、`-m` オプションの使用による適切なカタログ・ファイルの指定を行います。

スタイル・シートを更新しているときには、インフォメーション・マネージャや `dtdocbook2infolib admin` プロセスを実行してはいけません。

### dtdocbook2infolib update の実行

次に示す例の基本的なコマンド行は以下のとおりです。この例は、指定されたスタイル・シートを使用するドキュメントあるいはドキュメントのセクションを再フォーマットするものです。

    dtdocbook2infolib update -l InfoLib1 -b INFOMGR style1.sty

各オプションの意味を、以下に示します。

`-l` `InfoLib1`

- これは、既存のインフォメーション・ライブラリがあるディレクトリの名前です。

`-b` `INFOMGR`

- これは、指定されたスタイル・シートで再フォーマットされるセクションを含むブックケースの名前（その BOOKCASENAME 要素で指定されているように）です。

`style1.sty`

- これは、`dtdocbook2infolib update` のプロセスにおいて、適用されるスタイル・シートのファイル名です。使用するスタイル・シートは、「インフォメーション・マネージャのスタイル・シートの理解」 で説明しているように `StyleSheet.dtd` に準拠していなければなりません。

`dtdocbook2infolib update` のプロセスを実行した後、変更の効果を確認するために、インフォメーション・マネージャのブック・リスト・ウィンドウを使用してインフォメーション・ライブラリを開くことができます。

関連情報については、以下を参照してください。

- `dtdocbook2infolib(1)` マニュアル・ページ

- 「ブックケース規定の作成」

- 「スタイル・シートの使用」

- 「インフォメーション・マネージャのスタイル・シートの理解」