DELETE 時
2.5 文書検索プラグインのデータベースの作成
2.5.2 SGML 定義情報の作成
Text Search Plug-in システムで文書検索プラグインの環境を構築するには,文書検索プラグインが使用 する表の SGMLTEXT 型の列の作成に必要な情報を定義するファイルを作成します。必要な情報とは,
SGML テキストデータの構造と文書要素を表すタグ名称などを定義する DTD,検索に不要なタグや文書 要素の削除,参照タグと外字コードの対応を定義する正規化パラメタのことです。これらの情報をまとめ て,SGML 定義情報といいます。
ファイルは,テキストエディタなどを使用して作成します。作成する列の種別によって必要なファイルは 異なります。作成する列の種別ごとに必要となるファイルを次の表に示します。
表 2‒4 文書検索プラグインの SGML 定義情報の作成に必要なファイル
必要なファイル名 列種別
構造なし文書用の列 構造化文書用の列
DTD ファイル × ○
正規化パラメタファイル × △
(凡例)
○:必要
×:不要
△:任意
注意事項
• Text Search Plug-in の定義に必要なファイルの名称は,ご利用の OS の制限に従ってください。
• 各ファイルの内容は,HiRDB をセットアップした文字コード,および「付録 A 登録する文書(テ
キストデータ)および文字列データに使用できる文字」に示す文字コードで記述してください。
(1) DTD ファイル
DTD ファイルとは,構造化文書用の列に対して,登録する文書の構造を定義するためのファイルです。一
つの列に一つの DTD ファイルを作成します。DTD ファイルはテキストエディタなどで作成します。な お,構造なし文書用の列を作成する場合,このファイルを作成する必要はありません。Text Search Plug-in では,一つの列に対して一つの DTD を対応付けます。通常,SGML 文書には DTD が含まれています。しかし,Text Search Plug-in で管理する列には,DTD は文書と切り離して入力しま す。これによって,DTD の異なる文書の登録を避けられます。列での DTD と SGML 文書の分割につい て,次の図に示します。
図 2‒3 DTD と SGML 文書の分割
なお,列に DTD ファイルが登録されていれば,SGML 文書に DTD が含まれていても問題はありません。
ただし,SGML 文書に含まれている DTD の内容が,列に登録されている DTD の内容と矛盾している場 合は,エラーになります。
(a) Text Search Plug-in での SGML 文書の制限
Text Search Plug-in では SGML に関して次の制限があります。DTD を決定する場合は,これらの制限 に注意してください。
• SGML 宣言指定は不要です。SGML 宣言が指定されていても,内容は無効です。
• DOCTYPE は最上位構造名になります。
• 一つの列には同じ DOCTYPE を持つ文書を登録してください。
• 公開識別子(PUBLIC)は指定できません。
• システム識別子(SYSTEM)には DTD 名称を指定してください。
• 外部エンティティは扱えません。
• 登録する SGML 文書は,次に示す文字コードで作成してください。
• HiRDB をセットアップした文字コード
•「付録 A 登録する文書(テキストデータ)および文字列データに使用できる文字」に示す文字 コード
• SGML 文書中の一つのタグに対するネストレベルは 100 までです。
(b) SGML 文書中の改行コードの変換方法
SGML 文書中の改行コードの変換方法を次の表に示します。
表 2‒5 SGML 文書中の改行コードの変換方法
改行コードの前の文字 改行コードの後ろの文字 変換方法
1 バイト文字 1 バイト文字 改行コードをスペースに置換
1 バイト文字以外の文字 改行コードを削除
1 バイト文字以外の文字 1 バイト文字
1 バイト文字以外の文字
そのほかの改行コードの変換規則は次のとおりです。
• 文書(CDATA)の始めおよび終わりの改行コードは削除します。
• 改行コードだけの文字列は,一つの半角スペースに置き換えます。
• 改行コードが連続する場合は,一つの改行コードとして扱います。
(2) 正規化パラメタファイル
正規化パラメタファイルには,SGML 文書中のタグを制御するパラメタを記述します。正規化パラメタ
ファイルはテキストエディタなどで作成します。なお,SGML 文書中のタグの制御が必要ない場合,この ファイルを作成する必要はありません。正規化パラメタファイルは,DTD 単位に作成します。つまり,構造化文書用の列に対して一つ作成します。
(a) 正規化パラメタファイルの構成内容
正規化パラメタファイルは,正規化パラメタと特定文字データ変換マップで構成されます。
正規化パラメタ
•
接続対象要素リスト
要素型名のリストです。非構造要素のうち,前後にある文字データを接続する要素を指定します。
ソース上では,指定した開始タグと対応する終了タグを削除する指定です。
•
削除対象要素リスト
要素型名のリストです。非構造要素のうち,内部にある下位要素や文字データを含めて,削除する 要素を指定します。ソース上では,指定したタグ,構造内に含まれるタグおよび内容(文字データ)
をすべて削除する指定です。
特定文字データ変換マップ
ある特定の文字データを,共通的な文字コードへ変換するための指定です。SGML の構文上,テキス ト中に直接記述できない文字(例えば"<"など)や外字などの変換方法もこのマップに含めます。
(b) 正規化パラメタファイルの記述形式
正規化パラメタの指定方法
正規化パラメタは,要素型名に対して実行するオペランドを指定します。
記述形式
[ELEMENT△LIST]<改行>
"要素型名"△{CONN|DELT}<改行>
オペランド
CONN:接続対象要素リスト DELT:削除対象要素リスト
注意事項
• テキスト形式で作成してください。
• 要素型名は重複して指定できません。
• <改行>は改行コードを表しています。
特定文字データ変換マップの指定方法
特定文字データ変換マップは次の形式で記述します。
記述形式
[CHANGE△CHARACTER△LIST]<改行>
共通的な文字コードへ変換する SGML 文書中の文字データ△変換する文字<改行>
注意事項
• 共通的な文字コードへ変換する特定の文字データは,DTD ファイルに特定文字の実体を示す キーワードとして,"SDATA"で宣言されている必要があります。
• SDATA は文字コードを定義していませんので,全文検索を実行するために文字コードを定義す る必要があります。
• テキスト形式で作成してください。
• SGML 文書中の値と変換する文字は 1 行で記述してください。
• 変換する文字に,改行コード(0x0a)は指定できません。
• <改行>は改行コードを表しています。
(c) 正規化パラメタファイルの記述例
正規化パラメタファイルの記述例を次の図に示します。
図 2‒4 正規化パラメタファイルの記述例
(3) SGML 文書の正規化の例
SGML 文書の正規化の例を次の図に示します。