(57)【要約】【課題】構造化文書の特徴を損なうことなくタグ部分の圧縮を可能にし、構造化文書の圧縮率の向上をはかる。【解決手段】構造化文書を成す文書実現値のタグ内の記述を解析する文書実現値解析部２０と、この文書実現値解析部２０による解析結果に従って、該文書実現値のタグ内に記述された文字列と該文字列よりも短く且つ該文字列を特定しうる短縮文字列とを対応させるタグ辞書を作成するタグ辞書作成部８０と、このタグ辞書作成部８０により作成された該タグ辞書を用いて、該文書実現値のタグ内に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書実現値文字列置換部４１とをそなえて構成する。【選択図】図１４
2008084341.tif 000002
【特許請求の範囲】
【請求項１】
構造化文書を圧縮する方法であって、
該構造化文書を成す文書実現値のタグ内の記述を解析する文書実現値解析ステップと、
該文書実現値解析ステップでの解析結果に従って、該文書実現値のタグ内に記述された文字列と該文字列よりも短く且つ該文字列を特定しうる短縮文字列とを対応させるタグ辞書を作成するタグ辞書作成ステップと、
該タグ辞書作成ステップで作成された該タグ辞書を用いて、該文書実現値のタグ内に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書実現値文字列置換ステップとを有することを特徴とする、構造化文書の圧縮方法。
【請求項２】
構造化文書を圧縮する方法であって、
該構造化文書を成す文書実現値のタグ内の記述を解析する文書実現値解析ステップと、
該構造化文書を成す文書型定義の記述を解析する文書型定義解析ステップと、
該文書実現値解析ステップおよび該文書型定義解析ステップでの解析結果に従って、該文書実現値のタグ内および該文書型定義に記述された文字列と該文字列よりも短く且つ該文字列を特定しうる短縮文字列とを対応させるタグ辞書を作成するタグ辞書作成ステップと、
該タグ辞書作成ステップで作成された該タグ辞書を用いて、該文書実現値のタグ内に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書実現値文字列置換ステップと、
該タグ辞書作成ステップで作成された該タグ辞書を用いて、該文書型定義に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書型定義文字列置換ステップとを有することを特徴とする、構造化文書の圧縮方法。
【請求項３】
該タグ内もしくは該文書型定義に記述された要素名および属性名を前記文字列として扱い、該要素名および該属性名を該短縮文字列に置き換えることを特徴とする、請求項１または請求項２に記載の構造化文書の圧縮方法。
【請求項４】
単語文字列と該単語文字列よりも短く且つ該単語文字列を特定しうる短縮文字列とを対応させる単語辞書を用いて、該文書実現値の内容に含まれる単語文字列を、当該単語文字列に対応する短縮文字列に置き換える単語文字列置換ステップを有することを特徴とする、請求項１〜請求項３のいずれか１項に記載の構造化文書の圧縮方法。
【請求項５】
該タグ内もしくは該文書型定義に記述された文字列を該短縮文字列に置き換えるとともに該単語文字列を該短縮文字列に置き換えた後に、これらの文字列を可変長符号化により圧縮する可変長符号化ステップを有することを特徴とする、請求項４記載の構造化文書の圧縮方法。
【請求項６】
構造化文書を圧縮する装置であって、
該構造化文書を成す文書実現値のタグ内の記述を解析する文書実現値解析部と、
該文書実現値解析部による解析結果に従って、該文書実現値のタグ内に記述された文字列と該文字列よりも短く且つ該文字列を特定しうる短縮文字列とを対応させるタグ辞書を作成するタグ辞書作成部と、
該タグ辞書作成部により作成された該タグ辞書を用いて、該文書実現値のタグ内に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書実現値文字列置換部とをそなえて構成されたことを特徴とする、構造化文書の圧縮装置。
【請求項７】
構造化文書を圧縮する装置であって、
該構造化文書を成す文書実現値のタグ内の記述を解析する文書実現値解析部と、
該構造化文書を成す文書型定義の記述を解析する文書型定義解析部と、
該文書実現値解析部および該文書型定義解析部による解析結果に従って、該文書実現値のタグ内および該文書型定義に記述された文字列と該文字列よりも短く且つ該文字列を特定しうる短縮文字列とを対応させるタグ辞書を作成するタグ辞書作成部と、
該タグ辞書作成部により作成された該タグ辞書を用いて、該文書実現値のタグ内に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書実現値文字列置換部と、
該タグ辞書作成部により作成された該タグ辞書を用いて、該文書型定義に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書型定義文字列置換部とをそなえて構成されたことを特徴とする、構造化文書の圧縮装置。
【請求項８】
該タグ内もしくは該文書型定義に記述された要素名および属性名を前記文字列として扱い、該要素名および該属性名を該短縮文字列に置き換えることを特徴とする、請求項６または請求項７に記載の構造化文書の圧縮装置。
【請求項９】
構造化文書を圧縮する機能をコンピュータにより実現するための構造化文書圧縮プログラムを格納したコンピュータ読取可能な記録媒体であって、
該構造化文書圧縮プログラムが、
該構造化文書を成す文書実現値のタグ内の記述を解析する文書実現値解析部、
該文書実現値解析部による解析結果に従って、該文書実現値のタグ内に記述された文字列と該文字列よりも短く且つ該文字列を特定しうる短縮文字列とを対応させるタグ辞書を作成するタグ辞書作成部、および、
該タグ辞書作成部により作成された該タグ辞書を用いて、該文書実現値のタグ内に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書実現値文字列置換部として、該コンピュータを機能させることを特徴とする、構造化文書圧縮プログラムを格納したコンピュータ読取可能な記録媒体。
【請求項１０】
構造化文書を圧縮する機能をコンピュータにより実現するための構造化文書圧縮プログラムを格納したコンピュータ読取可能な記録媒体であって、
該構造化文書圧縮プログラムが、
該構造化文書を成す文書実現値のタグ内の記述を解析する文書実現値解析部、
該構造化文書を成す文書型定義の記述を解析する文書型定義解析部、
該文書実現値解析部および該文書型定義解析部による解析結果に従って、該文書実現値のタグ内および該文書型定義に記述された文字列と該文字列よりも短く且つ該文字列を特定しうる短縮文字列とを対応させるタグ辞書を作成するタグ辞書作成部、
該タグ辞書作成部により作成された該タグ辞書を用いて、該文書実現値のタグ内に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書実現値文字列置換部、および、
該タグ辞書作成部により作成された該タグ辞書を用いて、該文書型定義に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書型定義文字列置換部として、該コンピュータを機能させることを特徴とする、構造化文書圧縮プログラムを格納したコンピュータ読取可能な記録媒体。
【請求項１１】
該構造化文書圧縮プログラムが、該タグ内もしくは該文書型定義に記述された要素名および属性名を前記文字列として扱い、該コンピュータに、該要素名および該属性名を該短縮文字列に置換させることを特徴とする、請求項９または請求項１０に記載の構造化文書圧縮プログラムを格納したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＨＴＭＬ（Hyper  Text Markup Language）,ＳＧＭＬ(Standard Generalized Markup Language)やＸＭＬ(Extensible Markup Language)等の構造化文書を圧縮するための、方法および装置、並びに、プログラムを記録したコンピュータ読取可能な記録媒体に関する。
【背景技術】
【０００２】
近年、計算機やインターネットやイントラネットの普及に伴い、文書，ソフトウェア，数値，画像データ等の様々な種類のデータを含む電子文書が増加している。そして、電子文書のデータ量が大きい場合には、電子文書データから冗長な部分を省いてそのデータを圧縮することにより、メモリに記憶される電子文書のデータ量を減らしたり、電子文書の送信時間を短縮したりしている。
【０００３】
なお、以下の説明では、情報理論で用いられる呼称を踏襲して、データの１ワード単位を「文字」と呼び、文字が任意数つながったものを「文字列」と呼ぶ。また、データを文字から成るものとみなして、任意の種類のデータを圧縮することの可能な、いわゆる、ユニバーサル符号化の技術は、広く研究され普及している。
【０００４】
一方、電子文書においては、タグを付けて構造化した文書が広く用いられている。このような構造化文書を用いる場合、「文字データ」と「マーク付け」（markup）とに分けて処理が行なわれる。ここで、「マーク」とは、タグその他の構造化情報の総称であり、具体的には、開始タグ，終了タグ，空要素タグ，実体参照，文字参照，注釈，ＣＤＡＴＡセクションの区切り子，文書型宣言，処理命令などを指す。
【０００５】
構造化文書の代表例としては、大規模保存データベース向けのＳＧＭＬ（Standard Generalized Markup Language）や、ＷＷＷ（World Wide Web）向けに簡便な構成をもつＨＴＭＬ（Hyper Text Markup Language）や、ＳＧＭＬをインターネット向けに簡略化したＸＭＬ（eXtensible Markup Language）などがある。
【０００６】
ＳＧＭＬは、官公庁，企業等における大規模保存文書データベースのビューアへの適用，データベース検索，製品の開発作業の同時並行化，出版（ＣＡＤ，電子本，データベース）のために利用されるほか、データ交換のための中間言語としても利用される。また、ＨＴＭＬはＷＷＷとともに世界的に普及している。
ＸＭＬは、ＨＴＭＬを補うものとして、最近、特に注目を浴びている。このＸＭＬは、インターネット上で文書を取り扱うためだけでなく、携帯電話，カーナビゲーション等のあらゆる情報機器が交信するための媒介として利用されつつある。
【０００７】
ＸＭＬ文書は、大きく分けて、ＸＭＬ宣言と、文書型定義（Document Type Definition; DTD）と、文書実現値（ＸＭＬインスタンス）との３つの部分（構成要素）から成る。また、処理上の観点から見ると、ＸＭＬ文書は、整形式（well-formed）と検証済み（valid）との２つに分類される。
【０００８】
ここで、ＸＭＬ宣言は、ＳＧＭＬ宣言とは全く異なるもので、単にＸＭＬのバージョン宣言，文字コードの宣言などを行なう簡単なものであり、ＤＴＤは、ＳＧＭＬと同じく、タグ付き文書に現れる要素，属性，エンティティの定義を行なう部分であり、ＸＭＬインスタンスは、実際のタグ付き文書が書かれる部分である。
【０００９】
また、整形式ＸＭＬ文書とは、開始タグと終了タグとの対応がとれており、ＸＭＬで規定したタグ付け規則に従ってＸＭＬインスタンスが書かれたものであり、検証済みＸＭＬ文書とは、ＤＴＤの中の要素型宣言，属性リスト宣言によって定義された要素の階層関係，属性の型などに従ってタグ付けが行なわれたものである。この検証済みＸＭＬ文書は、当然、整形式ＸＭＬ文書としてのタグ付け規則に従っていることが前提条件である。
【００１０】
上記構成要素と上述のごとく分類されたＸＭＬ文書との対応関係、並びに、上記構成要素とＳＧＭＬ文書やＨＴＭＬ文書との対応関係（必須か否か）を、表１に示す。
【００１１】
【表１】
2008084341.tif 000003
【００１２】
この表１に示すように、整形式ＸＭＬ文書では、文書実現値のみが必須の構成要素であり、検証済みＸＭＬ文書では、文書型定義および文書実現値が必須の構成要素である。また、ＳＧＭＬ文書では、全ての構成要素が必須であり、ＨＴＭＬ文書では、ＨＴＭＬ宣言以外は必須の構成要素となっている。
【００１３】
ＸＭＬでは、文書を、階層構造をもった要素の集合としてとらえ、各要素を識別するために使用されるマークがタグである。文書の要素が始まったことを示すタグは開始タグと呼ばれ、その要素が終わったことを示すタグは終了タグと呼ばれ、これら２つのタグで挟まれた部分が要素の内容となる。
【００１４】
要素に対する基本的なタグ付けは、図３８（Ａ）に示す通りである。この図３８（Ａ）に示す例は、１つの要素を表す際のタグ付けであるが、ＸＭＬインスタンスには、実際にはいくつもの要素が存在し、それらの要素が階層構造になっている。つまり、ある要素の下に別の要素群が存在することがあり、このような階層構造を表現するためには、図３８（Ｂ）に示すように、タグを入れ子にする。図３８（Ｂ）に示すように、要素ａの下位にくる要素ｂと要素ｃとは、階層構造において同列に位置するもので、“ａ”という親要素に対して兄弟関係にある。このような兄弟関係にある要素は、兄の要素ｂの終了タグのすぐあとに弟の要素ｃの開始タグを書くことになる。また、要素の内容として、平文（テキスト）と混在させる形で下位の要素を書くこともできる。その場合、図３８（Ｃ）に示すようなタグ付けを行なう。
【００１５】
さらに、タグは、要素の構造を表現するだけでなく、要素になんらかの付属情報（属性）を与えることもできる。つまり、「要素のタイプを区別したい」，「要素に一意な識別子を付けて別の所から参照したい」などの理由から、付属情報としての属性を要素に与える場合がある。この属性は、図３９に示すように、属性名と属性値との対で表され、開始タグの中に書き込まれる。
ＸＭＬ文書の処理上の区分は、さらに、構成の違いにより、表２のように５通り（パターン(1)〜(5)；表２中、丸付き数字の１〜５）に分類される。
【００１６】
【表２】
2008084341.tif 000004
【００１７】
この表２に示すごとく、ＸＭＬ文書は、ＤＴＤをもたないもの（パターン(1)）と、実体宣言（エンティティ宣言）を含むＤＴＤをもつもの（パターン(2)）と、外部への実体宣言を含むＤＴＤをもつもの（パターン(3)）と、内部にＤＴＤを記述したもの（パターン(4)；ＳＧＭＬと共通）と、外部ファイルのＤＴＤを利用するもの（パターン(5)；ＳＧＭＬ，ＨＴＭＬと共通）との５通りに分類される。
【００１８】
パターン(1)〜(3)に対応するＸＭＬ文書は、「整形式ＸＭＬ文書」と呼ばれ、ＤＴＤによる検証を要することなくタグを設定することができる。また、パターン(4)，(5)に対応するＸＭＬ文書は、「検証済みＸＭＬ文書」と呼ばれる。
パターン(1)〜(4)に対応するＸＭＬやＳＧＭＬでは、利用者がタグを自由に設定することができる。パターン(4)では、ＸＭＬもＳＧＭＬも文書内の自前のＤＴＤでタグを定義することができる。一方、パターン(5)だけに対応しているＨＴＭＬは、外部ファイルのＤＴＤ〔Ｗ３Ｃ（World Wide Web Consortium）発行〕のみに依存し、利用者が自由にタグを設定することはできない。
【００１９】
パターン(1)は、ＸＭＬインスタンスのみを有し、検証済みＸＭＬ文書としてのチェックを行なわないので、ＤＴＤを完全に取り払った、最もシンプルな整形式ＸＭＬ文書であり、ＤＴＤがなくてもＸＭＬインスタンスの内容を解釈可能なものである。
【００２０】
パターン(2)は、置換文字列定義（実体宣言）を含むＤＴＤを有し、ＸＭＬインスタンス内で短縮文字列を使用するために、ＤＴＤにおける実体宣言でそれらの短縮文字列を宣言した整形式ＸＭＬ文書である。このパターン(2)では、実体参照を用いて、ＸＭＬインスタンスの内容中の長い文字列を短い文字列と置き換えるべく、ＤＴＤにおいて短い文字列と長い文字列との対応関係が定義される。
【００２１】
パターン(3)は、複数のファイルでＸＭＬ文書を作成するために、ＤＴＤにおける実体宣言で、それらのファイルを宣言した整形式ＸＭＬ文書である。このパターン(3)では、外部のファイルをＸＭＬインスタンスの内容中で引用するために実体参照を用いており、ＤＴＤにおいて、ＸＭＬインスタンス内で用いられる短い文字列と、実際のファイルを指定する情報との対応関係が定義される。
【００２２】
パターン(4)は、ＸＭＬインスタンスに添付されたＤＴＤ（DOCTYPE宣言）において、検証済みＸＭＬ文書としてのチェックに必要な要素型宣言および属性リスト宣言を定義するものである。
パターン(5)は、外部ファイルに存在するＤＴＤで要素型宣言および属性リスト宣言を定義するものであり、ＸＭＬインスタンスに添付されたＤＴＤ（DOCTYPE宣言）において、その外部ファイルを指定する情報が記述されている。
【００２３】
あるＸＭＬ文書が、整形式ＸＭＬ文書として解釈されるか、検証済みＸＭＬ文書として解釈されるかは、ＸＭＬ文書を解釈するソフトウェアであるＸＭＬプロセッサ（ＸＭＬパーサー）に依存する。このＸＭＬプロセッサは、図４０に示すごとく、ＸＭＬ文書を解析し、整形式ＸＭＬ文書としてのチェックおよび検証済みＸＭＬ文書としてのチェックを行なってから、チェックを終えた（木構造として表された）ＸＭＬ文書を、ブラウザなどの他の応用ソフトウェアに渡す機能を果たすものである。
【００２４】
そして、上述したような構造化文書を圧縮する際には、前述したように、その構造化文書を文字データの集まりとみなして圧縮を行なうユニバーサル符号化の技術が利用されている。
【００２５】
従来の構造化文書の圧縮手法としては、大別して下記２通りの手法（ａ），（ｂ）がある。
（ａ）タグを元の位置から移動せず、タグによって挟まれた平文の部分のみを圧縮する手法。
（ｂ）タグのみを文書実現値（インスタンス）の先頭に移動することにより、タグどうし平文どうしをそれぞれまとめて圧縮する手法。
【００２６】
手法（ａ）では、タグそのものを圧縮しない。通常、タグだけで構造化文書の３０％前後の容量を占めるため、タグを圧縮しなければ構造化文書の圧縮率が低下することになる。
手法（ｂ）では、圧縮された文書を伸長して復元する際にタグを元の位置に戻すべく、タグの元の位置に２バイトの識別符号を付しておかなければならず、それだけ圧縮率が低下することになる。
【００２７】
また、例えばＨＴＭＬ文書をユニバーサル符号化技術により圧縮する場合、ＨＴＭＬ文書の木構造で所定の深さ以下の内容を圧縮する手法や、ＨＴＭＬ文書のタグ表現の冗長部分を検出してより簡潔な表現に置換する手法などもあるが、前者の手法では、木構造で所定の深さ以下の文書構造は、伸長・復元しない限り分からないほか、後者の手法では、圧縮対象文書がＨＴＭＬ文書であるため、要素名や属性名などを圧縮することができない。
【発明の開示】
【発明が解決しようとする課題】
【００２８】
上述した通り、構造化文書においてタグは検索には必要であるが、上記手法（ａ）のようにタグだけが元のまま保存されると、構造化文書の圧縮率が悪化するし、上記手法（ｂ）のようにタグだけ圧縮すると、圧縮ファイルの検索機能が失われ、圧縮状態において検索することができなくなる。
【００２９】
通常、圧縮したファイルは２００ＫＢ／ｓ程度で伸長することができるため、例えば日本工業規格Ａ４判サイズで１頁分のデータが４〜６ＫＢ程度であるＳＧＭＬ／ＸＭＬ文書は、０．０２〜０．０３秒で伸長され閲覧可能になる。一方、データベース検索方式では０．０８秒程度の処理時間で検索を行なっている。
【００３０】
構造化文書のデータベースに圧縮方式を適用した場合、圧縮する単位の大きさにもよるが、伸長してからの検索を行なうとなると、検索までの時間は０．１秒を超えることもある。このため、検索までの時間が０．１秒を超えてよいか否かで圧縮方式の選択が変わってくる。
上述のように、タグの圧縮を行なわないと、構造化文書の圧縮率が低くなり、文書データの格納効率が低下するので、大規模なデータベースを取り扱うシステムでは好ましくない。
【００３１】
一方、ＸＭＬで記述された部品表や価格表等では、短い語句（内容）を挟んだ開始タグと終了タグとの対のような冗長な表現〔図２（Ａ）および図２（Ｂ）参照〕が頻繁に現われるが、このような場合に、検索可能な状態を保持したままタグにかかる部分を圧縮できるようにすることが望まれている。
【００３２】
実際のＸＭＬ文書等のデータにおいてタグで挟まれた「内容」のデータ長は短い場合が多い。具体的には、２０バイト、日本語で１０文字程度である。通常、短いデータは圧縮し難い。しかも、検索のキーワードとして「内容」の一部を残す場合、その「内容」のデータが短いと、「内容」を圧縮することなくそのまま残すことになり、結局、構造化文書の圧縮率が低下してしまう。
【００３３】
本発明は、このような課題に鑑み創案されたもので、構造化文書の特徴を損なうことなくタグ部分の圧縮を可能にし、構造化文書の圧縮率の向上をはかった、構造化文書の圧縮方法および圧縮装置並びに構造化文書圧縮プログラムを記録したコンピュータ読取可能な記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００３４】
上記目的を達成するために、本発明の関連技術としての構造化文書の圧縮方法は、構造化文書を成す文書実現値における要素の木構造を解析する文書実現値解析ステップと、該文書実現値解析ステップでの解析結果に従い、該木構造の葉となる要素（以下、葉要素という）についての情報を、該葉要素の親要素の属性として該親要素の開始タグ内に移す文書実現値構成変更ステップとを有することを特徴としている。
【００３５】
上記文書実現値構成変更ステップにおいて、該葉要素についての開始タグ，終了タグおよび内容を該文書実現値から削除し、該葉要素についての情報である要素名および内容を、それぞれ該親要素の属性名および属性値として該親要素の開始タグ内に付加してもよく、このとき、該葉要素の開始タグ内に該葉要素についての情報である属性が記述されている場合、該属性にかかる属性名および属性値を、それぞれ該親要素の属性名および属性値として該親要素の開始タグ内に付加してもよい。また、上記文書実現値構成変更ステップにおいて、該親要素の終了タグを削除するとともに、該親要素の開始タグを空要素タグに変更してもよい。
【００３６】
さらに、該構造化文書を成す文書型定義における要素の木構造を解析する文書型定義解析ステップと、該文書型定義解析ステップでの解析結果に従い、該木構造の葉となる要素（以下、葉要素という）についての情報を、該文書型定義から削除し、該葉要素の親要素の属性として該文書型定義で再定義する文書型定義構成変更ステップとをさらにそなえてもよい。このとき、該文書型定義構成変更ステップにおいて、該葉要素の要素型宣言を該文書型定義から削除するとともに該葉要素にかかる記述を該親要素の要素型宣言から削除し、該葉要素の要素型宣言にかかる情報を、該親要素の属性として該親要素の属性リスト宣言で再定義してもよく、さらに、該文書型定義で該葉要素の属性が該葉要素の属性リスト宣言により定義されている場合、該葉要素の属性リスト宣言を該文書型定義から削除し、該葉要素の属性を、該親要素の属性として該親要素の属性リスト宣言で再定義してもよい。
【００３７】
上記目的を達成するために、本発明の構造化文書圧縮方法（請求項１）は、構造化文書を成す文書実現値のタグ内の記述を解析する文書実現値解析ステップと、該文書実現値解析ステップでの解析結果に従って、該文書実現値のタグ内に記述された文字列と該文字列よりも短く且つ該文字列を特定しうる短縮文字列とを対応させるタグ辞書を作成するタグ辞書作成ステップと、該タグ辞書作成ステップで作成された該タグ辞書を用いて、該文書実現値のタグ内に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書実現値文字列置換ステップとを有することを特徴としている。
【００３８】
また、本発明の構造化文書圧縮方法（請求項２）は、構造化文書を成す文書実現値のタグ内の記述を解析する文書実現値解析ステップと、該構造化文書を成す文書型定義の記述を解析する文書型定義解析ステップと、該文書実現値解析ステップおよび該文書型定義解析ステップでの解析結果に従って、該文書実現値のタグ内および該文書型定義に記述された文字列と該文字列よりも短く且つ該文字列を特定しうる短縮文字列とを対応させるタグ辞書を作成するタグ辞書作成ステップと、該タグ辞書作成ステップで作成された該タグ辞書を用いて、該文書実現値のタグ内に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書実現値文字列置換ステップと、該タグ辞書作成ステップで作成された該タグ辞書を用いて、該文書型定義に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書型定義文字列置換ステップとを有することを特徴としている。
【００３９】
このとき、該タグ内もしくは該文書型定義に記述された要素名および属性名を前記文字列として扱い、該要素名および該属性名を該短縮文字列に置き換えてもよい（請求項３）。
また、単語文字列と該単語文字列よりも短く且つ該単語文字列を特定しうる短縮文字列とを対応させる単語辞書を用いて、該文書実現値の内容に含まれる単語文字列を、当該単語文字列に対応する短縮文字列に置き換える単語文字列置換ステップをそなえてもよく（請求項４）、さらに、該タグ内もしくは該文書型定義に記述された文字列を該短縮文字列に置き換えるとともに該単語文字列を該短縮文字列に置き換えた後に、これらの文字列を可変長符号化により圧縮する可変長符号化ステップをそなえてもよい（請求項５）。
【００４０】
一方、本発明の関連技術としての構造化文書圧縮装置は、構造化文書を成す文書実現値における要素の木構造を解析する文書実現値解析部と、該文書実現値解析部による解析結果に従い、該木構造の葉となる要素（以下、葉要素という）についての情報を、該葉要素の親要素の属性として該親要素の開始タグ内に移す文書実現値構成変更部とをそなえて構成されたことを特徴としている。
【００４１】
このとき、該文書実現値構成部が、該葉要素についての開始タグ，終了タグおよび内容を該文書実現値から削除し、該葉要素についての情報である要素名および内容を、それぞれ該親要素の属性名および属性値として該親要素の開始タグ内に付加してもよく、さらに、該葉要素の開始タグ内に該葉要素についての情報である属性が記述されている場合、該属性にかかる属性名および属性値を、それぞれ該親要素の属性名および属性値として該親要素の開始タグ内に付加してもよいし、該親要素の終了タグを削除するとともに、該親要素の開始タグを空要素タグに変更してもよい。
【００４２】
また、該構造化文書を成す文書型定義における要素の木構造を解析する文書型定義解析部と、該文書型定義解析部による解析結果に従い、該木構造の葉となる要素（以下、葉要素という）についての情報を、該文書型定義から削除し、該葉要素の親要素の属性として該文書型定義で再定義する文書型定義構成変更部とをさらにそなえてもよい。
【００４３】
本発明の構造化文書圧縮装置（請求項６）は、構造化文書を成す文書実現値のタグ内の記述を解析する文書実現値解析部と、該文書実現値解析部による解析結果に従って、該文書実現値のタグ内に記述された文字列と該文字列よりも短く且つ該文字列を特定しうる短縮文字列とを対応させるタグ辞書を作成するタグ辞書作成部と、該タグ辞書作成部により作成された該タグ辞書を用いて、該文書実現値のタグ内に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書実現値文字列置換部とをそなえて構成されたことを特徴としている。
【００４４】
本発明の構造化文書圧縮装置（請求項７）は、構造化文書を成す文書実現値のタグ内の記述を解析する文書実現値解析部と、該構造化文書を成す文書型定義の記述を解析する文書型定義解析部と、該文書実現値解析部および該文書型定義解析部による解析結果に従って、該文書実現値のタグ内および該文書型定義に記述された文字列と該文字列よりも短く且つ該文字列を特定しうる短縮文字列とを対応させるタグ辞書を作成するタグ辞書作成部と、該タグ辞書作成部により作成された該タグ辞書を用いて、該文書実現値のタグ内に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書実現値文字列置換部と、該タグ辞書作成部により作成された該タグ辞書を用いて、該文書型定義に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書型定義文字列置換部とをそなえて構成されたことを特徴としている。
このとき、該タグ内もしくは該文書型定義に記述された要素名および属性名を前記文字列として扱い、該要素名および該属性名を該短縮文字列に置き換えてもよい（請求項８）。
【００４５】
さらに、本発明の関連技術としての記録媒体は、構造化文書を圧縮する機能をコンピュータにより実現するための構造化文書圧縮プログラムを格納したコンピュータ読取可能なものであって、該構造化文書圧縮プログラムが、該構造化文書を成す文書実現値における要素の木構造を解析する文書実現値解析部、および、該文書実現値解析部による解析結果に従い、該木構造の葉となる要素（以下、葉要素という）についての情報を、該葉要素の親要素の属性として該親要素の開始タグ内に移す文書実現値構成変更部として、該コンピュータを機能させることを特徴としている。
【００４６】
このとき、該構造化文書圧縮プログラムが、該文書実現値構成部により、該葉要素についての開始タグ，終了タグおよび内容を該文書実現値から削除し、該葉要素についての情報である要素名および内容を、それぞれ該親要素の属性名および属性値として該親要素の開始タグ内に付加するよう、該コンピュータを機能させてもよいし、さらに、該葉要素の開始タグ内に該葉要素についての情報である属性が記述されている場合、該文書実現値構成変更部により、該属性にかかる属性名および属性値を、それぞれ該親要素の属性名および属性値として該親要素の開始タグ内に付加するよう、該コンピュータを機能させてもよいし、該文書実現値構成変更部により、該親要素の終了タグを削除するとともに該親要素の開始タグを空要素タグに変更するよう、該コンピュータを機能させてもよい。
【００４７】
また、該構造化文書圧縮プログラムが、該構造化文書を成す文書型定義における要素の木構造を解析する文書型定義解析部、および、該文書型定義解析部による解析結果に従い、該木構造の葉となる要素（以下、葉要素という）についての情報を、該文書型定義から削除し、該葉要素の親要素の属性として該文書型定義で再定義する文書型定義構成変更部として、該コンピュータを機能させてもよい。
【００４８】
本発明の記録媒体（請求項９）は、構造化文書を圧縮する機能をコンピュータにより実現するための構造化文書圧縮プログラムを格納したコンピュータ読取可能なものであって、該構造化文書圧縮プログラムが、該構造化文書を成す文書実現値のタグ内の記述を解析する文書実現値解析部、該文書実現値解析部による解析結果に従って、該文書実現値のタグ内に記述された文字列と該文字列よりも短く且つ該文字列を特定しうる短縮文字列とを対応させるタグ辞書を作成するタグ辞書作成部、および、該タグ辞書作成部により作成された該タグ辞書を用いて、該文書実現値のタグ内に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書実現値文字列置換部として、該コンピュータを機能させることを特徴としている。
【００４９】
本発明の記録媒体（請求項１０）は、構造化文書を圧縮する機能をコンピュータにより実現するための構造化文書圧縮プログラムを格納したコンピュータ読取可能なものであって、該構造化文書圧縮プログラムが、該構造化文書を成す文書実現値のタグ内の記述を解析する文書実現値解析部、該構造化文書を成す文書型定義の記述を解析する文書型定義解析部、該文書実現値解析部および該文書型定義解析部による解析結果に従って、該文書実現値のタグ内および該文書型定義に記述された文字列と該文字列よりも短く且つ該文字列を特定しうる短縮文字列とを対応させるタグ辞書を作成するタグ辞書作成部、該タグ辞書作成部により作成された該タグ辞書を用いて、該文書実現値のタグ内に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書実現値文字列置換部、および、該タグ辞書作成部により作成された該タグ辞書を用いて、該文書型定義に記述された文字列を、当該文字列に対応する短縮文字列に置き換える文書型定義文字列置換部として、該コンピュータを機能させることを特徴としている。
このとき、該構造化文書圧縮プログラムが、該タグ内もしくは該文書型定義に記述された要素名および属性名を前記文字列として扱い、該コンピュータに、該要素名および該属性名を該短縮文字列に置換させてもよい（請求項１１）。
【発明の効果】
【００５０】
上述のような構造化文書の圧縮方法および圧縮装置並びに構造化文書圧縮プログラムを記録したコンピュータ読取可能な記録媒体によれば、以下のような効果ないし利点が得られる。
【００５１】
（１）文書実現値における要素の木構造を解析し、その解析結果に従って、文書実現値における葉要素についての情報を、親要素の属性としてこの親要素の開始タグ内に移すことで、より具体的には、葉要素についての開始タグ，終了タグおよび内容を文書実現値から削除し、葉要素についての情報である要素名および内容を、それぞれ親要素の属性名および属性値として親要素の開始タグ内に付加することで、葉要素にかかる記述を親要素の属性として取り扱うことができ、葉要素の開始タグや終了タグを記述する必要がなくなり、構造化文書の特徴を損なうことなく、また、検索可能な状態に保持したまま、葉要素にかかるタグの記述が省略・圧縮される。
【００５２】
従って、構造化文書の圧縮率を大幅に高めることができ、ひいては、大規模なデータベースを取り扱うシステムにおいて文書データの格納効率を大幅に高めることができる。特に、多数の短い語句をもつ部品表や価格表等を構造化文書で記述するような場合、短い語句（内容）を挟んだ開始タグと終了タグとの対表現を省略することができるので、その圧縮率を大幅に高めることができる。
【００５３】
（２）葉要素の開始タグ内に属性が記述されている場合、属性にかかる属性名および属性値を、それぞれ親要素の属性名および属性値として親要素の開始タグ内に付加することで、葉要素の属性にかかる記述も親要素の属性として取り扱われ、構造化文書の圧縮率をより高めることができる。
（３）親要素の終了タグを削除するとともに親要素の開始タグを空要素タグに変更することにより、さらに親要素の終了タグを構造化文書の記述から削除することができ、構造化文書の圧縮率をより高めることができる。
【００５４】
（４）文書型定義における要素の木構造を解析し、その解析結果に従って、葉要素についての情報を、文書型定義から削除し親要素の属性として文書型定義で再定義することで、より具体的には、葉要素の要素型宣言を文書型定義から削除するとともに葉要素にかかる記述を親要素の要素型宣言から削除し、その葉要素の要素型宣言にかかる情報を親要素の属性として再定義することで（請求項６）、文書実現値に対して行なわれた圧縮に対応した圧縮処理が文書型定義に対しても行なわれ、葉要素にかかる記述を親要素の属性として取り扱うことができる。従って、構造化文書の特徴を損なうことなく、また、検索可能な状態に保持したまま、葉要素にかかる要素型宣言の記述が省略されて文書型定義が圧縮され、構造化文書の圧縮率をより高めることができる。
【００５５】
（５）文書型定義で葉要素の属性が葉要素の属性リスト宣言により定義されている場合、葉要素の属性リスト宣言を文書型定義から削除し、その葉要素の属性を親要素の属性として再定義することで、葉要素の属性にかかる記述も親要素の属性として取り扱うことができる。従って、構造化文書の特徴を損なうことなく、また、検索可能な状態に保持したまま、葉要素にかかる属性リスト宣言の記述が省略されて文書型定義がより圧縮され、構造化文書の圧縮率をより高めることができる。
【００５６】
（６）文書実現値のタグ内の記述を解析し、その解析結果に従ってタグ辞書を作成し、そのタグ辞書を用いて、文書実現値のタグ内に記述された文字列を、その文字列よりも短く且つその文字を特定しうる短縮文字列に置き換えることにより（請求項１，６，９）、構造化文書の特徴や構造を損なうことなくタグ内の文字列が圧縮されるので、構造化文書の圧縮率を大幅に高めることができ、ひいては、大規模なデータベースを取り扱うシステムにおいて文書データの格納効率を大幅に高めることができる。
【００５７】
（７）文書実現値のタグ内や文書型定義の記述を解析し、その解析結果に従ってタグ辞書を作成し、そのタグ辞書を用いて、文書実現値のタグ内や文書型定義に記述された文字列を、その文字列よりも短く且つその文字を特定しうる短縮文字列に置き換えることにより（請求項２，７，１０）、構造化文書が文書型定義を有している場合であっても、構造化文書の特徴や構造を損なうことなく文書型定義の文字列が圧縮されるので、構造化文書の圧縮率を大幅に高めることができ、ひいては、大規模なデータベースを取り扱うシステムにおいて文書データの格納効率を大幅に高めることができる。
【００５８】
（８）タグ内や文書型定義に記述された要素名および属性名を短縮文字列に置き換えることにより（請求項３，８，１１）、検索可能な状態に保持したままタグ部分や文書型定義を圧縮することができる。つまり、要素名および属性名について置換を行ない、属性値は元の形のまま保持することで、文書データを伸長することなく圧縮した状態のままで検索や文書構造の把握を行なえるようになっている。従って、文書圧縮後に文書の構造を解析して検索を行なう際に、圧縮された文書の伸長を行なう必要がなく、大規模なデータベースにおいて文書データを圧縮格納しても、その文書データの検索処理等を短時間で行なうことができる。
【００５９】
（９）単語辞書を用いて、文書実現値の内容に含まれる単語文字列を、その単語文字列よりも短く且つその単語文字列を特定しうる短縮文字列に置き換えることにより（請求項４）、構造化文書の平文部分（文書実現値の内容）が圧縮されるので、構造化文書の圧縮率をさらに高めることができる。
（１０）置換処理後の文字列をさらに可変長符号化により圧縮することで（請求項５）、構造化文書の圧縮率をより高めることができる。
【発明を実施するための最良の形態】
【００６０】
以下、図面を参照して本発明の実施の形態を説明する。
〔１〕第１実施形態の説明
まず、図２〜図４を参照しながら、本発明の第１実施形態における構造化文書の圧縮原理について説明する。なお、図２（Ａ）〜図２（Ｄ）および図３（Ａ）〜図３（Ｃ）はいずれも第１実施形態における構造化文書（文書実現値）の圧縮原理を説明するための図、図４（Ａ）および図４（Ｂ）はいずれも第１実施形態における構造化文書（ＤＴＤ）の圧縮原理を説明するための図である。なお、以下、本発明の第１実施形態では、構造化文書がＸＭＬ文書である場合について説明する。
【００６１】
前述した通り、ＸＭＬで記述された部品表や価格表等では、図２（Ａ）および図２（Ｂ）に示すごとく、短い語句（平文）を内容として挟んだ開始タグと終了タグとの対のような冗長な表現が頻繁に現われる。
ここで、図２（Ａ）には、ある親要素（要素１）の下に２つの子要素（子要素をもたない要素２および要素３）が存在する場合の、ＸＭＬの一般的な記述例が示されている。そして、図２（Ｂ）には、図２（Ａ）に示した一般的な記述例に対応した具体的な記述例が示されている。なお、以下、子要素をもたない要素を葉の要素，葉要素もしくは単に葉と呼ぶ場合がある。
【００６２】
図２（Ａ）に示す一般的な記述例において、要素１は、要素名１を指定されるとともに属性情報（属性名１および属性値１）を指定され、要素１の子要素である要素２は、要素名２を指定されて内容２を有し、要素２と同じく要素１の子要素（要素２と兄弟関係）である要素３は、要素名３を指定されるとともに属性情報（属性名３および属性値３）を指定されて内容３を有している。
【００６３】
そして、図２（Ｂ）に示す具体的な記述例では、要素名１が「book」、属性名１が「field」、属性値１が「本」、要素名２が「title」、内容２が「ＸＭＬ入門」、要素名３が「author」、属性名３が「year」、属性値３が「1955」、内容３が「佐藤元」となっている。
これらの図２（Ａ）および図２（Ｂ）に示す記述例の木構造を図２（Ｃ）に示す。また、これらの図２（Ａ）〜図２（Ｃ）に示す例についての、葉の要素一覧表を図２（Ｄ）に示す。
【００６４】
なお、図２（Ｂ）に示す記述例において、１行目の記述＜book field="本"＞が要素「book」の開始タグで、５行目の記述＜/book＞が要素「book」の終了タグであり、これらのタグにより括られた、２〜４行目の記述が要素「book」の内容を示している。１行目の開始タグ内の記述「field="本"」は、要素「book」の属性情報（属性名が「field」で属性値が「本」）を示している。
【００６５】
また、２行目において、記述＜title＞が要素「title」の開始タグで、記述＜/title＞が要素「title」の終了タグであり、これらのタグ間の記述「ＸＭＬ入門」が要素「title」の内容である。
同様に、３行目の記述＜author year＝"1955"＞が要素「author」の開始タグで、４行目の記述＜/author＞が要素「author」の終了タグであり、これらのタグ間の記述「佐藤元」が要素「author」の内容である。３行目の開始タグ内の記述「year＝"1955"」は、要素「author」の属性情報（属性名が「year」で属性値が「1955」）を示している。
【００６６】
本発明の第１実施形態では、図２（Ａ）〜図２（Ｄ）に示すごとく、子要素をもたず木構造の葉として並んでいる要素（以下、葉の要素，葉要素もしくは単に葉と呼ぶ場合がある）を検出し、図２（Ｄ）に示すような葉の要素一覧表についてのファイルを出力する。そして、そのファイルに基づいて、図３（Ａ）および図３（Ｂ）に示すように、葉の要素名や内容を上位の要素１（親要素）の属性に置き換えてその葉の要素を削除するとともに、要素１の開始タグを空要素タグに変更する。このとき、要素３の属性情報（属性名３および属性値３）も、要素３の要素名３や内容３と対等な、要素１の属性として並べる。
【００６７】
ここで、図３（Ａ）や図３（Ｂ）に示すごとく、要素名や属性情報を“＜”と“/＞”とで囲んで記述されたタグは、内容をもたない空要素タグである。このとき、属性情報については必ずしも記述・指定しなくてもよい。
図３（Ａ）には、図２（Ａ）に示した一般的な記述例を第１実施形態の圧縮方法により圧縮した結果得られる記述が示され、図３（Ｂ）には、図２（Ｂ）に示した具体的な記述例を第１実施形態の圧縮方法により圧縮した結果得られる記述が示されている。
【００６８】
これらの図３（Ａ）および図３（Ｂ）に示すように、要素１の開始タグ（空要素タグ）においては、要素名１および属性情報（属性名１および属性値１）が指定されるだけでなく、要素名２および内容２がそれぞれ要素１の第２の属性名および属性値として指定され、要素名３および内容３がそれぞれ要素１の第３の属性名および属性値として指定され、属性名３および属性値３がそれぞれ要素１の第４の属性名および属性値として指定されている。
なお、図３（Ｃ）は、図３（Ａ）および図３（Ｂ）に示した開始タグ（空要素タグ）をもつ要素１の構造を図式表現したものである。
【００６９】
一方、図２や図３を参照しながら上述したごとく圧縮処理を行なった構造化文書がＤＴＤを有している場合には、その圧縮処理に対応して、図４（Ａ）および図４（Ｂ）に示すごとくＤＴＤの変更（圧縮）も行なわれる。
即ち、図４（Ａ）には、図２（Ｂ）に示すＸＭＬ文書を定義する、変更前（圧縮前）のＤＴＤが示されている。この図４（Ａ）に示すＤＴＤにおいて、１行目の記述は文書型宣言（ＤＯＣＴＹＰＥ宣言）であり、ここでは、この文書の文書型名つまり最上位要素の要素名が「book」であることが宣言されている。
【００７０】
そして、１行目末尾の“[”と７行目の“]＞”との間における記述（２〜６行目の記述）が、この文書の構成を定義している。
２行目の要素型宣言の要素名と文書型名とは一致する必要があり、ここでは、その規則に従い最上位要素の要素名として「book」が指定されている。また、この親要素「book」の下に要素名「title」および「author」の２つの子要素が並んで存在することが、２行目の要素型宣言内において、内容モデル記述“(title,author)”により宣言されている。つまり、要素「book」は２つの子要素「title」および「author」から構成されることが宣言されている。
【００７１】
さらに、３行目の要素型宣言により、要素の要素名として「title」が指定されるとともに、この要素「title」の内容が文字データ（＃ＰＣＤＡＴＡ）であることが宣言されている。同様に、４行目の要素型宣言により、要素の要素名として「author」が指定されるとともに、この要素「author」の内容が文字データ（＃ＰＣＤＡＴＡ）であることが宣言されている。これらの要素型宣言では、各要素の下における子要素の存在は宣言されていない。つまり、これらの要素を親とする子要素は存在しておらず、これらの要素は、木構造の葉を成す要素である。
【００７２】
また、５行目の属性リスト宣言では、要素「book」に伴う属性として、属性名「field」と、属性値ついての３種類の候補「本」，「雑誌」，「小冊子」と、デフォルト値「本」とが宣言されている。
さらに、６行目の属性リスト宣言では、要素「author」に伴う属性として、著者の生年を示す属性名「year」と、その属性値のデータ型（ＣＤＡＴＡ）とが宣言されている。
なお、７行目の記述“]＞”は、これで１行目の文書型宣言の内部サブセット記述部分が終了することを示している。
【００７３】
そして、図４（Ｂ）には、図３（Ｂ）に示すＸＭＬ文書を定義する、変更後（圧縮後）のＤＴＤが示されており、この図４（Ｂ）に示すＤＴＤにおいては、図４（Ａ）に示すＤＴＤに存在していた、要素「title」および要素「author」についての要素型宣言が消えるとともに、２行目の親要素「book」の要素型宣言内における子要素の定義（内容モデル）が消えている。また、要素「author」に伴う属性「year」も消えている。
【００７４】
代わりに、３〜６行目の属性リスト宣言において、親要素「book」の属性として、新たに属性名「title」，「author」，「year」が付加されている。そして、これらの属性名「title」，「author」の属性値の候補として「＃ＰＣＤＡＴＡ」が宣言されるとともに、属性名「year」の属性値の候補として「ＣＤＡＴＡ」が宣言されている。
【００７５】
ここで、「＃ＰＣＤＡＴＡ」としては、文字データのほかに、タグや、実体参照と呼ばれるマークが含まれる。なお、実体参照は、構造化文書を記述する際、文字データ中で特定の文字列を所定のマークで表現し、文字データを応用ソフトウェアに渡す際には、マークの部分に元の文字列を代入する機能である。ただし、属性値の中で実体参照を行なう場合、その属性値にかかる文書と同じ文書内の文字列を参照することは許されているが、外部ファイルにおける文字列を参照することは許されていない。また、生年を表わす属性値としては、純粋の文字データであるＣＤＡＴＡが宣言されている。
【００７６】
第１実施形態の構造化文書の圧縮手法では、上述のごとく文書実現値の圧縮処理に合わせてＤＴＤも変更・圧縮するため、図４０で前述したＸＭＬプロセッサは、上述の圧縮に呼応した形で、図３（Ａ）や図３（Ｂ）に示すような新しいＸＭＬ文書を正しく検討することができる。
【００７７】
また、上述のごとく、従来、「要素」として表現された情報が親要素の「属性」に変換されるとともに、その変換に伴うＸＭＬ文書の構造変更に合わせてＤＴＤも変更される。これにより、従来、「要素」として表現された情報は、親要素の「属性」として検出されるようになる。従って、「要素名のバイト数」＋「３バイト」分だけ、ＸＭＬ文書の表現が圧縮・節約されることになる。
【００７８】
以下、図１〜図１３を参照しながら、本発明の第１実施形態について、より詳細かつ具体的に説明する。
図１は本発明の第１実施形態としての構造化文書の圧縮装置の機能構成を示すブロック図であり、この図１に示すように、第１実施形態の圧縮装置は、文書記憶部１０，文書実現値解析部２０，ＤＴＤ解析部３０，文書実現値構成変更部４０，ＤＴＤ構成変更部５０，新規ＤＴＤファイル作成部６０および新旧ＤＴＤ対応表出力部７０を有して構成されている。
【００７９】
ここで、本実施形態の圧縮装置は、ＣＰＵ，ＲＡＭ，ＲＯＭなどをバスラインにより接続して構成される、パソコン等のコンピュータシステムにより実現されるものである。
つまり、ＲＡＭやＲＯＭが文書記憶部１０としての機能を果たすほか、ＲＡＭには、文書実現値解析部２０，ＤＴＤ解析部３０，文書実現値構成変更部４０，ＤＴＤ構成変更部５０，新規ＤＴＤファイル作成部６０および新旧ＤＴＤ対応表出力部７０を実現するためのアプリケーションプログラムが格納されている。
【００８０】
そして、ＣＰＵが、上記アプリケーションプログラムを実行することにより、文書実現値解析部２０，ＤＴＤ解析部３０，文書実現値構成変更部４０，ＤＴＤ構成変更部５０，新規ＤＴＤファイル作成部６０および新旧ＤＴＤ対応表出力部７０としての機能（その詳細については後述）が実現され、第１実施形態の構造化文書の圧縮装置が実現されるようになっている。
【００８１】
この第１実施形態の圧縮装置を実現するためのプログラムは、例えばフレキシブルディスク，ＣＤ−ＲＯＭ等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供してもよい。
【００８２】
そして、第１実施形態の圧縮装置としての機能をコンピュータにより実現する際には、内部記憶装置（例えばＲＡＭ）に格納された上記プログラムがコンピュータのマイクロプロセッサ（例えばＣＰＵ）によって実行される。このとき、記録媒体に記録されたプログラムをマイクロプロセッサが直接読み取って実行してもよい。
【００８３】
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。また、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえている。
【００８４】
上記アプリケーションプログラムは、このようなコンピュータに、文書実現値解析部２０，ＤＴＤ解析部３０，文書実現値構成変更部４０，ＤＴＤ構成変更部５０，新規ＤＴＤファイル作成部６０および新旧ＤＴＤ対応表出力部７０としての機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくオペレーティングシステムによって実現されてもよい。
【００８５】
さらに、本実施形態における記録媒体としては、上述したフレキシブルディスク，ＣＤ−ＲＯＭ，磁気ディスク，光ディスク，光磁気ディスクのほか、ＩＣカード，ＲＯＭカートリッジ，磁気テープ，パンチカード，コンピュータの内部記憶装置（ＲＡＭやＲＯＭなどのメモリ），外部記憶装置等や、バーコードなどの符号が印刷された印刷物等の、コンピュータ読取可能な種々の媒体を利用することができる。
【００８６】
さて、図１に示す第１実施形態の圧縮装置において、文書記憶部１０は、構造化文書であるＸＭＬ文書を記憶するもので、本実施形態では、圧縮前および圧縮後のいずれのＸＭＬ文書も記憶するほか、後述する新旧ＤＴＤ対応表も記憶するものである。
【００８７】
文書実現値解析部２０は、ＸＭＬ文書を成す文書実現値を解析し、文書実現値における要素の木構造（親子関係）や、文書実現値の記述を解析するもので、その解析手順については、図６に示すフローチャートを参照しながら後述する。そして、本実施形態の文書実現値解析部２０は、要素の木構造（親子関係）の解析結果として、例えば図２（Ｄ）に示すような葉の要素一覧表（ファイル）を出力する。
【００８８】
ＤＴＤ解析部（文書型定義解析部）３０は、ＸＭＬ文書が検証済みＸＭＬ文書である場合（つまりパターン(4)または(5)のＸＭＬ文書である場合）に、そのＤＴＤを解析し、ＤＴＤにおける要素の木構造（親子関係）や、ＤＴＤの記述を解析するもので、その解析手順については図７に示すフローチャートを参照しながら後述する。そして、本実施形態のＤＴＤ解析部３０も、要素の木構造（親子関係）の解析結果として、例えば図２（Ｄ）に示すような葉の要素一覧表（ファイル）を出力する。ただし、ＸＭＬ文書がパターン(4)である場合、ＤＴＤは文書記憶部１０から読み込まれるが、ＸＭＬ文書がパターン(5)である場合、ＤＴＤは外部ファイル１００から読み込まれる。
【００８９】
このとき、文書実現値解析部２０やＤＴＤ解析部３０から出力される葉の要素の一覧表は、前述した通り、子要素をもたず木構造の葉として並んでいる要素を検出し、その葉の要素と親要素との対応関係を明記したものである。
文書実現値構成変更部４０は、文書実現値の表現を簡潔にすべく、文書実現値解析部２０による解析結果（葉の要素一覧表）に従って、文書実現値における葉要素についての情報を、その葉要素の親要素の属性として親要素の開始タグ内に移動させるもので、以下のような構成変更処理（ａ１）〜（ａ３）を実行するものである。
【００９０】
（ａ１）葉要素についての開始タグ，終了タグおよび内容を文書実現値から削除し、葉要素についての情報である要素名および内容を、それぞれ親要素の属性名および属性値として親要素の開始タグ内に付加する。
（ａ２）葉要素の開始タグ内に葉要素についての情報である属性が記述されている場合、属性にかかる属性名および属性値を、それぞれ親要素の属性名および属性値として親要素の開始タグ内に付加する。
【００９１】
（ａ３）親要素の終了タグを削除するとともに、親要素の開始タグを空要素タグに変更する。
この文書実現値構成変更部４０による構成変更手順については、図８に示すフローチャートを参照しながら後述する。また、本実施形態では、文書実現値構成変更部４０による構成変更結果（圧縮後の文書実現値）を、文書記憶部１０に出力・格納しているが、その他の記録媒体等に出力・格納してもよい。
【００９２】
ＤＴＤ構成変更部（文書型定義構成変更部）５０は、ＸＭＬ文書が検証済みＸＭＬ文書である場合（ＸＭＬ文書がパターン(4)または(5)である場合）に、文書実現値構成変更部４０による構成変更に合わせてＤＴＤの表現を簡潔にすべく、ＤＴＤ解析部３０による解析結果（葉の要素一覧表）に従って、ＤＴＤにおける葉要素についての情報を、ＤＴＤから削除し、その葉要素の親要素の属性としてＤＴＤで再定義するもので、以下のような構成変更処理（ｂ１）および（ｂ２）を実行するものである。
【００９３】
（ｂ１）葉要素の要素型宣言をＤＴＤから削除するとともに葉要素にかかる記述（内容モデルの記述）を親要素の要素型宣言から削除し、葉要素の要素型宣言にかかる情報（削除した部分にかかる情報）を、親要素の属性として親要素の属性リスト宣言で再定義する。このとき、葉要素の要素名および内容（データ型）を、それぞれ親要素の属性名および属性値として宣言・再定義する。
【００９４】
（ｂ２）ＤＴＤで葉要素の属性が葉要素の属性リスト宣言により定義されている場合、葉要素の属性リスト宣言をＤＴＤから削除し、葉要素の属性を、その葉要素の親要素の属性として親要素の属性リスト宣言で再定義する。このとき、葉要素についての属性名および属性値を、それぞれ親要素の属性名および属性値として宣言・再定義する。
【００９５】
このＤＴＤ構成変更部５０による構成変更手順については、図９に示すフローチャートを参照しながら後述する。また、本実施形態では、ＸＭＬ文書がパターン(4)である場合、ＤＴＤ構成変更部５０による構成変更結果（圧縮後のＤＴＤ）を、文書実現値構成変更部４０による構成変更結果（圧縮後の文書実現値）とともに文書記憶部１０に出力・格納しているが、圧縮後の文書実現値とともに他の記録媒体等に出力・格納してもよい。
【００９６】
新規ＤＴＤファイル作成部６０は、ＤＴＤが外部ファイル１００に存在する場合（ＸＭＬ文書がパターン(5)である場合）、ＤＴＤ構成変更部５０により変更処理されたＤＴＤについてのファイル（新規ＤＴＤファイル）を作成して外部ファイル１００へ出力するものである。
新旧ＤＴＤ対応表出力部７０は、ＤＴＤが外部ファイル１００に存在する場合（ＸＭＬ文書がパターン(5)である場合）、構成変更前のＤＴＤと構成変更後の新規ＤＴＤとの対応関係を明記した新旧ＤＴＤ対応表を作成して文書記憶部１０へ出力するものである。
【００９７】
なお、第１実施形態の圧縮手法（要素から属性への変換）により圧縮されたＸＭＬ文書は、ＸＭＬ文書としての特徴を全く損なっておらず、圧縮状態のままで（伸長することなく）ＸＭＬ文書としての機能を果たすことができるので、圧縮されたＸＭＬ文書の伸長について特に議論する必要はない。従って、第１実施形態では、圧縮手法についてのみ説明する。
【００９８】
次に、図５〜図１３を参照しながら、第１実施形態の圧縮装置の動作について説明する。
まず、図５に示すフローチャート（ステップＳ１１〜Ｓ２９）に従って、第１実施形態における構造化文書（ＸＭＬ文書）の圧縮手順について説明する。第１実施形態の圧縮手法では、前述した通り要素から属性への変換を行なうことにより、葉の要素が消え、その葉の親要素が空要素になる。
【００９９】
なお、第１実施形態の圧縮装置には、図１では図示省略しているが、文書記憶部１０に保存されているＸＭＬ文書がパターン(1)〜(5)（表２参照）のいずれのものであるからを認識するためのパターン認識機能がそなえられている。このパターン認識機能による処理は、図５に示すステップＳ１２〜Ｓ１４による処理に対応している。
【０１００】
圧縮対象のＸＭＬ文書が入力され文書記憶部１０に格納されると（ステップＳ１１）、そのＸＭＬ文書に“＜!ＤＯＣＴＹＰＥ”が記述されているか否かを判定し（ステップＳ１２）、記述されていない場合（ステップＳ１２のＮＯルート）、そのＸＭＬ文書はＤＴＤをもたない整形式ＸＭＬ文書、つまりパターン(1)のＸＭＬ文書であると認識され、後述するごとくステップＳ１５，Ｓ１６およびＳ２９が実行される。
【０１０１】
ＸＭＬ文書に“＜!ＤＯＣＴＹＰＥ”が記述されている場合（ステップＳ１２のＹＥＳルート）、その後に“[”が記述されているか否かを判定する（ステップＳ１３）。
“＜!ＤＯＣＴＹＰＥ”は記述されているが“[”が記述されていない場合（ステップＳ１３のＮＯルート）、そのＸＭＬ文書は、ＤＴＤを外部ファイル１００として有する検証済みＸＭＬ文書、つまりパターン(5)のＸＭＬ文書であると認識され、後述するごとくステップＳ２１〜Ｓ２９が実行される。
【０１０２】
“[”が記述されている場合（ステップＳ１３のＹＥＳルート）、“＜!ＥＬＥＭＥＮＴ”（もしくは“＜!ＡＴＴＬＩＳＴ”）が記述されているか否かを判定する（ステップＳ１４）。
“＜!ＤＯＣＴＹＰＥ”および“[”は記述されているが“＜!ＥＬＥＭＥＮＴ”が記述されていない場合（ステップＳ１４のＮＯルート）、実体宣言を含むＤＴＤを有する整形式ＸＭＬ文書、つまりパターン(2)のＸＭＬ文書であると認識され、パターン(1)の場合と同様、ステップＳ１５，Ｓ１６およびＳ２９が実行される。
【０１０３】
“＜!ＤＯＣＴＹＰＥ”，“[”および“＜!ＥＬＥＭＥＮＴ”がいずれも記述されている場合（ステップＳ１４のＹＥＳルート）、ＸＭＬ文書内にＤＴＤを有する検証済みＸＭＬ文書、つまりパターン(4)のＸＭＬ文書であると認識され、ステップＳ１７〜Ｓ２０およびＳ２９が実行される。
以下、各パターン(1)〜(5)に対する圧縮処理について、図１０〜図１３に示す具体例（第１例〜第４例）を参照しながら説明する。
【０１０４】
図１０（Ａ）および図１０（Ｂ）はいずれも第１実施形態によるＸＭＬ文書の具体的な圧縮処理（第１例）を説明するための図である。
図１０（Ａ）に示す圧縮前のＸＭＬ文書は、前述したパターン(1)のＸＭＬ文書であり、１行目に、この文書がバージョン１．０のＸＭＬ文書であることを示すＸＭＬ宣言が記述され、２〜５行目に、文書実現値が記述されている。ここに記述された文書実現値は、要素「book」の開始タグ内において属性情報（field＝"本"）が記述されていない点を除けば、図２（Ｂ）に示したＸＭＬ文書の記述例と同一である。
【０１０５】
図１０（Ａ）に示すＸＭＬ文書（パターン(1)）には“＜!ＤＯＣＴＹＰＥ”が記述されていないので、処理はステップＳ１２のＮＯルートからステップＳ１５へ移行し、文書実現値解析部２０によって文書実現値が解析される。これにより、文書実現値中において、葉となる要素がどこに記述されているかが検出され、その葉要素の要素名と、親要素の要素名との対応関係が、葉の要素一覧表として登録・出力される。図１０（Ａ）に示すＸＭＬ文書の場合、図２（Ｄ）と同様の葉の要素一覧表が得られる。
【０１０６】
そして、ステップＳ１５で得られた、葉の要素一覧表（解析結果）に従って、文書実現値構成変更部４０により、葉の要素についての要素名および内容が、それぞれ、親要素の属性名および属性値に移動・変更されるとともに、親要素の開始タグが空要素タグに変更される（ステップＳ１６）。このとき、葉の要素「author」に付随した属性「year」は、親要素「book」の属性に代わる。
【０１０７】
ステップＳ１５およびＳ１６によって、例えば図１０（Ａ）に示すＸＭＬ文書は、図１０（Ｂ）に示すようなＸＭＬ文書に変更・圧縮されてから、圧縮文書として文書記憶部１０等へ出力・格納される（ステップＳ２９）。
図１０（Ｂ）に示すＸＭＬ文書において、１行目のＸＭＬ宣言の記述は圧縮前と変わらないが、２行目には、図１０（Ａ）における２〜５行目の記述が集約されて記述されている。つまり、図１０（Ｂ）に示すＸＭＬ文書では、図３（Ｂ）に示した例と同様、２つの子要素「title」および「author」にかかる全ての情報が、親要素「book」の開始タグ（空要素タグ）において、親要素「book」の属性として記述される。
【０１０８】
図１１（Ａ）および図１１（Ｂ）はいずれも第１実施形態によるＸＭＬ文書の具体的な圧縮処理（第２例）を説明するための図である。
図１１（Ａ）に示す圧縮前のＸＭＬ文書は、前述したパターン(2)のＸＭＬ文書であり、１行目に、この文書がバージョン１．０のＸＭＬ文書であることを示すＸＭＬ宣言が記述され、２〜４行目に、置換文字列定義（実体宣言）を含むＤＴＤが記述され、５〜８行目に文書実現値が記述されている。
【０１０９】
２〜４行目のＤＴＤでは、文書型宣言に含まれる実体宣言（３行目）により、文書実現値（ＸＭＬインスタンス）内で用いられる置換文字列「ＸＭＬ」の実体が「Extensible Markup Language」であることが定義されている。
また、５〜８行目に記述された文書実現値は、図１０（Ａ）に示したＸＭＬ文書の２〜５行目の記述例とほぼ同一であるが、図１１（Ａ）に示す例では、６行目の要素「title」の内容として、「ＸＭＬ（＆ＸＭＬ；の略称）入門」が記述されている。
【０１１０】
ここで、「＆ＸＭＬ；」は、置換文字列「ＸＭＬ」の実体を参照することを指示する記述であり、実際に表示・印刷等によって出力される文書中では、「Extensible Markup Language」と表記されることになる。
図１１（Ａ）に示すＸＭＬ文書（パターン(2)）には、“＜!ＤＯＣＴＹＰＥ”および“[”がいずれも記述されているが、“＜!ＥＬＥＭＥＮＴ”や“＜!ＡＴＴＬＩＳＴ”が記述されていないので、処理はステップＳ１４のＮＯルートからステップＳ１５へ移行し、前述したパターン(1)のＸＭＬ文書と同様の処理が実行される。このとき、文書実現値の内容中における実体参照の記述〔図１１（Ａ）では“＆ＸＭＬ；”〕は、そのまま、親要素の属性値として取り扱われる。
【０１１１】
これにより、例えば図１１（Ａ）に示すＸＭＬ文書は、図１１（Ｂ）に示すようなＸＭＬ文書に変更・圧縮されてから、圧縮文書として文書記憶部１０等へ出力・格納される（ステップＳ２９）。
図１１（Ｂ）に示すＸＭＬ文書において、１〜４行目の記述は圧縮前と変わらないが、５行目には、図１１（Ａ）における５〜８行目の記述が集約されて記述されている。つまり、図１１（Ｂ）に示すＸＭＬ文書でも、図１０（Ｂ）に示した例と同様、２つの子要素「title」および「author」にかかる全ての情報が、親要素「book」の開始タグ（空要素タグ）において、親要素「book」の属性として記述される。ただし、図１１（Ｂ）では、属性名「title」に対する属性値として、「ＸＭＬ（＆ＸＭＬ；の略称）入門」がそのまま記述される。
【０１１２】
ところで、パターン(3)のＸＭＬ文書〔例えば図２２（Ａ）参照〕は、前述した通り、外部ファイルを文書実現値（ＸＭＬインスタンス）の内容中で引用するために実体参照を用いるものである。第１実施形態では、文書実現値の内容を親要素の属性値として取り扱っているが、ＸＭＬ文書の仕様上、外部に対する実体参照を属性値で用いることはできないため、パターン(3)のＸＭＬ文書に、第１実施形態の圧縮手法は適用されない。
【０１１３】
図１２（Ａ）および図１２（Ｂ）はいずれも第１実施形態によるＸＭＬ文書の具体的な圧縮処理（第３例）を説明するための図である。
図１２（Ａ）に示す圧縮前のＸＭＬ文書は、前述したパターン(4)のＸＭＬ文書であり、１行目に、この文書がバージョン１．０のＸＭＬ文書であることを示すＸＭＬ宣言が記述され、２〜８行目にＤＴＤが記述され、９〜１２行目に文書実現値が記述されている。ここで、２〜８行目に記述されたＤＴＤは、図４（Ａ）に示したＤＴＤと同一であり、９〜１２行目に記述された文書実現値は、図２（Ｂ）に示した文書実現値の記述例と同一であるので、その説明は省略する。
【０１１４】
図１２（Ａ）に示すＸＭＬ文書（パターン(4)）には、“＜!ＤＯＣＴＹＰＥ”および“[”が記述されるとともに“＜!ＥＬＥＭＥＮＴ”または“＜!ＡＴＴＬＩＳＴ”も記述されているので、処理はステップＳ１４のＹＥＳルートからステップＳ１７へ移行し、文書実現値解析部２０によって文書実現値が解析されるとともに、ＤＴＤ解析部３０によってＤＴＤが解析される（ステップＳ１８）。これにより、文書実現値中やＤＴＤ中において、葉となる要素がどこに記述されているかが検出され、その葉要素の要素名と、親要素の要素名との対応関係が、葉の要素一覧表として登録・出力される。図１２（Ａ）に示すＸＭＬ文書の場合も、図２（Ｄ）と同様の葉の要素一覧表が得られる。
【０１１５】
そして、ステップＳ１７で得られた、葉の要素一覧表（解析結果）に従って、文書実現値構成変更部４０により、葉の要素についての要素名および内容が、それぞれ、親要素の属性名および属性値に移動・変更されるとともに、親要素の開始タグが空要素タグに変更される（ステップＳ１９）。このとき、葉の要素「author」に付随した属性「year」は、親要素「book」の属性に代わる。
【０１１６】
また、図１２（Ａ）に示すＸＭＬ文書はパターン(4)（即ち、その内部にＤＴＤを記述された、検証済みＸＭＬ文書）であるので、文書実現値構成変更部４０による文書実現値の構成変更に合わせて、ＤＴＤの構成を、ＤＴＤ構成変更部５０により以下のように変更する（ステップＳ２０）。
【０１１７】
つまり、構成変更後の文書実現値において、親要素「book」は子要素「title」および「author」をもたなくなるので、親要素「book」についての要素型宣言内で子要素を宣言していた内容モデル（title,author）は削除される。また、構成変更後の文書実現値において、葉の要素「title」および「author」は削除され親要素「book」の属性に変更されるとともに要素「author」の属性「year」も親要素「book」の属性に変更されるので、要素「title」および「author」の要素型宣言や要素「author」の属性リスト宣言も削除される。一方、親要素「book」は、新たに「title」，「author」および「year」を属性としてもつことになるため、親要素「book」の属性リスト宣言で、新たな属性の属性名および属性値を列挙する。
【０１１８】
上述したステップＳ１７〜Ｓ２０によって、図１２（Ａ）に示すＸＭＬ文書は、図１２（Ｂ）に示すようなＸＭＬ文書に変更・圧縮されてから、圧縮文書として文書記憶部１０等へ出力・格納される（ステップＳ２９）。
図１２（Ｂ）に示すＸＭＬ文書において、１行目および２行目の記述は圧縮前と変わらないが、３行目の要素「book」の要素型宣言からは内容モデルの記述が削除されている。また、４〜７行目の記述は、図１２（Ａ）における４〜７行目の記述を、要素「book」の属性リスト宣言内にまとめたものとなっている。
【０１１９】
さらに、図３（Ｂ）に示した例と同様、９行目には、図１２（Ａ）における９〜１２行目の記述が集約されて記述されている。つまり、図１２（Ｂ）に示すＸＭＬ文書でも、図３（Ｂ）に示した例と同様、２つの子要素（葉要素）「title」および「author」にかかる全ての情報が、親要素「book」の開始タグ（空要素タグ）において、親要素「book」の属性として記述される。
【０１２０】
図１３（Ａ）〜図１３（Ｄ）はいずれも第１実施形態によるＸＭＬ文書の具体的な圧縮処理（第４例）を説明するための図である。
図１３（Ａ）に示す圧縮前のＸＭＬ文書は、前述したパターン(5)のＸＭＬ文書であり、１行目に、この文書がバージョン１．０のＸＭＬ文書であることを示すＸＭＬ宣言が記述され、２行目に、外部ファイル１００のＤＴＤを指定するための情報（システム識別子）を含むＤＴＤが記述され、３〜６行目に文書実現値が記述されている。ここで、３〜６行目に記述された文書実現値は、図２（Ｂ）に示した文書実現値の記述例と同一であるので、その説明は省略する。
【０１２１】
２行目のＤＴＤの文書型宣言では、システム識別子“ＳＹＳＴＥＭ”により、外部ファイル１００に保持されたＤＴＤ（ファイル名「..\book.dtd」）を用いることが宣言・定義されている。
そして、ファイル名「..\book.dtd」のＤＴＤは、図１３（Ａ）における文書実現値の構成に対応して、図１３（Ｂ）に示すように記述されている。この図１３（Ｂ）に示すＤＴＤ（１〜５行目）は、図４（Ａ）に示したＤＴＤにおける２〜６行目の記述例と同一であるので、その説明は省略する。
【０１２２】
図１３（Ａ）に示すＸＭＬ文書（パターン(5)）には、“＜!ＤＯＣＴＹＰＥ”は記述されているが、その後には“[”が記述されることなく、外部ファイル１００におけるＤＴＤを指定するシステム識別子が記述されているので、処理はステップＳ１３のＮＯルートからステップＳ２１へ移行し、文書実現値解析部２０によって文書実現値が解析されるとともに、ＤＴＤ解析部３０によって、システム識別子に従って外部ファイル１００から読み込まれたＤＴＤ（ファイル名「..\book.dtd」）が解析される（ステップＳ２２）。これにより、文書実現値中やＤＴＤ中において、葉となる要素がどこに記述されているかが検出され、その葉の要素名と、親要素の要素名との対応関係が、葉の要素一覧表として登録・出力される。図１３（Ａ）や図１３（Ｂ）に示すＸＭＬ文書の場合も、図２（Ｄ）と同様の葉の要素一覧表が得られる。
【０１２３】
このとき、図１３（Ｂ）に示すＤＴＤを変更・圧縮して得られる新規のＤＴＤのために、元のファイル名とは異なる新規のファイル名（例えば「..\book2.dtd」）を設定して文書実現値に記入することにより、文書実現値における文書型宣言のシステム識別子“ＳＹＳＴＥＭ”により指定されるファイル名を、旧ファイル名「..\book.dtd」から、新規ファイル名「..\book2.dtd」に書き換える。
【０１２４】
この後、ステップＳ２１で得られた、葉の要素一覧表（解析結果）に従って、文書実現値構成変更部４０により、葉の要素についての要素名および内容が、それぞれ、親要素の属性名および属性値に移動・変更されるとともに、親要素の開始タグが空要素タグに変更される（ステップＳ２４）。このとき、葉の要素「author」に付随した属性「year」は、親要素「book」の属性に代わる。
【０１２５】
これにより、図１３（Ａ）に示すＸＭＬ文書は、図１３（Ｃ）に示すようなＸＭＬ文書に変更・圧縮される。図１３（Ｃ）に示すＸＭＬ文書において、１行目の記述は圧縮前と変わらないが、２行目のシステム識別子“ＳＹＳＴＥＭ”により指定されるファイル名が新規ファイル名「..\book2.dtd」となり、３行目には、図１３（Ａ）における３〜６行目の記述が集約されて記述されている。つまり、図１３（Ｃ）に示すＸＭＬ文書でも、図３（Ｂ）に示した例と同様、２つの子要素（葉要素）「title」および「author」にかかる全ての情報が、親要素「book」の開始タグ（空要素タグ）において、親要素「book」の属性として記述される。
【０１２６】
この後、新規ＤＴＤファイル作成部６０により、新規のＤＴＤファイルを作成し、そのＤＴＤファイルに、外部ファイル１００から読み込んだ圧縮前のＤＴＤファイルの内容を複写してから（ステップＳ２５）、文書実現値構成変更部４０による文書実現値の構成変更に合わせ、新規ファイルにおけるＤＴＤの構成を、ＤＴＤ構成変更部５０により、前述したステップＳ２０と同様にして変更する（ステップＳ２６）。
【０１２７】
これにより、図１３（Ｂ）に示すＤＴＤは、図１３（Ｄ）に示すようなＤＴＤに変更・圧縮される。図１３（Ｄ）に示すＤＴＤにおいて、１行目の要素「book」の要素型宣言からは内容モデルの記述が削除されている。また、２〜５行目の記述は、図１３（Ｂ）における２〜５行目の記述を、要素「book」の属性リスト宣言内にまとめたものとなっている。
【０１２８】
そして、ＤＴＤ構成変更部５０で変更・圧縮されたＤＴＤのファイル（新規ＤＴＤファイル）は、新規のファイル名「..\book2.dtd」を付与されて、新規ＤＴＤファイル作成部６０から外部ファイル１００へ出力・格納される（ステップＳ２７）。
【０１２９】
また、新旧ＤＴＤ対応表出力部７０によって、旧ＤＴＤと新規ＤＴＤとの対応関係（具体的には旧ファイル名と新規ファイル名との対応関係）を明記した新旧ＤＴＤ対応表が作成されて文書記憶部１０等へ出力・格納されるとともに（ステップＳ２８）、ステップＳ２４において変更・圧縮されたＸＭＬ文書は、圧縮文書として文書記憶部１０等へ出力・格納される（ステップＳ２９）。その際、新旧ＤＴＤ対応表は、独立したファイルではなく、圧縮文書に注釈の形で付加してもよい。
【０１３０】
なお、第１実施形態では、圧縮したＸＭＬ文書を元の状態に復元（伸長）する必要はないので、必ずしも、元のＤＴＤの保存や新旧ＤＴＤ対応表の作成を実行しなくてもよい。つまり、第１実施形態では、新規ＤＴＤファイル作成部６０やこの新規ＤＴＤファイル作成部６０によるステップＳ２５，Ｓ２７の処理、並びに、新旧ＤＴＤ対応表出力部７０やこの新旧ＤＴＤ対応表出力部７０によるステップＳ２８の処理を省略することも可能である。
【０１３１】
ただし、元のＤＴＤや新旧ＤＴＤ対応表は、第２実施形態で後述するごとく圧縮されたＸＭＬ文書を復元（伸長）する際に必要になるものである。第１実施形態の圧縮装置は、上述のような、元のＤＴＤの保存機能や新旧ＤＴＤ対応表の作成機能をそなえるとともに、図６を参照しながら後述するタグ辞書作成機能をそなえ、後述する第２実施形態の圧縮手法を実現することもできるように構成されている。
【０１３２】
さて、次に、図６〜図９を参照しながら、第１実施形態の圧縮装置を構成する各部２０，３０，４０および５０の動作について説明する。
まず、図６に示すフローチャート（ステップＳ３１〜Ｓ４３）に従って、第１実施形態の文書実現値解析部２０による解析手順について説明すると、文書実現値解析部２０は、圧縮対象の文書実現値を最後まで走査したか否かを判断しながら（ステップＳ３１）、文書実現値を走査し（ステップＳ３２）、文書実現値の記述を先頭から順次認識し、“＜”が記述されているか否かを調べていく（ステップＳ３３）。なお、“＜”は、ＸＭＬの仕様上、文書実現値の内容には記述されない。
【０１３３】
文書実現値の記述として“＜”が検出された場合（ステップＳ３３のＹＥＳルート）、“＜”に続く１バイトの記述に基づいて、この“＜”で始まるタグが開始タグか終了タグかを判定する（ステップＳ３４）。その判定は、“＜”に続く記述が“/”であるか否かによって行なわれる。即ち、“＜”に続く記述が“/”である場合、そのタグは終了タグであると判定され、“＜”に続く記述が“/”ではない場合、そのタグは開始タグであると判定される。
【０１３４】
開始タグの場合（ステップＳ３４のＹＥＳルート）、その開始タグ内に記述されている要素名や属性名を検出し、それぞれ、要素名一覧表および属性名一覧表に登録する（ステップＳ３５，Ｓ３６）。その際、要素名や属性名の出現頻度も集計する。この出現頻度は、第２実施形態で必要となるタグ辞書を作成する際に利用されるものである。なお、開始タグ内には、属性名が記述されていない場合があるが、その場合、属性名は検出されないので、ステップＳ３６の処理は省略される。一覧表への登録を終了した後は、ステップＳ３１へ戻る。
【０１３５】
一方、終了タグの場合（ステップＳ３４のＮＯルート）、その終了タグ内に記述されている要素名を検出し（ステップＳ３７）、その要素名が、要素名一覧表において最後に登録された要素名と一致するか否かを判定する（ステップＳ３８）。
このとき、その終了タグで括られた要素（以下、注目要素と呼ぶ）の文書実現値の内容に、子要素の記述が存在する場合、終了タグ内の要素名と要素名一覧表の最後の要素名とは一致しない。また、注目要素の文書実現値の内容に子要素の記述が存在しない場合、即ち、注目要素が葉の要素である場合、終了タグ内の要素名と要素名一覧表の最後の要素名とは一致する。
【０１３６】
従って、ステップＳ３８で要素名が一致しないと判定された場合（ＮＯルート）、注目要素は子要素を有するものであって葉の要素ではなく、そのままステップＳ３１へ戻る。
これに対し、ステップＳ３８で要素名が一致すると判定された場合（ＹＥＳルート）、注目要素は子要素を有しない葉の要素であると判断することができ、続いて、その注目要素の内容中に外部ファイルに対する実体参照が記述されているか否かを判定する（ステップＳ３９）。
【０１３７】
葉要素の内容は、第１実施形態の圧縮変換により親要素の属性として取り扱われることになるが、前述した通り、ＸＭＬの仕様上、外部ファイルに対する実体参照を属性値において用いることができない。
そこで、ステップＳ３９で実体参照が記述されていると判定された場合（ＹＥＳルート）、そのままステップＳ３１へ戻る。つまり、外部ファイルに対する実体参照をもつ葉の要素は、「葉の要素一覧表」には登録されない。
【０１３８】
一方、ステップＳ３９で注目要素の内容に実体参照が記述されていないことが確認された場合（ＮＯルート）には、「葉の要素一覧表」に、注目要素の要素名が葉の要素名として登録・追加されるとともに、その葉の親の要素名も登録・追加される（ステップＳ４０）。この後、ステップＳ３１に戻る。
【０１３９】
そして、ステップＳ３１において圧縮対象の文書実現値を最後まで走査したと判定された場合（ＹＥＳルート）、文書実現値の走査中に出現した要素名および属性名の出現頻度に基づいて、出現頻度の高い要素名や属性名を、より短い文字列（例えば１バイト；短縮文字列）に対応させるタグ辞書（図１４の符号９０参照）を作成・出力するとともに（ステップＳ４１，Ｓ４２）、最終的に得られた「葉の要素一覧表」〔例えば図２（Ｄ）参照〕を出力して（ステップＳ４３）、処理を終了する。
【０１４０】
なお、第１実施形態では、文書実現値解析部２０によりタグ辞書を作成しているが、このタグ辞書は、第１実施形態の圧縮手法を実行する際には用いられず、後述する第２実施形態において用いられるものである。従って、第１実施形態では、ステップＳ４１およびＳ４２を省略してもよい。また、第２実施形態では、ステップＳ４１およびＳ４２の処理は、文書実現値解析部２０ではなく、タグ辞書作成部８０（図１４参照）により実行されるものとして説明される。
【０１４１】
次に、図７に示すフローチャート（ステップＳ５１〜Ｓ５８）に従って、第１実施形態のＤＴＤ解析部３０による解析手順について説明すると、ＤＴＤ解析部３０は、構成変更対象のＤＴＤを最後まで走査したか否かを判断しながら（ステップＳ５１）、ＤＴＤを走査し（ステップＳ５２）、ＤＴＤの記述を先頭から順次認識し、“＜!ＥＬＥＭＥＮＴ”が記述されているか否かを調べていく（ステップＳ５３）。
【０１４２】
例えば図４（Ａ）の２行目に示すごとく、要素型宣言では、“!＜ＥＬＥＭＥＮＴ”の後に要素名および内容モデル（子要素の要素名）が記述される。内容モデル内において、“＃ＰＣＤＡＴＡ”のような予約語のみが記述され、独自の子の要素名が登録されていない場合、その要素型宣言は、葉の要素を対象としたものということになる。
【０１４３】
そこで、ステップＳ５３でＤＴＤの記述として“!＜ＥＬＥＭＥＮＴ”が検出された場合（ＹＥＳルート）、“!＜ＥＬＥＭＥＮＴ”に続く要素文字列（要素名）を検出してから（ステップＳ５４）、さらにその後に続いて記述される内容モデルの記述を調査し（ステップＳ５５）、内容モデル内に子の要素名が記述されているか否かを判定する（ステップＳ５６）。
【０１４４】
内容モデル内に要素名が記述されていない場合（ステップＳ５６のＮＯルート）、今注目している要素型宣言は、葉の要素にかかるものであると判断され、その要素型宣言内の要素名（ステップＳ５４で検出したもの）を、親の要素名とともに「葉の要素一覧表」に登録してから（ステップＳ５７）、ステップＳ５１に戻る。
【０１４５】
ステップＳ５３でＤＴＤの記述として“!＜ＥＬＥＭＥＮＴ”が検出されなかった場合（ＮＯルート）や、ステップＳ５６で内容モデル内に子の要素名が記述されていると判定された場合（ＹＥＳルート）には、「葉の要素一覧表」への登録処理を行なうことなく、ステップＳ５１に戻る。
そして、ステップＳ５１において構成変更対象のＤＴＤを最後まで走査したと判定された場合（ＹＥＳルート）、最終的に得られた「葉の要素一覧表」〔例えば図２（Ｄ）参照〕を出力して（ステップＳ５８）、処理を終了する。
【０１４６】
ただし、ＤＴＤにおいて内容モデルにより内容の型（例えば＃ＰＣＤＡＴＡ）が定義されていても、そのＤＴＤの記述からは、内容に実体参照が含まれるか否かを認識することはできない。つまり、ＤＴＤ解析部３０は、前述した文書実現値解析部２０とは異なり、ＤＴＤを解析しただけでは、そのＤＴＤに従って記述される文書実現値の内容に実体参照が含まれるか否かを認識することはできず、当然、その実体参照が文書内を対象とするものか外部ファイルを対象とするものかを区別することはできない。
【０１４７】
図８に示すフローチャート（ステップＳ６１〜Ｓ７２）に従って、第１実施形態の文書実現値構成変更部４０による構成変更手順について説明すると、文書実現値構成変更部４０は、まず、文書実現値解析部２０やＤＴＤ解析部３０で得られた「葉の要素一覧表」を入力してから（ステップＳ６１）、圧縮対象の文書実現値を最後まで走査したか否かを判断しながら（ステップＳ６２）、文書実現値を走査する（ステップＳ６３）。
【０１４８】
その際、文書実現値の記述を、「葉の要素一覧表」に登録された葉の要素名と比較しながら、先頭から順次認識し、その文書実現値の記述が、「葉の要素一覧表」に登録された葉の要素であるか否かを判断する（ステップＳ６４）。
「葉の要素一覧表」に登録された葉の要素を文書実現値中で検出した場合（ＹＥＳルート）、その葉の要素が属性を有しているか否かを判定し（ステップＳ６５）、属性を有している場合（ＹＥＳルート）には、その属性、つまり属性名および属性値の文字列をそれぞれ属性名一覧および属性値一覧に登録する（ステップＳ６６）。
【０１４９】
属性情報を有していない場合（ステップＳ６５のＮＯルート）や、ステップＳ６６での登録処理の終了後には、その葉の要素名および内容の文字列をそれぞれ属性名一覧および属性値一覧に登録する（ステップＳ６７）。
そして、ステップＳ６６やＳ６７による登録処理を完了した葉の要素についての、開始タグ，内容および終了タグを、文書実現値から削除してから（ステップＳ６８）、ステップＳ６２へ戻る。
【０１５０】
また、ステップＳ６４で葉の要素が検出されなかった場合（ＮＯルート）の場合は、ステップＳ６５〜Ｓ６８の処理を行なうことなくステップＳ６２へ戻る。
ステップＳ６２において圧縮対象の文書実現値を最後まで走査したと判定された場合（ＹＥＳルート）、「葉の要素一覧表」から葉の親要素を検出し（ステップＳ６９）、その親要素の開始タグに、属性名一覧および属性値一覧にそれぞれ登録されている属性名および属性値を新たに付加する（ステップＳ７０）。
【０１５１】
この後、親要素の終了タグ“＜親の要素名/＞”を削除してから（ステップＳ７１）、親の開始タグの最後に記述された“＞”の前に、“/”を記入することにより、葉の親要素の開始タグを空要素タグに変更して（ステップＳ７２）、処理を終了する。
【０１５２】
図９に示すフローチャート（ステップＳ８１〜Ｓ８９）に従って、第１実施形態のＤＴＤ構成変更部５０による構成変更手順について説明すると、ＤＴＤ構成変更部５０は、まず、文書実現値解析部２０やＤＴＤ解析部３０で得られた「葉の要素一覧表」を入力してから（ステップＳ８１）、構成変更対象のＤＴＤを最後まで走査したか否かを判断しながら（ステップＳ８２）、ＤＴＤを走査する（ステップＳ８３）。
【０１５３】
その際、「葉の要素一覧表」に登録された葉の要素名を有する要素型宣言、即ち“＜!ＥＬＥＭＥＮＴ 葉の要素名”が記述されているか否かを判断する（ステップＳ８４）。
そのような葉の要素型宣言が記述されている場合（ステップＳ８４のＹＥＳルート）、その葉の要素型宣言をＤＴＤから削除した後（ステップＳ８５）、その葉の要素名を有する属性リスト宣言、つまり“＜!ＡＴＴＬＩＳＴ 葉の要素名 属性名”が記述されているか否かを判断する（ステップＳ８６）。
【０１５４】
そのような葉の属性リスト宣言が記述されている場合（ステップＳ８６のＹＥＳルート）、その葉の属性リスト宣言をＤＴＤから削除した後（ステップＳ８７）、その葉についての親要素の要素型宣言における内容モデルの記述から葉（子要素）の記述を削除する（ステップＳ８８）。
【０１５５】
そして、葉の親要素についての属性リスト宣言において、ステップＳ８５で削除した葉の要素についての要素名および内容を、それぞれ新たな属性名および属性値として付加するとともに、ステップＳ８７で削除した葉の要素についての属性名および属性値を、それぞれ新たな属性名および属性値として付加してから（ステップＳ８９）、ステップＳ８２へ戻る。このとき、親要素についての属性リスト宣言が、構成変更前に存在していない場合には、新たに属性リスト宣言を作成する。
【０１５６】
なお、ステップＳ８４で葉の要素型宣言が記述されていないと判断された場合（ＮＯルート）、ステップＳ８２へ戻る。また、ステップＳ８６で葉の属性リスト宣言が記述されていないと判断された場合（ＮＯルート）、ステップＳ８８へ移行する。
ステップＳ８６のＮＯルートもしくはステップＳ８７からステップＳ８８へ移行した時に、既に内容モデルから葉の記述が削除されている場合には、ステップＳ８８では何ら処理を行なうことなく、ステップＳ８９へ移行する。
【０１５７】
さらに、ステップＳ８６のＮＯルートを経由してステップＳ８８へ移行した場合には、葉の親要素についての属性リスト宣言において、ステップＳ８５で削除した葉の要素についての要素名および内容を、それぞれ新たな属性名および属性値として付加してから、ステップＳ８２へ戻る。このときも、親要素についての属性リスト宣言が、構成変更前に存在していない場合には、新たに属性リスト宣言を作成する。
【０１５８】
このように、本発明の第１実施形態によれば、文書実現値における要素の木構造を解析し、その解析結果に従って、葉要素についての開始タグ，終了タグおよび内容を文書実現値から削除し、その葉要素の要素名，内容，属性名および属性値を親要素の属性として親要素の開始タグ内に付加することにより、葉要素にかかる記述を親要素の属性として取り扱うことができ、葉要素の開始タグや終了タグを記述する必要がなくなり、ＸＭＬ文書の特徴を損なうことなく、また、検索可能な状態に保持したまま、葉要素にかかるタグの記述が省略・圧縮される。
【０１５９】
従って、ＸＭＬ文書の圧縮率を大幅に高めることができ、ひいては、大規模なデータベースを取り扱うシステムにおいて文書データの格納効率を大幅に高めることができる。特に、多数の短い語句をもつ部品表や価格表等をＸＭＬ文書で記述するような場合、短い語句（内容）を挟んだ開始タグと終了タグとの対表現を省略することができるので、その圧縮率を大幅に高めることができる。
【０１６０】
このとき、圧縮後も、データ長の短い内容の平文を検索対象として扱うことが可能であり、検索を行なう際にはＸＭＬ文書を復元（伸長）する必要がない。
また、ＸＭＬ文書の特徴を損なわないため、ブラウザなどの応用ソフトウェアとの整合を容易にとることができる。
さらに、親要素の終了タグを削除して親要素の開始タグを空要素タグに変更することで、ＸＭＬ文書の圧縮率をより高めることができる。
【０１６１】
同様に、ＤＴＤにおける要素の木構造を解析し、その解析結果に従って、葉要素の要素型宣言や属性リスト宣言をＤＴＤから削除するとともに葉要素にかかる記述を親要素の要素型宣言（内容モデル）から削除し、その葉要素の要素型宣言や属性リスト宣言にかかる情報を親要素の属性として再定義することにより、文書実現値に対して行なわれた圧縮に対応した圧縮処理がＤＴＤに対しても行なわれ、葉要素にかかる記述を親要素の属性として取り扱うことができる。従って、ＸＭＬ文書の特徴を損なうことなく、また、検索可能な状態に保持したまま、葉要素にかかる要素型宣言や属性リスト宣言の記述が省略されてＤＴＤが圧縮されるので、ＸＭＬ文書の圧縮率をより高めることができる。
【０１６２】
〔２〕第２実施形態の説明
次に、本発明の第２実施形態について説明する。
まず、図１５（Ａ）〜図１５（Ｄ）を参照しながら、本発明の第２実施形態における構造化文書の圧縮原理を説明する。なお、本発明の第２実施形態でも、構造化文書がＸＭＬ文書である場合について説明する。
【０１６３】
第２実施形態では、文書実現値のタグ内やＤＴＤにおける要素名および属性名の各文字列を、１または２バイトの文字列に置換し、その対応関係をタグ辞書（図１４の符号９０参照）に記録する。
通常、タグ内に記述される文字列（要素名や属性名）は、人が読んで意味が分かるように数バイト以上の長さの文字列を用いて、ＤＴＤで定義されている。
【０１６４】
ただし、要素名および属性名の先頭文字は、ＳＧＭＬでは１バイトの英字（Ａ〜Ｚ，ａ〜ｚ）に限られる。一方、ＸＭＬでは、先頭文字は、１バイトの英字，２バイトの平仮名またはカタカナ，１バイトの“#”または“：”のいずれかに限られる。
一般に、文書実現値のタグ部分だけで、すべての文書量の６割から８割が占められる。このため、タグ内における文字列の可読性を犠牲にして、その文字列を１または２バイトの文字列に変換するだけで、ＸＭＬ文書の圧縮率を大幅に高めることが可能である。
【０１６５】
そこで、本発明の第２実施形態では、図１５（Ａ）〜図１５（Ｄ）に示すように、要素名および属性名の既存の名前と、新たに定義した１または２バイトの短縮文字列との間の対応関係をタグ辞書に記録し、そのタグ辞書に基づいて、文書実現値のタグ内およびＤＴＤにおける該当する文字列を、より短い短縮文字列に置き換える。この短縮文字列は、当然、既存の名前の文字列よりも短く且つその文字列を特定しうるものでなければならない。
【０１６６】
図１５（Ａ）はタグの具体的な記述例を示す図で、この図１５（Ａ）に示すタグでは、要素名「title」の要素に対して、属性名「tsprint」および属性値「スクールＣＡＩシリーズＮＯ.563 3(3)」 をもつ属性が付与されている。
このとき、図１５（Ｂ）に示すごとく、要素名「title」の置換文字（短縮文字列）として「ａ」を予め設定してタグ辞書に登録しておくとともに、図１５（Ｃ）に示すごとく、属性名「tsprint」の置換文字（短縮文字列）として「Ａ」を予め設定してタグ辞書に登録しておく。
【０１６７】
そして、図１５（Ｂ）や図１５（Ｃ）に示すタグ辞書を用いることにより、図１５（Ａ）に示すタグにおいて、要素名および属性名の文字列を、図１５（Ｄ）に示すように、１バイトの文字列に置き換える。このとき、ＤＴＤを有する検証済みＸＭＬ文書（パターン(4)，(5)）においては、そのＤＴＤも、上述した文字列置換に対応して変換される。
【０１６８】
従って、ＳＧＭＬパーサーやＸＭＬパーサー（プロセッサ）等では、上述のごとく変換されたＤＴＤに基づいて、同じく上述のごとく変換された構造化文書が解析される。ただし、応用ソフトウェア側で要素や属性の探索を行なう際には、変換されたＤＴＤから読み取った１または２バイトの短縮文字列を用いて、要素名および属性名を指定しなければならない。
【０１６９】
以下、図１４および図１６〜図２４を参照しながら、本発明の第２実施形態について、より詳細かつ具体的に説明する。
図１４は本発明の第２実施形態としての構造化文書の圧縮装置の機能構成を示すブロック図であり、この図１４に示すように、第２実施形態の圧縮装置は、第１実施形態と同様の文書記憶部１０，文書実現値解析部２０，ＤＴＤ解析部３０，新規ＤＴＤファイル作成部６０および新旧ＤＴＤ対応表出力部７０のほかに、タグ辞書作成部８０，タグ辞書９０，文書実現値文字列置換部４１およびＤＴＤ文字列置換部５１を有して構成されている。
【０１７０】
ここで、第２実施形態の圧縮装置も、第１実施形態と同様、ＣＰＵ，ＲＡＭ，ＲＯＭなどをバスラインにより接続して構成される、パソコン等のコンピュータシステムにより実現されるものである。
つまり、ＲＡＭやＲＯＭが文書記憶部１０としての機能を果たすほか、ＲＡＭには、文書実現値解析部２０，ＤＴＤ解析部３０，新規ＤＴＤファイル作成部６０，新旧ＤＴＤ対応表出力部７０，タグ辞書作成部８０，文書実現値文字列置換部４１およびＤＴＤ文字列置換部５１を実現するためのアプリケーションプログラムが格納されている。また、タグ辞書９０は、例えばＲＡＭ上に記録・保存される。
【０１７１】
そして、ＣＰＵが、上記アプリケーションプログラムを実行することにより、文書実現値解析部２０，ＤＴＤ解析部３０，新規ＤＴＤファイル作成部６０，新旧ＤＴＤ対応表出力部７０，タグ辞書作成部８０，文書実現値文字列置換部４１およびＤＴＤ文字列置換部５１としての機能（その詳細については後述）が実現され、第２実施形態の構造化文書の圧縮装置が実現されるようになっている。
【０１７２】
この第２実施形態の圧縮装置を実現するためのプログラムも、第１実施形態と同様、例えばフレキシブルディスク，ＣＤ−ＲＯＭ等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供してもよい。
【０１７３】
そして、第２実施形態の圧縮装置としての機能をコンピュータにより実現する際には、内部記憶装置（例えばＲＡＭ）に格納された上記プログラムがコンピュータのマイクロプロセッサ（例えばＣＰＵ）によって実行される。このとき、記録媒体に記録されたプログラムをマイクロプロセッサが直接読み取って実行してもよい。
【０１７４】
さて、図１４に示す第２実施形態の圧縮装置において、文書記憶部１０，文書実現値解析部２０，ＤＴＤ解析部３０，新規ＤＴＤファイル作成部６０および新旧ＤＴＤ対応表出力部７０は、第１実施形態で説明したものとほぼ同様の機能を果たすので、その詳細な説明は省略する。
ただし、第１実施形態の文書実現値解析部２０は、第２実施形態のタグ辞書作成部８０としての機能を有していたが、第２実施形態では、図６のステップＳ４１，Ｓ４２に対応した処理を行なう部分を、タグ辞書作成部８０として、文書実現値解析部２０から機能的に分離して説明する。
【０１７５】
このタグ辞書作成部８０は、文書実現値解析部２０やＤＴＤ解析部３０による解析結果に従い、文書実現値のタグ内およびＤＴＤに記述された文字列（要素名，属性名）とその文字列よりも短く且つその文字列を特定しうる短縮文字列（前述した１または２バイトの文字列）とを対応させるタグ辞書９０を作成するものである。
【０１７６】
なお、本実施形態のタグ辞書作成部８０は、図６を参照しながら第１実施形態で説明したごとく、文書実現値解析部２０による解析結果のみを用いてタグ辞書９０を作成するものとなっているが、文書実現値解析部２０による解析結果に代えてＤＴＤ解析部３０による解析結果を用いてタグ辞書９０を作成してもよいし、文書実現値解析部２０による解析結果とＤＴＤ解析部３０による解析結果との両方を用いてタグ辞書９０を作成してもよい。
【０１７７】
文書実現値文字列置換部４１は、タグ辞書９０を用いて、文書実現値のタグ内に記述された文字列（要素名，属性名）を、その文字列に対応する短縮文字列に置き換えるもので、その置換手順については、図１７に示すフローチャートを参照しながら後述する。
【０１７８】
ＤＴＤ文字列置換部５１は、ＸＭＬ文書が検証済みＸＭＬ文書である場合（つまりパターン(4)または(5)のＸＭＬ文書である場合）に、ＤＴＤの記述を、文書実現値文字列置換部４１によって置換された文書実現値の記述に合わせるべく、タグ辞書９０を用いて、ＤＴＤに記述された文字列（要素名，属性名）を、その文字列に対応する短縮文字列に置き換えるもので、その置換手順については、図１８に示すフローチャートを参照しながら後述する。
【０１７９】
なお、ＤＴＤ文字列置換５１において、ＸＭＬ文書がパターン(4)である場合、ＤＴＤは文書記憶部から読み込まれるが、ＸＭＬ文書がパターン(5)である場合、ＤＴＤは外部ファイル１００から読み込まれる。
また、第２本実施形態でも、ＸＭＬ文書がパターン(4)である場合、ＤＴＤ文字列置換部５１による置換結果（圧縮後のＤＴＤ）を、文書実現値置換部４１による置換結果（圧縮後の文書実現値）とともに文書記憶部１０に出力・格納しているが、圧縮後の文書実現値とともに他の記録媒体等に出力・格納してもよい。
【０１８０】
新規ＤＴＤファイル作成部６０は、ＤＴＤが外部ファイル１００に存在する場合（ＸＭＬ文書がパターン(5)である場合）、ＤＴＤ文字列置換部５１により置換処理されたＤＴＤについてのファイル（新規ＤＴＤファイル）を作成して外部ファイル１００へ出力するものである。
新旧ＤＴＤ対応表出力部７０は、ＤＴＤが外部ファイル１００に存在する場合（ＸＭＬ文書がパターン(5)である場合）、置換処理前のＤＴＤと置換処理後の新規ＤＴＤとの対応関係を明記した新旧ＤＴＤ対応表〔例えば図２４（Ｇ）参照〕を作成して文書記憶部１０へ出力するものである。
【０１８１】
上述のごとく第２実施形態の圧縮手法（文字列の置換）により圧縮されたＸＭＬ文書は、ＸＭＬ文書としての特徴を全く損なっておらず、圧縮状態のままで（伸長することなく）ＸＭＬ文書としての機能を果たすことができる。
このとき、タグ辞書９０を保持しておけば、このタグ辞書９０を参照して置換前の文字列と短縮文字列との対応関係を認識することにより、文書実現値やＤＴＤにおいて置換・圧縮された文字列を伸長することなく、ＸＭＬ文書内のデータを検索することができる。
【０１８２】
なお、上述のごとく短縮文字列に置換されたＸＭＬ文書の記述を元の状態に伸長・復元させるために、文書実現値文字列逆置換手段やＤＴＤ文字列逆置換手段を含んで構成された伸長装置（図示省略）をそなえておく。
ここで、文書実現値文字列逆置換手段は、上述した文書実現値文字列置換部４１とは逆の置換処理を行なうもので、タグ辞書９０を用いて、文書実現値のタグ内に記述された短縮文字列を、元の文字列（要素名，属性名）に置き換えるものであり、ＤＴＤ文字列逆置換手段は、上述したＤＴＤ文字列置換部５１とは逆の置換処理を行なうもので、タグ辞書９０を用いて、ＤＴＤに記述された短縮文字列を、元の文字列（要素名，属性名）に置き換えるものである。
【０１８３】
次に、図１６〜図２４を参照しながら、第２実施形態について説明する。
まず、図１６に示すフローチャート（ステップＳ１１１〜Ｓ１２９）に従い、第２実施形態における構造化文書（ＸＭＬ文書）の圧縮手順を説明する。なお、図１６中の丸付き数字１〜５は、それぞれ、表２を参照しながら前述したパターン(1)〜(5)に対応している。
なお、図１４では図示省略しているが、第２実施形態の圧縮装置にも、文書記憶部１０に保存されているＸＭＬ文書がパターン(1)〜(5)（表２参照）のいずれのものであるからを認識するためのパターン認識機能がそなえられている。このパターン認識機能による処理は、図１６に示すステップＳ１１２〜Ｓ１１４による処理に対応している。
【０１８４】
圧縮対象のＸＭＬ文書が入力され文書記憶部１０に格納されると（ステップＳ１１１）、そのＸＭＬ文書に“＜!ＤＯＣＴＹＰＥ”が記述されているか否かを判定し（ステップＳ１１２）、記述されていない場合（ステップＳ１１２のＮＯルート）、そのＸＭＬ文書はＤＴＤをもたない整形式ＸＭＬ文書、つまりパターン(1)のＸＭＬ文書であると認識され、後述するごとくステップＳ１１５，Ｓ１１６およびＳ１２９が実行される。
【０１８５】
ＸＭＬ文書に“＜!ＤＯＣＴＹＰＥ”が記述されている場合（ステップＳ１１２のＹＥＳルート）、その後に“［”が記述されているか否かを判定する（ステップＳ１１３）。
“＜!ＤＯＣＴＹＰＥ”は記述されているが“[”が記述されていない場合（ステップＳ１１３のＮＯルート）、そのＸＭＬ文書は、ＤＴＤを外部ファイル１００として有する検証済みＸＭＬ文書、つまりパターン(5)のＸＭＬ文書であると認識され、後述するごとくステップＳ１２１〜Ｓ１２９が実行される。
【０１８６】
“[”が記述されている場合（ステップＳ１１３のＹＥＳルート）、“＜!ＥＬＥＭＥＮＴ”（もしくは“＜!ＡＴＴＬＩＳＴ”）が記述されているか否かを判定する（ステップＳ１１４）。
“＜!ＤＯＣＴＹＰＥ”および“[”は記述されているが“＜!ＥＬＥＭＥＮＴ”が記述されていない場合（ステップＳ１１４のＮＯルート）、内部または外部への実体宣言を含むＤＴＤを有する整形式ＸＭＬ文書、つまりパターン(2)または(3)のＸＭＬ文書であると認識され、パターン(1)の場合と同様、ステップＳ１１５，Ｓ１１６およびＳ１２９が実行される。
【０１８７】
“＜!ＤＯＣＴＹＰＥ”，“[”および“＜!ＥＬＥＭＥＮＴ”がいずれも記述されている場合（ステップＳ１１４のＹＥＳルート）、ＸＭＬ文書内にＤＴＤを有する検証済みＸＭＬ文書、つまりパターン(4)のＸＭＬ文書であると認識され、ステップＳ１１７〜Ｓ１２０およびＳ１２９が実行される。
以下、各パターン(1)〜(5)に対する圧縮処理について、図２０〜図２４に示す具体例（第１例〜第５例）を参照しながら説明する。
【０１８８】
図２０（Ａ）〜図２０（Ｃ）はいずれも第２実施形態によるＸＭＬ文書の具体的な圧縮処理（第１例）を説明するための図である。
図２０（Ａ）に示す圧縮前のＸＭＬ文書は、パターン(1)のＸＭＬ文書であり、図１０（Ａ）に示したものと同じである。この図２０（Ａ）に示すＸＭＬ文書（パターン(1)）には“＜!ＤＯＣＴＹＰＥ”が記述されていないので、処理はステップＳ１１２のＮＯルートからステップＳ１１５へ移行し、文書実現値解析部２０によって文書実現値のタグ内の記述が解析され、タグ辞書作成部８０により、図２０（Ｃ）に示すようなタグ辞書９０が登録・作成される。
【０１８９】
ここで、図２０（Ａ）に示す例では、文書実現値の各タグ内には要素名のみが記述され、どの要素も属性を有していないので、要素名だけが検出され、各要素名に短縮文字列を対応させるタグ辞書９０が登録・作成される。図２０（Ｃ）に示すタグ辞書９０は、文書実現値解析部２０によって検出・認識された要素名「book」,「title」,「author」に、１バイトの短い短縮文字列（以下、置換文字という場合がある）、例えば「ａ」，「ｂ」，「ｃ」をそれぞれ対応させるものとなっている。
【０１９０】
なお、タグ内に属性名も記述されている場合には、図２３（Ｄ）や図２４（Ｅ）を参照しながら後述するごとく、属性名についてのタグ辞書９０も登録・作成される。
そして、ステップＳ１１５で得られたタグ辞書９０を用いて、文書実現値文字列置換部４１により、文書実現値のタグ内に記述された要素名「book」,「title」,「author」が、それぞれ、１バイトの置換文字「ａ」，「ｂ」，「ｃ」に置き換えられる（ステップＳ１１６）。
【０１９１】
ステップＳ１１５およびＳ１１６によって、例えば図２０（Ａ）に示すＸＭＬ文書は、図２０（Ｂ）に示すようなＸＭＬ文書に置換・圧縮されてから、圧縮文書として文書記憶部１０等へ出力・格納される（ステップＳ１２９）。
図２０（Ｂ）に示すＸＭＬ文書において、１行目のＸＭＬ宣言の記述は圧縮前と変わらないが、２〜５行目においては、開始タグ内および終了タグ内の要素名「book」,「title」,「author」がそれぞれ１バイトの置換文字「ａ」，「ｂ」，「ｃ」に置換されている。
【０１９２】
図２１（Ａ）〜図２１（Ｃ）はいずれも第２実施形態によるＸＭＬ文書の具体的な圧縮処理（第２例）を説明するための図である。
図２１（Ａ）に示す圧縮前のＸＭＬ文書は、パターン(2)のＸＭＬ文書であり、図１１（Ａ）に示したものと同じである。この図２１（Ａ）に示すＸＭＬ文書（パターン(2)）には、“＜!ＤＯＣＴＹＰＥ”および“[”がいずれも記述されているが、“＜!ＥＬＥＭＥＮＴ”や“＜!ＡＴＴＬＩＳＴ”が記述されていないので、処理はステップＳ１１４のＮＯルートからステップＳ１１５へ移行し、前述したパターン(1)のＸＭＬ文書と同様の処理が実行される。このとき、タグ辞書作成部８０により、図２１（Ｃ）に示すごとく、図２０（Ｃ）に示したものと同じタグ辞書９０が登録・作成される。
【０１９３】
これにより、例えば図２１（Ａ）に示すＸＭＬ文書は、図２１（Ｂ）に示すようなＸＭＬ文書に置換・圧縮されてから、圧縮文書として文書記憶部１０等へ出力・格納される（ステップＳ１２９）。
図２１（Ｂ）に示すＸＭＬ文書において、１，３および４行目の記述は圧縮前と変わらないが、２，５〜８行目におけるタグ内の要素名「book」,「title」,「author」がそれぞれ１バイトの置換文字「ａ」，「ｂ」，「ｃ」に置換される。
【０１９４】
図２２（Ａ）〜図２２（Ｃ）はいずれも第２実施形態によるＸＭＬ文書の具体的な圧縮処理（第３例）を説明するための図である。
図２２（Ａ）に示す圧縮前のＸＭＬ文書は、前述したパターン(3)のＸＭＬ文書であり、１行目に、この文書がバージョン１．０のＸＭＬ文書であることを示すＸＭＬ宣言が記述され、２〜４行目に、外部への実体宣言を含むＤＴＤが記述され、５〜８行目に文書実現値が記述されている。
【０１９５】
２〜４行目のＤＴＤでは、文書型宣言に含まれる実体宣言（３行目）におけるシステム識別子“ＳＹＳＴＥＭ”を用いて、文書実現値（ＸＭＬインスタンス）内で用いられる文字列「ｐａｒａ」の実体として、ＵＲＬ“http://www.xml.co.jp”で指定される外部ファイルを用いることが宣言・定義されている。
また、５〜８行目に記述された文書実現値は、図１０（Ａ）に示したＸＭＬ文書の２〜５行目の記述例とほぼ同一であるが、図２２（Ａ）に示す例では、７行目の要素「author」の内容として、「佐藤元＆ｐａｒａ；」が記述されている。
【０１９６】
ここで、「＆ｐａｒａ；」は、文字列「ｐａｒａ」の実体を参照することを指示する記述であり、実際に表示・印刷等によって出力される文書中では、ＵＲＬ“http://www.xml.co.jp”で指定される外部ファイルが読み出されて表記されることになる。
【０１９７】
そして、図２２（Ａ）に示すＸＭＬ文書（パターン(3)）には、パターン(2)のＸＭＬ文書と同様、“＜!ＤＯＣＴＹＰＥ”および“[”がいずれも記述されているが、“＜!ＥＬＥＭＥＮＴ”や“＜!ＡＴＴＬＩＳＴ”が記述されていないので、処理はステップＳ１１４のＮＯルートからステップＳ１１５へ移行し、前述したパターン(1)や(2)のＸＭＬ文書と同様の処理が実行される。このとき、タグ辞書作成部８０により、図２２（Ｃ）に示すごとく、図２０（Ｃ）に示したものと同じタグ辞書９０が登録・作成される。
【０１９８】
これにより、例えば図２２（Ａ）に示すＸＭＬ文書は、図２２（Ｂ）に示すようなＸＭＬ文書に置換・圧縮されてから、圧縮文書として文書記憶部１０等へ出力・格納される（ステップＳ１２９）。
図２２（Ｂ）に示すＸＭＬ文書において、１，３および４行目の記述は圧縮前と変わらないが、２，５〜８行目におけるタグ内の要素名「book」,「title」,「author」がそれぞれ１バイトの置換文字「ａ」，「ｂ」，「ｃ」に置換される。
【０１９９】
図２３（Ａ）〜図２３（Ｄ）はいずれも第２実施形態によるＸＭＬ文書の具体的な圧縮処理（第４例）を説明するための図である。
図２３（Ａ）に示す圧縮前のＸＭＬ文書は、パターン(4)のＸＭＬ文書であり、図１２（Ａ）に示したものとほぼ同じである。ただし、図２３（Ａ）に示すＸＭＬ文書では、要素「author」の属性「year」についての記述が省略されている。つまり、ＤＴＤにおいて、属性「year」についての属性リスト宣言が省略されるとともに、要素「author」の開始タグ内における属性記述が省略されている。
【０２００】
図２３（Ａ）に示すＸＭＬ文書（パターン(4)）には、“＜!ＤＯＣＴＹＰＥ”および“[”が記述されるとともに“＜!ＥＬＥＭＥＮＴ”または“＜!ＡＴＴＬＩＳＴ”も記述されているので、処理はステップＳ１１４のＹＥＳルートからステップＳ１１７へ移行し、文書実現値解析部２０によって文書実現値のタグ内の記述が解析されるとともに、ＤＴＤ解析部３０によってＤＴＤの記述が解析される（ステップＳ１１８）。
【０２０１】
このとき、タグ辞書作成部８０により、図２３（Ｃ）に示すような、要素名のためのタグ辞書９０と、図２３（Ｄ）に示すような、属性名のためのタグ辞書９０とが登録・作成される。
ここで、図２３（Ｃ）に示すタグ辞書９０は、図２０（Ｃ）に示すものと同じで、文書実現値解析部２０やＤＴＤ解析部３０によって検出・認識された要素名「book」,「title」,「author」に、１バイトの短縮文字列、例えば「ａ」，「ｂ」，「ｃ」をそれぞれ対応させるものとなっている。また、図２３（Ｄ）に示すタグ辞書９０は、文書実現値解析部２０やＤＴＤ解析部３０によって検出・認識された属性名「field」に、１バイトの短縮文字列、例えば「Ａ」を対応させるものとなっている。
【０２０２】
そして、図２３（Ｃ）および図２３（Ｄ）に示すタグ辞書９０を用い、文書実現値文字列置換部４１により、文書実現値のタグ内に記述された要素名「book」,「title」,「author」や属性名「field」がそれぞれ１バイトの短縮文字列「ａ」，「ｂ」，「ｃ」，「Ａ」に置き換えられるとともに（ステップＳ１１９）、文書実現値文字列変換部４１による文書実現値の文字列置換に合わせ、ＤＴＤ文字列置換部５１により、ＤＴＤに記述された要素名「book」,「title」,「author」や属性名「field」がそれぞれ１バイトの短縮文字列「ａ」，「ｂ」，「ｃ」，「Ａ」に置き換えられる（ステップＳ１２０）。
【０２０３】
これにより、例えば図２３（Ａ）に示すＸＭＬ文書は、図２３（Ｂ）に示すようなＸＭＬ文書に置換・圧縮されてから、圧縮文書として文書記憶部１０等へ出力・格納される（ステップＳ１２９）。
図２３（Ｂ）に示すＸＭＬ文書において、１および７行目の記述は圧縮前と変わらないが、２〜６および８〜１１行目における要素名「book」,「title」,「author」や属性名「field」がそれぞれ１バイトの置換文字「ａ」，「ｂ」，「ｃ」，「Ａ」に置換される。
【０２０４】
図２４（Ａ）〜図２４（Ｇ）はいずれも第２実施形態によるＸＭＬ文書の具体的な圧縮処理（第５例）を説明するための図である。
図２４（Ａ）に示す圧縮前のＸＭＬ文書は、パターン(5)のＸＭＬ文書であり、図１３（Ａ）に示したものとほぼ同じである。ただし、図２４（Ａ）に示すＸＭＬ文書では、要素「author」の属性「year」についての記述が省略されている。つまり、ＤＴＤにおいて、属性「year」についての属性リスト宣言が省略されるとともに、要素「author」の開始タグ内における属性記述が省略されている。
【０２０５】
２行目のＤＴＤの文書型宣言では、システム識別子“ＳＹＳＴＥＭ”により、外部ファイル１００に保持されたＤＴＤ（ファイル名「..\book.dtd」）を用いることが宣言・定義されている。
そして、ファイル名「..\book.dtd」のＤＴＤは、図２４（Ａ）における文書実現値の構成に対応して、図２４（Ｂ）に示すように記述されている。この図２４（Ｂ）に示すＤＴＤ（１〜４行目）は、図４（Ａ）に示したＤＴＤにおける２〜５行目の記述例と同一であるので、その説明は省略する。
【０２０６】
図２４（Ａ）に示すＸＭＬ文書（パターン(5)）には、“＜!ＤＯＣＴＹＰＥ”は記述されているが、その後には“[”が記述されることなく、外部ファイル１００におけるＤＴＤを指定するシステム識別子が記述されているので、処理はステップＳ１１３のＮＯルートからステップＳ１２１へ移行し、文書実現値解析部２０によって文書実現値のタグ内の記述が解析されるとともに、ＤＴＤ解析部３０によって、システム識別子に従って外部ファイル１００から読み込まれたＤＴＤ（ファイル名「..\book.dtd」）の記述が解析される（ステップＳ１２２）。
【０２０７】
このとき、タグ辞書作成部８０により、図２４（Ｅ）に示すような、要素名のためのタグ辞書９０と、図２４（Ｆ）に示すような、属性名のためのタグ辞書９０とが登録・作成される。ここで、図２４（Ｅ）に示すタグ辞書９０は、図２０（Ｃ）に示すものと同じであり、図２４（Ｆ）に示すタグ辞書９０は、図２３（Ｄ）に示すものと同じである。
【０２０８】
この後、図２４（Ｂ）に示すＤＴＤを変更・圧縮して得られる新規のＤＴＤのために、元のファイル名とは異なる新規のファイル名（例えば「..\book2.dtd」）を設定して文書実現値に記入することにより（ステップＳ１２３）、文書実現値における文書型宣言のシステム識別子“ＳＹＳＴＥＭ”により指定されるファイル名を、旧ファイル名「..\book.dtd」から、新規ファイル名「..\book2.dtd」に書き換える。
【０２０９】
そして、図２４（Ｅ）および図２４（Ｆ）に示すタグ辞書９０を用い、文書実現値文字列置換部４１により、文書実現値のタグ内に記述された要素名「book」,「title」,「author」や属性名「field」がそれぞれ１バイトの短縮文字列「ａ」，「ｂ」，「ｃ」，「Ａ」に置き換えられる（ステップＳ１２４）。
【０２１０】
これにより、図２４（Ａ）に示すＸＭＬ文書は、図２４（Ｃ）に示すようなＸＭＬ文書に置換・圧縮される。図１３（Ｃ）に示すＸＭＬ文書において、１行目の記述は圧縮前と変わらないが、２行目のシステム識別子“ＳＹＳＴＥＭ”により指定されるファイル名が新規ファイル名「..\book2.dtd」となるとともに、２〜６行目における要素名「book」,「title」,「author」や属性名「field」がそれぞれ１バイトの置換文字「ａ」，「ｂ」，「ｃ」，「Ａ」に置換される。
【０２１１】
ついで、新規ＤＴＤファイル作成部６０により、新規のＤＴＤファイルを作成し、そのＤＴＤファイルに、外部ファイル１００から読み込んだ圧縮前のＤＴＤファイルの内容を複写してから（ステップＳ１２５）、文書実現値文字列変換部４１による文書実現値の文字列置換に合わせ、ＤＴＤ文字列置換部５１により、ＤＴＤに記述された要素名「book」,「title」,「author」や属性名「field」がそれぞれ１バイトの短縮文字列「ａ」，「ｂ」，「ｃ」，「Ａ」に置き換えられる（ステップＳ１２６）。
【０２１２】
これにより、図２４（Ｂ）に示すＤＴＤは、図２４（Ｄ）に示すようなＤＴＤに変更・圧縮される。図２４（Ｄ）に示すＤＴＤでは、１〜４行目における要素名「book」,「title」,「author」や属性名「field」がそれぞれ１バイトの文字列「ａ」，「ｂ」，「ｃ」，「Ａ」に置換される。
そして、ＤＴＤ文字列置換部５１で置換・圧縮されたＤＴＤのファイル（新規ＤＴＤファイル）は、新規のファイル名「..\book2.dtd」を付与されて、新規ＤＴＤファイル作成部６０から外部ファイル１００へ出力・格納される（ステップＳ１２７）。
【０２１３】
また、新旧ＤＴＤ対応表出力部７０によって、旧ＤＴＤと新規ＤＴＤとの対応関係（具体的には旧ファイル名と新規ファイル名との対応関係）を明記した新旧ＤＴＤ対応表が、図２４（Ｇ）に示すように作成されて、文書記憶部１０等へ出力・格納されるとともに（ステップＳ１２８）、ステップＳ１２４において置換・圧縮されたＸＭＬ文書は、圧縮文書として文書記憶部１０等へ出力・格納される（ステップＳ１２９）。その際、タグ辞書９０や新旧ＤＴＤ対応表は、独立したファイルではなく、圧縮文書に注釈の形で付加してもよい。
【０２１４】
さて、次に、図１７および図１８を参照しながら、第２実施形態の圧縮装置を構成する文書実現値文字列置換部４１およびＤＴＤ文字列置換部５１の動作について説明する。
まず、図１７に示すフローチャート（ステップＳ１５１〜Ｓ１５８）に従って、第２実施形態の文書実現値文字列置換部４１による置換手順について説明すると、文書実現値文字列置換部４１は、まず、タグ辞書作成部８０で得られたタグ辞書９０を入力してから（ステップＳ１５１）、第１実施形態の文書実現値解析部２０と同様にして（図６のステップＳ３１〜Ｓ３４参照）、文書実現値における開始タグおよび終了タグを判別し（ステップＳ１５２〜Ｓ１５５）、それらのタグ中の要素名，属性名を、タグ辞書９０を用いて置換する（ステップＳ１５６〜Ｓ１５８）。
【０２１５】
つまり、圧縮対象の文書実現値を最後まで走査したか否かを判断しながら（ステップＳ１５２）、文書実現値を走査し（ステップＳ１５３）、文書実現値の記述を先頭から順次認識し、“＜”が記述されているか否かを調べていく（ステップＳ１５４）。なお、“＜”は、ＸＭＬの仕様上、文書実現値の内容には記述されない。
【０２１６】
文書実現値の記述として“＜”が検出された場合（ステップＳ１５４のＹＥＳルート）、“＜”に続く１バイトの記述に基づいて、この“＜”で始まるタグが開始タグか終了タグかを判定する（ステップＳ１５５）。その判定は、“＜”に続く記述が“/”であるか否かによって行なわれる。即ち、“＜”に続く記述が“/”である場合、そのタグは終了タグであると判定され、“＜”に続く記述が“/”ではない場合、そのタグは開始タグであると判定される。
【０２１７】
開始タグの場合（ステップＳ１５５のＹＥＳルート）、タグ辞書９０を参照して、その開始タグ内に記述されている要素名を、対応する短縮文字列に置き換える（ステップＳ１５６）。また、その開始タグ内に属性名が記述されている場合には、その属性名についても、タグ辞書９０を参照して、対応する短縮文字列に置き換える（ステップＳ１５７）。なお、開始タグ内には、属性名が記述されていない場合には、ステップＳ１５７の処理は省略される。このような置換処理をを終了した後は、ステップＳ１５２へ戻る。
【０２１８】
一方、終了タグの場合（ステップＳ１５５のＮＯルート）、タグ辞書９０を参照して、その終了タグ内に記述されている要素名を、対応する短縮文字列に置き換えてから（ステップＳ１５８）、ステップＳ１５２へ戻る。
そして、ステップＳ１５２において、圧縮対象の文書実現値を最後まで走査したと判定された場合（ＹＥＳルート）、処理を終了する。
【０２１９】
図１８に示すフローチャート（ステップＳ１６１〜Ｓ１７０）に従って、第２実施形態のＤＴＤ文字列置換部５１による置換手順について説明すると、ＤＴＤ文字列置換部５１は、まず、タグ辞書作成部８０で得られたタグ辞書９０を入力してから（ステップＳ１６１）、圧縮対象のＤＴＤを最後まで走査したか否かを判断しながら（ステップＳ１６２）、ＤＴＤを走査し（ステップＳ１６３）、要素型宣言、即ち“＜!ＥＬＥＭＥＮＴ”が記述されているか否かを調べていく（ステップＳ１６４）。
【０２２０】
ステップＳ１６４で“＜!ＥＬＥＭＥＮＴ”が検出された場合（ＹＥＳルート）、タグ辞書９０を参照して、その要素型宣言内の要素名を、対応する短縮文字列に置き換えてから（ステップＳ１６５）、その要素型宣言内に記述された内容モデルを検出し（ステップＳ１６６）、その内容モデルに子の要素名が記述されている場合には、タグ辞書９０を参照してその要素名についても、対応する短縮文字列に置き換える（ステップＳ１６７）。なお、内容モデルの記述が無い場合や、内容モデルに子の要素名が記述されていない場合には、ステップＳ１６７の処理は省略される。
【０２２１】
この後、属性リスト宣言、つまり“＜!ＡＴＴＬＩＳＴ”が記述されているか否かを調べる（ステップＳ１６８）。ステップＳ１６８で“＜!ＡＴＴＬＩＳＴ”が検出された場合（ＹＥＳルート）、タグ辞書９０を参照して、その属性リスト宣言内の要素名を、対応する短縮文字列に置き換えるとともに（ステップＳ１６９）、その属性リスト宣言内の属性名を、対応する短縮文字列に置き換えてから（ステップＳ１７０）、ステップＳ１６２へ戻る。
【０２２２】
なお、ステップＳ１６４で要素型宣言が記述されていないと判断された場合（ＮＯルート）や、ステップＳ１６８で属性リスト宣言が記述されていないと判断された場合（ＮＯルート）には、ステップＳ１６２へ戻る。
そして、ステップＳ１５２において、圧縮対象の文書実現値を最後まで走査したと判定された場合（ＹＥＳルート）、処理を終了する。
【０２２３】
ところで、前述したように、第２実施形態では、短縮文字列に置換されたＸＭＬ文書の記述を元の状態に伸長・復元させるための伸長装置（図示省略）がそなえられている。この伸長装置を構成する前記文字実現値文字列逆置換手段および前記ＤＴＤ文字列逆置換手段は、それぞれ、文字実現値文字列置換部４１やＤＴＤ文字列置換部５１と同様、図１７および図１８に示すフローチャートに従って逆置換処理を行なうものである。ただし、その逆置換処理では、図１７のステップＳ１５６〜Ｓ１５８および図１８のステップＳ１６５，Ｓ１６７，Ｓ１６９およびＳ１７０における文字列変換方向が逆方向になる。
【０２２４】
次に、図１９に示すフローチャート（ステップＳ１３１〜Ｓ１４２）に従って、第２実施形態における構造化文書の伸長手順、つまり上述した伸長装置による逆置換手順について説明する。
なお、第２実施形態の伸長装置にも、伸長すべき圧縮文書がパターン(1)〜(5)のいずれのものであるからを認識するためのパターン認識機能がそなえられている。このパターン認識機能による処理は、図１９に示すステップＳ１３３〜Ｓ１３５による処理に対応している。
【０２２５】
まず、伸長対象の圧縮文書が入力されるとともに（ステップＳ１３１）、圧縮処理時に作成されたタグ辞書９０が入力されると（ステップＳ１３２）、その圧縮文書に“＜!ＤＯＣＴＹＰＥ”が記述されているか否かを判定し（ステップＳ１３３）、記述されていない場合（ステップＳ１３３のＮＯルート）、その圧縮文書はＤＴＤをもたない整形式ＸＭＬ文書、つまりパターン(1)のＸＭＬ文書であると認識され、後述するごとくステップＳ１３６およびＳ１４２が実行される。
【０２２６】
圧縮文書に“＜!ＤＯＣＴＹＰＥ”が記述されている場合（ステップＳ１３３のＹＥＳルート）、その後に“［”が記述されているか否かを判定する（ステップＳ１３４）。
“＜!ＤＯＣＴＹＰＥ”は記述されているが“[”が記述されていない場合（ステップＳ１３４のＮＯルート）、その圧縮文書は、ＤＴＤを外部ファイル１００として有する検証済みＸＭＬ文書、つまりパターン(5)のＸＭＬ文書であると認識され、後述するごとくステップＳ１３９〜Ｓ１４２が実行される。
【０２２７】
“[”が記述されている場合（ステップＳ１３４のＹＥＳルート）、“＜!ＥＬＥＭＥＮＴ”（もしくは“＜!ＡＴＴＬＩＳＴ”）が記述されているか否かを判定する（ステップＳ１３５）。
“＜!ＤＯＣＴＹＰＥ”および“[”は記述されているが“＜!ＥＬＥＭＥＮＴ”が記述されていない場合（ステップＳ１３５のＮＯルート）、その圧縮文書は、内部または外部への実体宣言を含むＤＴＤを有する整形式ＸＭＬ文書、つまりパターン(2)または(3)のＸＭＬ文書であると認識され、パターン(1)の場合と同様、ステップＳ１３６およびＳ１４２が実行される。
【０２２８】
“＜!ＤＯＣＴＹＰＥ”，“[”および“＜!ＥＬＥＭＥＮＴ”がいずれも記述されている場合（ステップＳ１３５のＹＥＳルート）、その圧縮文書は、ＸＭＬ文書内にＤＴＤを有する検証済みＸＭＬ文書、つまりパターン(4)のＸＭＬ文書であると認識され、ステップＳ１３７，Ｓ１３８およびＳ１４２が実行される。
以下、各パターン(1)〜(5)に対する伸長処理について、図２０〜図２４に示す具体例（第１例〜第５例）を参照しながら説明する。
【０２２９】
伸長対象の圧縮文書が図２０（Ｂ）に示すようなパターン(1)の圧縮ＸＭＬ文書である場合、その文書には“＜!ＤＯＣＴＹＰＥ”が記述されていないので、処理はステップＳ１３３のＮＯルートからステップＳ１３６へ移行し、図２０（Ｃ）に示すタグ辞書９０を用いて、前記文書実現値文字列逆置換手段により、文書実現値のタグ内に記述された１バイトの短縮文字列「ａ」，「ｂ」，「ｃ」が、それぞれ元の要素名「book」,「title」,「author」に逆置換される。これにより、例えば図２０（Ｂ）に示す圧縮ＸＭＬ文書は、図２０（Ａ）に示すようなＸＭＬ文書に逆置換・伸長され、伸長文書として文書記憶部１０等へ出力・格納される（ステップＳ１４２）。
【０２３０】
伸長対象の圧縮文書が図２１（Ｂ）に示すようなパターン(2)の圧縮ＸＭＬ文書である場合、その文書には、“＜!ＤＯＣＴＹＰＥ”および“[”がいずれも記述されているが、“＜!ＥＬＥＭＥＮＴ”や“＜!ＡＴＴＬＩＳＴ”が記述されていないので、処理はステップＳ１３５のＮＯルートからステップＳ１３６へ移行し、図２１（Ｃ）に示すタグ辞書９０を用いて、前記文書実現値文字列逆置換手段により、文書実現値のタグ内に記述された１バイトの短縮文字列「ａ」，「ｂ」，「ｃ」が、それぞれ元の要素名「book」,「title」,「author」に逆置換される。これにより、例えば図２１（Ｂ）に示す圧縮ＸＭＬ文書は、図２１（Ａ）に示すようなＸＭＬ文書に逆置換・伸長され、伸長文書として文書記憶部１０等へ出力・格納される（ステップＳ１４２）。
【０２３１】
伸長対象の圧縮文書が図２２（Ｂ）に示すようなパターン(3)の圧縮ＸＭＬ文書である場合、その文書には、パターン(2)と同様、“＜!ＤＯＣＴＹＰＥ”および“[”がいずれも記述されているが、“＜!ＥＬＥＭＥＮＴ”や“＜!ＡＴＴＬＩＳＴ”が記述されていないので、処理はステップＳ１３５のＮＯルートからステップＳ１３６へ移行し、前述したパターン(1)や(2)の圧縮ＸＭＬ文書と同様の処理が実行される。
【０２３２】
つまり、図２２（Ｃ）に示すタグ辞書９０を用いて、前記文書実現値文字列逆置換手段により、文書実現値のタグ内に記述された１バイトの短縮文字列「ａ」，「ｂ」，「ｃ」が、それぞれ元の要素名「book」,「title」,「author」に逆置換される。これにより、例えば図２２（Ｂ）に示す圧縮ＸＭＬ文書は、図２２（Ａ）に示すようなＸＭＬ文書に逆置換・伸長され、伸長文書として文書記憶部１０等へ出力・格納される（ステップＳ１４２）。
【０２３３】
伸長対象の圧縮文書が図２３（Ｂ）に示すようなパターン(4)の圧縮ＸＭＬ文書である場合、その文書には、 “＜!ＤＯＣＴＹＰＥ”および“[”が記述されるとともに“＜!ＥＬＥＭＥＮＴ”または“＜!ＡＴＴＬＩＳＴ”も記述されているので、処理はステップＳ１３５のＹＥＳルートからステップＳ１３７へ移行し、図２３（Ｃ）および図２３（Ｄ）に示すタグ辞書９０を用いて、前記文書実現値文字列逆置換手段により、文書実現値のタグ内に記述された１バイトの短縮文字列「ａ」，「ｂ」，「ｃ」や「Ａ」が、それぞれ元の要素名「book」,「title」,「author」や属性名「field」に逆置換される。
【０２３４】
さらに、図２３（Ｃ）および図２３（Ｄ）に示すタグ辞書９０を用いて、前記ＤＴＤ文字列逆置換手段により、ＤＴＤに記述された１バイトの短縮文字列「ａ」，「ｂ」，「ｃ」や「Ａ」が、それぞれ元の要素名「book」,「title」,「author」や属性名「field」に逆置換される（ステップＳ１３８）。
これにより、例えば図２３（Ｂ）に示す圧縮ＸＭＬ文書は、図２３（Ａ）に示すようなＸＭＬ文書に逆置換・伸長され、伸長文書として文書記憶部１０等へ出力・格納される（ステップＳ１４２）。
【０２３５】
伸長対象の圧縮文書が図２４（Ｃ）に示すようなパターン(5)の圧縮ＸＭＬ文書である場合、その文書には、“＜!ＤＯＣＴＹＰＥ”は記述されているが、その後には“[”が記述されることなく、外部ファイル１００におけるＤＴＤを指定するシステム識別子が記述されているので、処理はステップＳ１３４のＮＯルートからステップＳ１３９へ移行し、図２４（Ｇ）に示す新旧ＤＴＤ表を入力してから、その新旧ＤＴＤ表に従って、文書実現値における文書型宣言のシステム識別子“ＳＹＳＴＥＭ”により指定されるファイル名を、「..\book2.dtd」から元のファイル名「..\book.dtd」に書き換える（ステップＳ１４０）。
【０２３６】
そして、図２４（Ｅ）および図２４（Ｆ）に示すタグ辞書９０を用いて、前記文書実現値文字列逆置換手段により、文書実現値のタグ内に記述された１バイトの短縮文字列「ａ」，「ｂ」，「ｃ」や「Ａ」が、それぞれ元の要素名「book」,「title」,「author」や属性名「field」に逆置換される（ステップＳ１４１）。
これにより、例えば図２４（Ｃ）に示す圧縮ＸＭＬ文書は、図２４（Ａ）に示すようなＸＭＬ文書に逆置換・伸長され、伸長文書として文書記憶部１０等へ出力・格納される（ステップＳ１４２）。
【０２３７】
このとき、ファイル名「..\book.dtd」のＤＴＤ、つまり図２４（Ｂ）に示すＤＴＤは外部ファイル１００に保存されているので、図２４（Ｄ）に示す圧縮ＤＴＤを前記ＤＴＤ文字列逆置換手段により逆置換・伸長して、図２４（Ｂ）に示すＤＴＤを得る必要はない。
【０２３８】
このように、本発明の第２実施形態によれば、文書実現値のタグ内やＤＴＤの記述を解析し、その解析結果に従ってタグ辞書９０を作成し、そのタグ辞書９０を用いて、文書実現値のタグ内やＤＴＤに記述された文字列を短縮文字列（１または２バイトの置換文字）に置き換えることにより、ＸＭＬ文書の特徴や構造を損なうことなくタグ内やＤＴＤの文字列が圧縮されるので、ＸＭＬ文書の圧縮率を大幅に高めることができ、ひいては、大規模なデータベースを取り扱うシステムにおいて文書データの格納効率を大幅に高めることができる。
【０２３９】
このとき、タグ内やＤＴＤに記述された要素名および属性名を短縮文字列に置き換えることにより、検索可能な状態に保持したままタグ部分やＤＴＤを圧縮することができる。つまり、要素名および属性名について置換を行なうとともにタグ辞書９０を保持し、属性値は元の形のまま保持することで、文書データを伸長することなく圧縮した状態のままで検索や文書構造の把握を行なえるようになっている。
【０２４０】
従って、圧縮後にＸＭＬ文書の構造を解析して検索を行なう際に、圧縮されたＸＭＬ文書の伸長を行なう必要がなく、大規模なデータベースにおいて文書データを圧縮格納しても、その文書データの検索処理等を短時間で行なうことができる。
【０２４１】
属性名と属性値とはそれぞれ検索の対象となり得るため、属性名と属性値との両方を一体的に圧縮している場合、伸長・復元を行なわない限り検索を行なうことができなくなる。そこで、第２実施形態では、属性名のみを短縮文字列に置換して圧縮を行ない、属性値は元の形のままとしておくことにより、ブラウザなどの応用ソフトウェアにおいては、圧縮文書の伸長処理を行なうことなく、タグ辞書９０を参照しながら圧縮文書内のデータの検索を行なうことができる。
【０２４２】
〔３〕第３実施形態の説明
次に、本発明の第３実施形態について説明する。
本発明の第３実施形態では、第２実施形態と同様、図３０（Ａ）に示すごとく、圧縮前のＸＭＬ文書において、“＜”と“＞”とで囲まれた領域（ＤＴＤの宣言文や、文書実現値における開始タグおよび終了タグ）に記述された文字列を、図３０（Ｃ）に示すようなタグ辞書を使用して、短縮文字列（置換文字）に変換して圧縮する。このような圧縮を行なった場合、圧縮後のＸＭＬ文書には、“＜”および“＞”を用いた記述形式は保存されたままであり、圧縮後も、ＸＭＬ文書としての特徴や構造は損なわれることはない。
【０２４３】
また、第３実施形態では、平文の記述に用いられる言語の種類を識別した上で、該当する言語の辞書（単語辞書）、例えば図３０（Ｄ）に示すような日本語辞書を選択し、平文を成す単語を、最長一致法（longest match）で固定バイト長の短縮文字列（単語番号）に変換する。ここで、平文とは、開始タグと終了タグとの間に記述された内容のことをいう。
【０２４４】
このようにして、例えば図３０（Ａ）に示すような圧縮前のＸＭＬ文書を、図３０（Ｂ）に示すようなＸＭＬ文書に変換・圧縮することができる。
なお、第３，４実施形態では、言語の種別は、例えば日本語，英語，中国語の３種類の中から識別される。
【０２４５】
また、ＤＴＤをもたない整形式ＸＭＬ文書（パターン(1)）の場合は、文書実現値におけるタグ内の記述を調べてから、タグ辞書を用いて、タグ内における要素名等の文字列と短縮文字列（置換文字）との対応付けを行なった上で、ＸＭＬ仕様では言語識別用の属性（xml：lang）を見て平文（内容）の言語を識別してその言語に応じた辞書（単語辞書）を選択し、上述と同様の圧縮を行なう。第３実施形態の圧縮手法を、ＤＴＤをもたない整形式ＸＭＬ文書に適用した場合の具体例については、図３２（Ａ）〜図３２（Ｄ）を参照しながら後述する。
【０２４６】
以下、図２５〜図３３を参照しながら、本発明の第３実施形態について説明する。
まず、図３０〜図３３により圧縮前のＸＭＬ文書が圧縮後にどのようになるのかについて説明する。
【０２４７】
図３０（Ａ）〜図３０（Ｄ）はいずれも第３実施形態によるＸＭＬ文書（パターン(4)：ＤＴＤを内部に記述した検証済みＸＭＬ文書）の具体的な圧縮処理を説明するための図で、図３０（Ａ）はＤＴＤを内蔵記述したＸＭＬ文書の圧縮前記述例を示し、図３０（Ｂ）はその圧縮後記述例を示し、図３０（Ｃ）はその圧縮処理に使用したタグ辞書の登録内容例を示し、図３０（Ｄ）はその圧縮処理に使用した日本語辞書の登録内容例を示している。
【０２４８】
図３１（Ａ）〜図３１（Ｇ）はいずれも第３実施形態によるＸＭＬ文書（パターン(5)：別ファイルのＤＴＤを指定して利用するＸＭＬ文書）の具体的な圧縮処理を説明するための図で、図３１（Ａ）は別ファイルに格納されたＤＴＤを参照・利用するＸＭＬ文書の圧縮前記述例を示し、図３１（Ｂ）はその別ファイルに格納されたＤＴＤの圧縮前記述例を示し、図３１（Ｃ）はそのＸＭＬ文書の圧縮後記述例を示し、図３１（Ｄ）はそのＤＴＤの圧縮後記述例（新規ファイルのＤＴＤ）を示し、図３１（Ｅ）はその圧縮処理に使用したタグ辞書の登録内容例を示し、図３１（Ｆ）はその圧縮処理に使用した日本語辞書の登録内容例を示し、図３１（Ｇ）は新旧ＤＴＤの対応関係を保持する対応表の登録内容例を示している。
【０２４９】
図３２（Ａ）〜図３２（Ｄ）はいずれも第３実施形態によるＸＭＬ文書（パターン(1)：ＤＴＤをもたない整形式ＸＭＬ文書）の具体的な圧縮処理を説明するための図で、図３２（Ａ）はＤＴＤをもたない整形式ＸＭＬ文書の圧縮前記述例を示し、図３２（Ｂ）はその圧縮後記述例を示し、図３２（Ｃ）はその圧縮処理に使用したタグ辞書の登録内容例を示し、図３２（Ｄ）はその圧縮処理に使用した日本語辞書の登録内容例を示している。
【０２５０】
図３３は第３実施形態でのＸＭＬ文書の圧縮手法を説明するための図で、この図３３は、ＸＭＬ文書において“＜”と“＞”とで囲まれた領域に記述された文字列中に、空白（スペース）が存在する場合の、置換文字への変換手法を説明するためのものである。
【０２５１】
まず、図３０（Ａ）〜図３０（Ｄ）により、ＤＴＤを内蔵記述するＸＭＬ文書に対する圧縮処理について説明する。
図３０（Ａ）に示すごとく、圧縮前のＸＭＬ文書には、１行目に示すＸＭＬ宣言、２〜７行目に示すＤＴＤ、８〜１２行目に示す平文の内容等が種々の記号とともに記入されている。
【０２５２】
図３０（Ａ）において、１行目には、この文書がバージョン１．０のＸＭＬ文書であることを示すＸＭＬ宣言が記述され、２行目には、この文書の文書型名（ＤＯＣＴＹＰＥの名前）が「book」であることが記述され、その直後の“［”と７行目の“］”との間の記述が、この文書の構成を定義するものである。
【０２５３】
また、３行目の最上位要素名の名前「book」と文書型名「book」とは一致することが必要である。そして、３行目には、要素「book」が子要素「chapter」を有して構成されることが内容モデルとして記述され、４〜６行目には、要素「chapter」が、さらに、２つの子要素「title」および「paragraph」で構成されることが記述され、７行目の“］＞”により、２行目から始まった文書型宣言（ＤＯＣＴＹＰＥ宣言，ＤＴＤ記述）の内部サブセット記述が終了することが示されている。
【０２５４】
続く８行目の“＜book＞”は要素「book」の開始タグであり、１２行目の“＜/book＞”は要素「book」の終了タグである。そして、これらのタグ間（９〜１２行目）の記述が、要素「book」の内容であり、９行目の記述は、要素「chapter」の子要素「title」の内容が「ＸＭＬの概要」であることを示し、１０行目の記述は、要素「chapter」の子要素「paragraph」の内容が「ＸＭＬとは…」であることを示す。また、９行目において、“＜title＞”は要素「title」の始まりを示す開始タグであり、“＜/title＞”は要素「title」の終了を示す終了タグである。１１行目の“＜/chapter＞”は要素「chapter」の終了を示す終了タグである。
【０２５５】
図３０（Ａ）に示す圧縮前のＸＭＬ文書における文字列を、図３０（Ｃ）に示すタグ辞書と、図３０（Ｄ）に示す日本語辞書とを使用して、置換文字や単語番号に変換することにより、そのＸＭＬ文書を、図３０（Ｂ）に示すように圧縮する。
ここで、図３０（Ｃ）に示すタグ辞書は、図２９を参照しながら後述する手法により作成され、また、図３０（Ｄ）に示す日本語辞書は、予め作成された静的な辞書である。
【０２５６】
図３０（Ａ）の例では、上述したタグ辞書により、“chapter”，“title”，“paragraph”が、それぞれ固定長の置換文字“ｂ”，“ｃ”，“ｄ”に置換・圧縮され、また、上述した日本語辞書により、平文の部分の「ＸＭＬ」，「の」，「概要」，“とは”が、それぞれ固定長の単語番号“α”，“β”，“γ”，“δ”等に置換・圧縮され、図３０（Ｂ）に示すような圧縮後のＸＭＬ文書が得られる。
【０２５７】
次に、図３１（Ａ）〜図３１（Ｇ）により、ＸＭＬ文書とは別のファイルに格納されたＤＴＤを参照する場合の圧縮手法について説明する。
図３１（Ａ）に示す圧縮前のＸＭＬ文書では、２行目の下線を付した部分、つまりシステム識別子「ＳＹＳＴＥＭ“../book.dtd”」により、ファイル名「book.dtd」をもつ別ファイルのＤＴＤが指定されている。この別ファイルのＤＴＤは、図３１（Ｂ）に示すように記述されている。
【０２５８】
図３１（Ａ）に示す圧縮前のＸＭＬ文書における文字列を、図３１（Ｅ）に示すタグ辞書と、図３１（Ｆ）に示す日本語辞書とを使用して、置換文字や単語番号に変換することにより、そのＸＭＬ文書を、図３１（Ｃ）に示すように圧縮する。
【０２５９】
また、図３１（Ｂ）に示すＤＴＤにおける文字列を、図３１（Ｅ）に示すタグ辞書を使用して置換文字に変換することにより、そのＤＴＤを、図３１（Ｄ）に示すような新規ファイルのＤＴＤとして圧縮・作成する。この新規ファイルのファイル名としては、例えば“book2.dtd”が付与される。
【０２６０】
なお、図３１（Ｃ）に示すように、圧縮後のＸＭＬ文書の２行目には、新規ファイルのＤＴＤを指定すべく、そのファイル名“book2.dtd”が、旧ファイルのファイル名“book.dtd”に代えて記入される。そして、これら新規のＤＴＤのファイル名と圧縮前の旧ＤＴＤのファイル名とが、図３１（Ｇ）に示すごとく、新旧ＤＴＤ対応表に記入される。
ここで、図３１（Ｅ）に示すタグ辞書も、図３０（Ｃ）に示すタグ辞書と同様
、図２９を参照しながら後述する手法により作成され、また、図３１（Ｆ）に示
す日本語辞書は、予め作成された静的な辞書である。
【０２６１】
図３１（Ａ）の例でも、上述したタグ辞書により、“chapter”，“title”，“paragraph”が、それぞれ固定長の置換文字“ｂ”，“ｃ”，“ｄ”に置換・圧縮され、また、上述した日本語辞書により、平文の部分の「ＸＭＬ」，「の」，「概要」，“とは”が、それぞれ固定長の単語番号“α”，“β”，“γ”，“δ”等に置換・圧縮され、図３１（Ｃ）に示すような圧縮後のＸＭＬ文書が得られる。
【０２６２】
また、図３１（Ｃ）に示すＤＴＤは、上述したタグ辞書により、“chapter”，“title”，“paragraph”が、それぞれ固定長の置換文字“ｂ”，“ｃ”，“ｄ”に置換・圧縮され、ファイル名“book2.dtd”の新規ファイルに、新たなＤＴＤとして格納される。
【０２６３】
次に、図３２（Ａ）〜図３２（Ｄ）により、ＤＴＤをもたない整形式ＸＭＬ文書に対する圧縮処理について説明する。
図３２（Ａ）に示す圧縮前のＸＭＬ文書では、１行目のＸＭＬ宣言に続いてＤＯＣＴＹＰＥ宣言で開始されるＤＴＤ文書型定義が記述されていない。
このような場合も、図３２（Ａ）に示す圧縮前のＸＭＬ文書における文字列は、図３２（Ｃ）に示すタグ辞書と図３２（Ｄ）に示す日本語辞書とを使用して、置換文字や単語番号に変換され、そのＸＭＬ文書は、図３２（Ｂ）に示すように圧縮される。
【０２６４】
ここで、図３２（Ｃ）に示すタグ辞書も、図３０（Ｃ）や図３１（Ｅ）に示すタグ辞書と同様、図２９を参照しながら後述する手法により作成され、また、図３２（Ｄ）に示す日本語辞書は、予め作成された静的な辞書である。
図３２（Ａ）の例でも、上述したタグ辞書により、“chapter”，“title”，“paragraph”が、それぞれ固定長の置換文字“ｂ”，“ｃ”，“ｄ”に置換・圧縮され、また、上述した日本語辞書により、平文の部分の「ＸＭＬ」，「の」，「概要」，“とは”が、それぞれ固定長の単語番号“α”，“β”，“γ”，“δ”等に置換・圧縮され、図３２（Ｃ）に示すような圧縮後のＸＭＬ文書が得られる。
【０２６５】
また、本実施形態では、図３３に示すように、ＸＭＬ文書において“＜”と“＞”とで囲まれた領域の文字列中に、空白（スペース）が存在する場合、その文字列を空白部分で区切る。このようにして区切って得られた文字列部分のそれぞれに、置換文字（短縮文字列）に対応させる。
【０２６６】
即ち、図３３に示す例では、まず、“＜”と“＞”とで囲まれた「table orient="PORT" tocentry="1"」という開始タグが存在するが、これ全体を１つのタグとして登録せずに、この文字列内に存在する空白部分で区切ることにより、この文字列を、「table」，「orient="PORT"」，「tocentry="1"」という３つの部分に区分けする。
【０２６７】
そして、区分けされた各部分に対して、図３３に示すごとく置換文字（短縮文字列）“ｅ”，“ｆ”，“ｇ”を付加する。このようにして登録内容を短くすることにより、タグ辞書のサイズを小型化することができ、検索対象も小さくすることができ、ひいては、検索手段のハード量も小さくすることができる。
【０２６８】
なお、図３３に示す例では、置換文字“ｅ”，“ｆ”，“ｇ”に置き換えられた部分と、置換文字“ｈ”および“ｊ”に置き換えられた部分とがタグである。そして、置換文字“ｈ”に置き換えられたタグがタイトルの始まりを示し、置換文字“ｊ”に置き換えられたタグがタイトルの終わりを示している。また、置換文字“ｉ”に置き換えられた部分が、タイトルの内容を示す平文「機能一覧」である。また、置換文字“ｅ”，“ｆ”，“ｇ”に置き換えられた部分は、それぞれ、＜table orient="PORT" tocentry="1"＞というタグの要素名，第１属性（属性名＝属性値）および第２属性（属性名＝属性値）である。
【０２６９】
次に、上述した圧縮処理に関連する第３実施形態の圧縮装置および伸長装置の構成および動作について、図２５〜図２９を参照しながら説明する。
ここで、図２５は本発明の第３実施形態としての構造化文書の圧縮装置の機能構成を示すブロック図、図２６は本発明の第３実施形態としての構造化文書の伸長装置の機能構成を示すブロック図、図２７は図２５に示す圧縮装置でのタグ辞書作成手順（タグ辞書登録手順）を説明するためのフローチャート、図２８は図２５に示す圧縮装置による圧縮手順を説明するためのフローチャート、図２９は図２６に示す伸長装置による伸長手順を説明するためのフローチャートである。
【０２７０】
まず、図２５を参照しながら、第３実施形態の圧縮装置について説明すると、この図２５において、１０１は文書記憶部、１０２はＤＴＤ条件調査部、１０３はタグ平文識別部、１０４はタグ文字列登録部、１０５はタグ辞書、１０６は文字列比較部、１０７は言語識別部、１０８は日本語辞書、１０９は中国語辞書、１１０は英語辞書、１１１はタグ文字列変換部、１１２は単語番号変換部、１１３は単語番号ファイル、１１４はＤＴＤ記入部である。
【０２７１】
文書記憶部１０１は、圧縮すべきＸＭＬ文書を入力保持するもので、例えば図３０（Ａ）に示すような圧縮前のＸＭＬ文書が保持されるメモリである。
ＤＴＤ条件調査部１０２は、圧縮すべきＸＭＬ文書が、図３０（Ａ）に示すごとくＤＴＤを内蔵しているか、図３１（Ａ）に示すごとく別ファイルのＤＴＤを参照するものか、図３２（Ａ）に示すごとくＤＴＤなしのものかの３通りのいずれであるかを識別するもので、第１および第２実施形態のパターン認識機能を実現するものである。
【０２７２】
より具体的に、ＤＴＤ条件調査部１０２は、圧縮対象のＸＭＬ文書の２行目に“＜！ＤＯＣＴＹＰＥ”が記述されていればＤＴＤを有するものと識別し、文書型名（ここでは「book」）つまり文書型宣言の後に“［”が記述されていればＤＴＤを内蔵したＸＭＬ文書であると識別し、“［”が記述されていなければ外部ファイルのＤＴＤを参照するＸＭＬ文書であると識別する。そして、ＸＭＬ文書の２行目に“＜！ＤＯＣＴＹＰＥ”が記述されていなければ、ＤＴＤなしのＸＭＬ文書であると識別する。
【０２７３】
タグ平文識別部１０３は、ＸＭＬ文書の注目文字列がタグか平文かを識別するものであり、その注目文字列が“＜”および“＞”により前後から囲まれていれば、その注目文字列をタグ内の記述であると識別する一方、囲まれていなければ、その注目文字列を平文内の記述であると識別する。例えば、図３０（Ａ）の９行目の「ＸＭＬの概要」や１０行目の「ＸＭＬとは…」、あるいは、図３０（Ｂ）の９行目の「αβγ」や１０行目の「αδ…」は、“＜”および“＞”により囲まれていないので、平文であると識別される。
【０２７４】
タグ文字列登録部１０４は、例えば図３０（Ｃ）に示すようなタグ辞書１０５を登録・作成するものであり、そのタグ辞書１０５は、タグ内において例えば図３３に示すごとく区分された文字列（すなわち「要素名」や「属性名＝“属性値”」等）を、それぞれ短縮文字列（置換文字）に対応させるためのものである。
上述したタグ平文識別部１０３やタグ文字列登録部１０４は、第２実施形態における文書実現値解析部２０，ＤＴＤ解析部３０やタグ辞書作成部８０に対応した機能を果たすものである。
【０２７５】
ここで、タグ文字列登録部１０４は、図２７に示すフローチャート（ステップＳ２４１〜Ｓ２５１）に従って、上述のようなタグ辞書１０５を作成するようになっており、図２７を参照しながら、タグ文字列登録部１０４によるタグ辞書作成手順（タグ辞書登録手順）について説明する。
【０２７６】
まず、タグ文字列登録部１０４に文字を順次入力し（ステップＳ２４１）、入力された文字がＥＯＦ（End Of File）か否かを判別し（ステップＳ２４２）、ＥＯＦであれば（ＹＥＳルート）、タグ辞書作成動作を終了する。
ステップＳ２４２において入力文字がＥＯＦでないと判別した場合（ＮＯルート）には、その入力文字が“＜”か否かを判別し（ステップＳ２４３）、“＜”でなければ（ＮＯルート）、ステップＳ２４１に戻って次の文字を入力する。
【０２７７】
ステップＳ２４３において入力文字が“＜”であると判別した場合（ＹＥＳルート）には、メモリの文字列を空（♯）にしてから（ステップＳ２４４）、“＜”以降の文字（タグ内の文字）を順次入力する（ステップＳ２４５）。なお、ステップＳ２４１によって入力されてからステップＳ２４４でメモリから消された文字列は、“＜”の前に記述された平文である。
【０２７８】
ステップＳ２４５で入力された文字が空白か否かを判別し（ステップＳ２４６）、空白である場合（ＹＥＳルート）、その空白が認識されるまでにメモリに蓄積された文字列に対して適当な置換文字（例えば“ｂ”）を決め、その置換文字と文字列とを対応させてタグ辞書１０５に登録する（ステップＳ２４７）。この後、ステップＳ２４４に戻り、同様の処理を繰り返し実行する。
【０２７９】
ステップＳ２４６において空白ではないと判別した場合（ＮＯルート）には、ステップＳ２４５で入力された文字が“！”か否か判別し（ステップＳ２４８）、“！”であれば（ＹＥＳルート）、この“！”に続く文字列はタグではなくコメントなので、ステップＳ２４１に戻る。
【０２８０】
ステップＳ２４８において“！”ではないと判別した場合（ＮＯルート）には、ステップＳ２４５で入力された文字が“＞”か否かを判別し（ステップＳ２４９）、“＞”であれば（ＹＥＳルート）、その“＞”が認識されるまでにメモリに蓄積された文字列に対して適当な置換文字を決め、その置換文字と文字列とを対応させてタグ辞書１０５に登録する（ステップＳ２５０）。
【０２８１】
そして、ステップＳ２４９において“＞”を認識したということは、タグの記述が終わったことを意味するので、ステップＳ２４１に戻り、同様の処理を繰り返し実行する。
また、ステップＳ２４９において“＞”ではないと判別した場合（ＮＯルート）には、今回、ステップＳ２４５で入力された文字を、メモリに蓄積されている文字列に加えて新文字列としてから（ステップＳ２５１）、ステップＳ２４５に戻る。
【０２８２】
従って、図３３に示すような文字列が入力された場合、空白毎に文字列が区切られ、区切られた文字列「table」，「orient="PORT"」，「tocentry="1"」に対しそれぞれ置換文字ｅ，ｆ，ｇが決められ、これらの文字列と置換文字との対応関係が、順次、タグ辞書１０５に登録される。
また、図３０（Ａ）の９行目に記述された文字列が入力された場合、“＜”および“＞”が認識される都度、その文字列が区切られ、区切られた文字列「chapter」，「title」に対しそれぞれ置換文字ｂ，ｃが決められ、これらの文字列と置換文字との対応関係が、順次、タグ辞書１０５に登録される。
【０２８３】
さて、図２５に示す圧縮装置において、タグ辞書１０５は、タグ文字列登録部１０４により前述のごとく登録・作成されたもので、例えば図３０（Ｃ），図３１（Ｅ）や図３２（Ｃ）に示すような、置換文字とタグ内の文字列との対照表であり、メモリに保持される。
【０２８４】
文字列比較部１０６は、文書記憶部１０１に保持された文字列と、辞書１０５，１０８〜１１０の登録文字列または単語文字列とを比較し、その文字列が登録文字列または単語文字列と一致した場合には、その文字列に対して置換文字を出力するものである。このとき、タグ内の文字列はタグ辞書１０５の登録文字列と比較され、平文部分の文字列は、後述する単語辞書１０８〜１１０のいずれかにおける単語文字列と比較される。文字列を、文字列比較部１０６によって出力された置換文字（短縮文字列）へ変換することにより、ＸＭＬ文書が圧縮されることになる。
【０２８５】
言語識別部１０７は、圧縮対象のＸＭＬ文書の内容（平文）において記述される言語が何語であるかを、ＸＭＬ宣言におけるエンコーディング宣言（図示省略）に記述された文字コード名、並びに、任意のタグにおける言語識別用の属性（xml：lang）の値を解読することによって識別するものである。そして、本実施例の言語識別部１０７は、その言語が例えば日本語，中国語，英語の３つのうちのいずれであるかを識別し、その識別結果に対応して、日本語辞書１０８，中国語辞書１０９，英語辞書１１０のうちのいずれか一つを平文用の単語辞書として選択するものである。
【０２８６】
日本語辞書１０８は、ＸＭＬ文書の平文において記述される言語が日本語の場合に、例えば図３０（Ｄ）に示すように、平文を構成する日本語の単語文字列とそれに対応する単語番号（短縮文字列，置換文字）との対応をとるための対照表であり、事前に構成された既知のものである。ここで、単語番号は、平文内の実際の単語文字列よりも短く、且つ、その単語文字列を特定しうる、固定バイト長の短縮文字列（置換文字）である。
同様に、中国語辞書１０９や英語辞書１１０のいずれも、平文を構成する各国語の単語文字列と単語番号（短縮文字列，置換文字）との対応をとるための対照表である。
【０２８７】
タグ文字列変換部１１１は、タグの文字列を、文字列比較部１０６からの一致信号に応じて、この文字列比較部１０６で付与された置換文字（短縮文字列）に変換する、変換処理を行なうものである。そして、このタグ文字列変換部１１１と上述した文字列比較部１０６とが、第２実施形態の文書実現値文字列置換部４１やＤＴＤ文字列置換部５１に対応した機能を果たすものである。
【０２８８】
同様に、単語番号変換部１１２は、平文の文字列を、文字列比較部１０６からの一致信号に応じて、この文字列比較部１０６で付与された単語番号（置換文字，短縮文字列）に変換するものであり、最長一致法により単語を固定バイトの単語番号に変換するものである。
【０２８９】
単語番号ファイル１１３は、タグ文字列変換部１１１からの置換文字変換出力と、単語番号変換部１１２からの単語番号変換出力とにより得られた、例えば図３０（Ｂ）に示すようなＸＭＬ文書の圧縮データを保持するものである。
ＤＴＤ記入部１１４は、図３１（Ａ）に示すごとき、別ファイルのＤＴＤを参照するＸＭＬ文書に対して、新規ファイル名を記入するものである。
【０２９０】
次に、図２６を参照しながら、第３実施形態の伸長装置について説明する。なお、図中、既述の符号と同一の符号は同一もしくはほぼ同一の部分を示しているので、その説明は省略する。
図２６において、１２０は単語番号ファイル記憶部、１２１は置換文字比較部、１２２はタグ文字列逆変換部、１２３は単語番号逆変換部、１２４は文書記憶部、１２５は旧ＤＴＤ記入部である。
【０２９１】
単語番号ファイル記憶部１２０は、伸長対象である、例えば図３０（Ｃ）に示すような圧縮後のＸＭＬ文書を保持するものである。
置換文字比較部１２１は、単語番号ファイル記憶部１２０に保持された置換文字（単語番号）と、辞書１０５，１０８〜１１０の置換文字（単語番号）とを比較し、これらの置換文字が一致した場合には、その置換文字に対して文字列（単語文字列）を出力するものである。このとき、タグ内の置換文字はタグ辞書１０５に登録された置換文字と比較され、平文部分の単語番号（置換文字）は、単語辞書１０８〜１１０のいずれかにおける単語文字列と比較される。
【０２９２】
タグ文字列逆変換部１２２は、圧縮後のＸＭＬ文書における置換文字を、置換文字比較部１２１からの信号に基づき、その置換文字に対応した文字列に逆変換するものである。
同様に、単語番号逆変換部１２３は、圧縮後のＸＭＬ文書における単語番号（置換文字）を、番号比較部１２１からの信号に基づき、その単語番号に対応した単語文字列に逆変換するものである。
【０２９３】
文書記憶部１２４は、タグ文字列逆変換部１２２から出力された、置換文字に対応したタグ文字列と、単語番号逆変換部１２３から出力された、単語番号に対応した単語文字列とを記述されたＸＭＬ文書（復元された文書）を保持するものである。
旧ＤＴＤ記入部１２５は、ＸＭＬ文書において、前記圧縮時に記入された新ＤＴＤを旧ＤＴＤに復元するものである。
【０２９４】
次に、図２５にて説明した第３実施形態の圧縮装置の動作について、図３０〜図３２を参照しながら、図２８に示すフローチャート（ステップＳ２０１〜Ｓ２１７）に従って説明する。
まず、文書記憶部１０１に、例えばオペレータが作成済みの図３０（Ａ）に示すようなＸＭＬ文書を保持させる。ＤＴＤ条件調査部１０２は、文書記憶部１０１に格納された、圧縮対象のＸＭＬ文書を参照して、そのＸＭＬ文書中に“＜！ＤＯＣＴＹＰＥ”が記述されているか否かをチェックし（ステップＳ２０１）、“＜！ＤＯＣＴＹＰＥ”が記述されている場合（ＹＥＳルート）には、そのＸＭＬ文書はＤＴＤを有するものと判別する。なお、ＤＴＤがないと判別された場合（ＮＯルート）、ステップＳ２０３へ移行する。
【０２９５】
続いて、ＤＴＤ条件調査部１０２は、ＤＴＤを有するＸＭＬ文書に“［”が記述されているか否かを判別する（ステップＳ２０２）。そして、“［”が記述されている場合（ＹＥＳルート）、ＤＴＤがＸＭＬ文書中に内蔵されているものと判別してステップＳ２０３へ移行する一方、“［”が記述されていない場合（ＮＯルート）、そのＸＭＬ文書についてのＤＴＤは外部ファイルに格納されているものと判別してステップＳ２０９へ移行する。
【０２９６】
ＤＴＤを内蔵したＸＭＬ文書に対しては、以下のステップＳ２０３〜Ｓ２０８の処理を施して圧縮を行なう。
まず、タグ文字列登録部１０４により、図２７に示すフローチャートに従ってタグ文字列の置換文字登録（タグ辞書作成）処理を行ない、図３０（Ｃ）に示すようなタグ辞書１０５を作成する（ステップＳ２０３）。
【０２９７】
続いて、タグ平文識別部１０３が、文書記憶部１０１に保持されたＸＭＬ文書から平文を識別して言語識別部１０７に送出する。このとき、言語識別部１０７は、タグ平文識別部１０３からのＸＭＬ文書のエンコーディング宣言において記述された文字コード名（図示省略）、並びに、任意のタグにおける言語識別用の属性（xml：lang）の値を解読することにより、平文の言語が何語であるかを識別し、その言語に応じた単語辞書、例えば日本語の場合は日本語辞書１０８を選択する（ステップＳ２０４）。
【０２９８】
そして、文字列比較部１０６は、タグ辞書１０５の登録文字列と、圧縮対象のＸＭＬ文書におけるタグ内の文字列とを比較し、これらの文字列が一致した場合、その登録文字列に対応した置換文字（短縮文字列）をタグ辞書１０５から読み出し、タグ文字列変換部１１１にて、タグ内の文字列を置換文字に変換する（ステップＳ２０５）。
【０２９９】
ついで、文字列比較部１０６は、図３０（Ｄ）に示すような日本語辞書１０８の登録単語文字列と、圧縮対象のＸＭＬ文書における平文内の単語文字列とを比較し、これらの単語文字列が一致した場合、その登録単語文字列に対応した単語番号（置換文字，短縮文字列）を日本語辞書１０８から読み出し、単語番号変換部１１２にて、平文内の単語文字列を単語番号に変換する（ステップＳ２０６）。
【０３００】
この後、タグ辞書１０５は、後述する逆変換処理つまり伸長・復元の際に必要になるため、図示省略のファイルに出力される（ステップＳ２０７）。
また、ステップＳ２０５において置換文字に変換されたタグと、ステップＳ２０６において単語番号に変換された平文とは、図３０（Ｂ）に示すように圧縮されたＸＭＬ文書として、単語番号ファイル１１３に出力され、その単語番号ファイル１１３は、図示省略の記憶装置等で保持される（ステップＳ２０８）。
【０３０１】
一方、外部ファイルに格納されたＤＴＤを用いるＸＭＬ文書に対しては、以下のステップＳ２０９〜Ｓ２１７の処理を施して圧縮を行なう。
ステップＳ２０２において“［”が記述されていないと判別された場合、ＤＴＤ条件調査部１０２は、圧縮対象のＸＭＬ文書についてのＤＴＤを外部参照により認識する必要があると判別し、例えば図３１（Ａ）の２行目に示すごとくシステム識別子によって指定されたファイル名“book.dtd”に基づいて、別ファイルのＤＴＤ〔例えば図３１（Ｂ）参照〕が認識・参照される。そして、そのＤＴＤに対してタグ文字列登録部１０４がタグ文字列登録処理を行ない、図３１（Ｅ）に示すようなタグ辞書１０５が作成される（ステップＳ２０９）。
【０３０２】
続いて、ステップＳ２０４と同様、タグ平文識別部１０３が、文書記憶部１０１に保持されたＸＭＬ文書から平文を識別して言語識別部１０７に送出する。このとき、言語識別部１０７は、タグ平文識別部１０３からのＸＭＬ文書のエンコーディング宣言において記述された文字コード名（図示省略）を解読することにより、平文で記述される言語が何語であるかを識別し、その言語に応じた単語辞書、例えば日本語の場合は日本語辞書１０８を選択する（ステップＳ２１０）。
【０３０３】
また、ＤＴＤ条件調査部１０２は、ＤＴＤ記入部１１４を制御して、例えば図３１（Ｇ）に示すごとく新旧ＤＴＤ表に新規ファイルのＤＴＤ名「book2.dtd」を記入させるとともに、単語番号変換部１１２による処理に際して、圧縮前の旧ＤＴＤ名「book.dtd」を新規ファイルのＤＴＤ名「book2.dtd」に書換・記入させる（ステップＳ２１１）。
【０３０４】
そして、文字列比較部１０６は、タグ辞書１０５の登録文字列と、図３１（Ｂ）に示すような別ファイルのＤＴＤにおけるタグ内の文字列とを比較し、これらの文字列が一致した場合、その登録文字列に対応した置換文字（短縮文字列）をタグ辞書１０５から読み出し、タグ文字列変換部１１１にてタグ内の文字列を置換文字に変換することにより、図３１（Ｄ）に示すような新規ファイルのＤＴＤを圧縮作成する（ステップＳ２１２）。
【０３０５】
また、ステップＳ２０５と同様、文字列比較部１０６は、タグ辞書１０５の登録文字列と、文書記憶部１０１に格納された圧縮対象のＸＭＬ文書におけるタグ内の文字列とを比較し、これらの文字列が一致した場合、その登録文字列に対応した置換文字（短縮文字列）をタグ辞書１０５から読み出し、タグ文字列変換部１１１にて、タグ内の文字列を置換文字に変換する。そして、タグ文字列変換部１１１は、上述のごとくタグ内の文字列を置換文字に変換・圧縮したＸＭＬ文書を単語番号変換部１１２に送出する（ステップＳ２１２）。
【０３０６】
ついで、文字列比較部１０６は、図３１（Ｆ）に示すような日本語辞書１０８の登録単語文字列と、タグ文字列変換部１１１からのＸＭＬ文書（タグ内文字列が置換文字に変換された文書）における平文内の単語文字列とを比較し、これらの単語文字列が一致した場合、その登録単語文字列に対応した単語番号（置換文字，短縮文字列）を日本語辞書１０８から読み出し、単語番号変換部１１２にて平文内の単語文字列を単語番号に変換する。このとき、ＤＴＤ記入部１１４により、ＸＭＬ文書中において旧ＤＴＤ名「book.dtd」が新しいＤＴＤ名「book2.dtd」に書き換えられる。このようにして、図３１（Ａ）に示すような圧縮前のＸＭＬ文書は図３１（Ｃ）に示すようなＸＭＬ文書に圧縮される（ステップＳ２１３）。
【０３０７】
この後、タグ辞書１０５は、ステップＳ２０７と同様、後述する逆変換処理つまり伸長・復元の際に必要になるため、図示省略のファイルに出力される（ステップＳ２１４）。
また、ステップＳ２１３において変換された、図３１（Ｃ）に示すような圧縮後のＸＭＬ文書は、単語番号変換部１１２から単語番号ファイル１１３に出力される（ステップＳ２１５）。
【０３０８】
さらに、ステップＳ２１２で圧縮作成された新規ファイルＤＴＤは図示省略のファイルに出力されるとともに（ステップＳ２１６）、ステップＳ２１１で作成した、図３１（Ｇ）に示すような新旧ＤＴＤ対応表も、後述する逆変換処理つまり伸長・復元の際に必要になるため、図示省略のファイルに出力される（ステップＳ２１７）。
なお、ＤＴＤをもたないＸＭＬ文書に対しても、前述したステップＳ２０３〜Ｓ２０８の処理が施され、例えば図３２（Ａ）に示すＸＭＬ文書が図３２（Ｂ）に示すごとく圧縮される。
【０３０９】
次に、図２６にて説明した第３実施形態の伸長装置の動作について、図３０〜図３２を参照しながら、図２９に示すフローチャート（ステップＳ２２１〜Ｓ２３２）に従って説明する。
まず、図示省略のファイルからタグ辞書１０５を取り出し、そのタグ辞書１０５を図示省略のメモリに格納する（ステップＳ２２１）。
【０３１０】
そして、そのタグ辞書１０５に対応する、圧縮ＸＭＬ文書の単語番号ファイル１１３を記憶部１２０に格納する（ステップＳ２２２）。
ステップＳ２２１およびＳ２２２の処理により、図３０（Ｃ）に示すタグ辞書に対しては図３０（Ｂ）に示すごとく圧縮されたＸＭＬ文書が記憶部１２０に格納され、図３１（Ｅ）に示すタグ辞書に対しては図３１（Ｃ）に示すごとく圧縮されたＸＭＬ文書が記憶部１２０に格納され、図３２（Ｃ）に示すタグ辞書に対しては図３２（Ｂ）に示すごとく圧縮されたＸＭＬ文書が記憶部１２０格納される。
【０３１１】
この後、ＤＴＤ条件調査部１０２は、記憶部１２０から伸長復元対象のＸＭＬ文書を読み出し、まず、そのＸＭＬ文書に“＜！ＤＯＣＴＹＰＥ”が記述されているか否かをチェックする（ステップＳ２２３）。
“＜！ＤＯＣＴＹＰＥ”が記述されている場合（ＹＥＳルート）、ＤＴＤ条件調査部１０２は、さらに“［”が記述されているか否かをチェックし（ステップＳ２２４）、“［”が記述されている場合（ＹＥＳルート）、伸長復元対象のＸＭＬ文書にはＤＴＤが内蔵されているものと判断する。
【０３１２】
このように伸長復元対象のＸＭＬ文書がＤＴＤを内蔵している場合、言語識別部１０７は、任意のタグ中の言語識別用の属性（xml：lang）の値からそのＸＭＬ文書の平文の言語を識別し、予め作成されている単語辞書群の中から、その識別結果に応じた単語辞書、例えば図３１（Ｄ）に示すような日本語辞書１０８を選択する（ステップＳ２２５）。
【０３１３】
そして、タグ平文識別部１０３は、圧縮されたＸＭＬ文書のタグ部分を識別し、タグ辞書１０５の置換文字と記憶部１２０から出力したタグ部分の置換文字とを置換文字比較部１２１で比較・照合させ、これらの置換文字が一致した場合、その置換文字に対応するタグ内文字列をタグ辞書１０５から読み出してタグ文字列逆変換部１２２に送出し、このタグ文字列変換部１２２において、圧縮されたＸＭＬ文書の置換文字をタグ内文字列に変換する、タグ文字列逆変換処理が行なわれる（ステップＳ２２６）。これにより、例えば図３０（Ｂ）の置換文字ｂ，ｃ，ｄが、図３０（Ａ）に示すごとく、それぞれ“chapter”，“title”，“paragraph”に変換される。
【０３１４】
ついで、タグ平文識別部１０３は、圧縮されたＸＭＬ文書の平文部分を識別し、その平文部分の単語番号（置換文字）を、置換文字比較部１２１において、日本語辞書１０８の登録単語番号（登録置換番号）と比較し、これらの単語番号が一致した場合、その単語番号に対応する単語文字列を日本語辞書１０８から読み出して単語番号逆変換部１２３に送出し、この単語番号逆変換部１２３において、圧縮されたＸＭＬ文書の単語番号を単語文字列に変換する、単語番号逆変換処理が行なわれる（ステップＳ２２７）。これにより、例えば図３０（Ｂ）の単語番号α，β，γ，δが、図３０（Ａ）に示すごとく、それぞれ“ＸＭＬ”，“の”，“概要”，“とは”に変換される。
【０３１５】
ステップＳ２２６およびＳ２２７でそれぞれ逆変換されたタグ文字列や平文は、例えば図３０（Ａ）に示すような圧縮前のＸＭＬ文書、即ち復元文書となり、文書記憶部１２４に保持される。
一方、ステップＳ２２４で伸長復元対象のＸＭＬ文書に“［”が記述されていないと判別された場合（ＮＯルート）、ＤＴＤ条件調査部１０２は、そのＸＭＬ文書についてのＤＴＤは外部ファイルに格納されているものと判別し、そのＸＭＬ文書の圧縮処理時に作成・保存された、例えば図３２（Ｇ）に示すような新旧ＤＴＤ対応表を入力する（ステップＳ２２８）。
【０３１６】
また、言語識別部１０７は、ステップＳ２２５と同様、タグ中の言語識別用の属性（xml：lang）の値からそのＸＭＬ文書の平文の言語を識別し、予め作成されている単語辞書群の中から、その識別結果に応じた単語辞書、例えば図３２（Ｆ）に示すような日本語辞書１０８を選択する（ステップＳ２２９）。
【０３１７】
さらに、ＤＴＤ条件調査部１０２は、旧ＤＴＤ記入部１２５を制御して、Ｓ２２８で読み出した新旧ＤＴＤ対応表から、ＤＴＤの元のファイル名が“book.dtd”であることを認識させるとともに、例えば図３１（Ｃ）に示すような伸長復元対象のＸＭＬ文書において、“book2.dtd”と記述されているＤＴＤ名を旧ＤＴＤ名“book.dtd”に書換・記入させる（ステップＳ２３０）。
【０３１８】
そして、ステップＳ２２６と同様に、タグ平文識別部１０３は、圧縮されたＸＭＬ文書のタグ部分を識別し、タグ辞書１０５の置換文字と記憶部１２０から出力したタグ部分の置換文字とを置換文字比較部１２１で比較・照合させ、これらの置換文字が一致した場合、その置換文字に対応するタグ内文字列をタグ辞書１０５から読み出してタグ文字列逆変換部１２２に送出し、このタグ文字列変換部１２２において、圧縮されたＸＭＬ文書の置換文字をタグ内文字列に変換する、タグ文字列逆変換処理が行なわれる（ステップＳ２３１）。
【０３１９】
これにより、例えば図３１（Ｃ）の置換文字ｂ，ｃ，ｄが、図３１（Ａ）に示すごとく、それぞれ“chapter”，“title”，“paragraph”に変換され、その変換結果は、単語番号変換部１２３に出力される。
なお、このとき、ステップＳ２３０の処理により、ＸＭＬ文書中に記述されたＤＴＤ名は、ファイル名“book2.dtd”から旧ファイル名“book.dtd”に変換されている。
【０３２０】
ついで、ステップＳ２２７と同様に、タグ平文識別部１０３は、圧縮されたＸＭＬ文書の平文部分を識別し、その平文部分の単語番号（置換文字）を、置換文字比較部１２１において、日本語辞書１０８の登録単語番号（登録置換番号）と比較し、これらの単語番号が一致した場合、その単語番号に対応する単語文字列を日本語辞書１０８から読み出して単語番号逆変換部１２３に送出し、単語番号逆変換部１２３において、圧縮されたＸＭＬ文書の単語番号を単語文字列に変換する、単語番号逆変換処理が行なわれる（ステップＳ２３２）。
【０３２１】
これにより、例えば図３１（Ｃ）の単語番号α，β，γ，δが、図３１（Ａ）に示すごとく、それぞれ“ＸＭＬ”,“の”,“概要”,“とは”に変換される。
このようにして逆変換されたタグ文字列や平文は、例えば図３１（Ａ）に示すような圧縮前のＸＭＬ文書、即ち復元文書となり、文書記憶部１２４に保持される。
【０３２２】
なお、ステップＳ２２３において伸長復元対象のＸＭＬ文書に“＜！ＤＯＣＴＹＰＥ”が記述されていないと判別された場合（ＮＯルート）、そのＸＭＬ文書はＤＴＤをもたないものと判別され、ステップＳ２２５へ移行し、そのＸＭＬ文書に対しても、前述したステップＳ２２３〜Ｓ２２７の処理が施され、例えば図３２（Ａ）に示すＸＭＬ文書が図３２（Ｂ）に示すごとく伸長・復元されて文書記憶部１２４に保持される。
【０３２３】
このように、上述した本発明の第３実施形態では、つまり文字列の置換文字（短縮文字列）への変換処理を行なうことによりＸＭＬ文書の圧縮を行ない、その際に用いられたタグ辞書１０５や各国語毎の単語辞書１０８〜１１０は、いずれも圧縮されることなく保存されるので、ＸＭＬ文書を、伸長することなく圧縮した状態のままで検索することができ、例えば検索時間が０．１秒を超えてはいけない場合（システム）に用いて好適である。
【０３２４】
次に、本発明の第３実施形態の変形例としての圧縮装置および伸長装置の構成および動作について、図３４〜図３７を参照しながら説明する。
ここで、図３４は本発明の第３実施形態の変形例としての構造化文書の圧縮装置の機能構成を示すブロック図、図３５は本発明の第３実施形態の変形例としての構造化文書の伸長装置の機能構成を示すブロック図、図３６は第３実施形態の変形例における構造化文書の圧縮手順を説明するためのフローチャート、図３７は第４実施形態の変形例における構造化文書の伸長手順を説明するためのフローチャートである。
【０３２５】
まず、図３４を参照しながら、第３実施形態の変形例としての圧縮装置について説明すると、この図３４において、１３１は文書記憶部、１３２はタグ平文識別部、１３３はタグ文字列登録部、１３４はタグ辞書、１３５は文字列比較部、１３６は言語識別部、１３７は日本語辞書、１３８は中国語辞書、１３９は英語辞書、１４０はタグ文字列変換部、１４１は単語番号変換部、１４２は可変長符号化部、１４３は圧縮ファイル記憶部である。
【０３２６】
文書記憶部１３１は、圧縮すべきＸＭＬ文書を入力保持するもので、例えば図３０（Ａ）に示すような圧縮前のＸＭＬ文書が保持されるメモリであり、図２５に示す文書記憶部１０１に対応するものである。
タグ平文識別部１３２は、ＸＭＬ文書の注目文字列がタグが平文かを識別するものであり、図２５におけるタグ平文識別部１０３に対応するものであり、このタグ平文識別部１０３と同様に動作する。
【０３２７】
タグ平文列登録部１３３は、タグ内の文字列を置換文字（短縮文字列）に変換するためのタグ辞書１３４を作成するものであり、図２５におけるタグ文字列登録部１０４に対応するもので、図２７により前述した手順に従ってタグ辞書登録動作を行なう。
タグ辞書１３４は、タグ平文列登録部１３３により作成されたもので、例えば図３０（Ｃ），図３１（Ｅ）や図３２（Ｃ）に示すような、置換文字とタグ内の文字列との対照表であり、メモリに保持される。このタグ辞書１３４は、図２５におけるタグ辞書１０５に対応するものである。
【０３２８】
文字列比較部１３５は、文書記憶部１３１に保持された文字列と、辞書１３４，１３７〜１３９の登録文字列または単語文字列とを比較し、その文字列が登録文字列または単語文字列と一致した場合には、その文字列に対して置換文字を出力するものである。このとき、タグ内の文字列はタグ辞書１３４の登録文字列と比較され、平文部分の文字列は、後述する単語辞書１３７〜１３９のいずれかにおける単語文字列と比較される。文字列を、文字列比較部１３５から出力された置換文字（短縮文字列）へ変換することにより、ＸＭＬ文書が圧縮されることになる。この文字列比較部１３５は、図２５における文字列比較部１０６に対応するものである。
【０３２９】
言語識別部１３６は、圧縮対象のＸＭＬ文書の内容（平文）において記述される言語が何語であるかを、ＸＭＬ宣言におけるエンコーディング宣言（図示省略）に記述された文字コード名、あるいは、任意のタグにおける言語識別用の属性（xml：lang）の値を解読することによって識別するものである。図３４に示す言語識別部１３６も、その言語が例えば日本語，中国語，英語の３つのうちのいずれであるかを識別し、その識別結果に対応して、日本語辞書１３７，中国語辞書１３８，英語辞書１３９のうちのいずれか一つを平文用の単語辞書として選択するもので、図２５における言語識別部１０７に対応するものである。
【０３３０】
日本語辞書１３７は、ＸＭＬ文書の平文において記述される言語が日本語の場合に、例えば図３０（Ｄ）に示すように、平文を構成する日本語の単語文字列とそれに対応する単語番号（短縮文字列，置換文字）との対応をとるための対照表であり、事前に構成された既知のもので、図２５における日本語辞書１０８に対応するものである。
【０３３１】
同様に、中国語辞書１０９や英語辞書１１０のいずれも、平文を構成する各国語の単語文字列と単語番号（短縮文字列，置換文字）との対応をとるための対照表であり、事前に構成された既知のもので、図２５における中国語辞書１０９や英語辞書１１０に対応するものである。
タグ文字列変換部１４０は、タグの文字列を、文字列比較部１３５からの一致信号に応じて、この文字列比較部１０６で付与された置換文字（短縮文字列）に変換する、変換処理を行なうもので、図２５におけるタグ文字列変換部１１１に対応するものである。
【０３３２】
同様に、単語番号変換部１４１は、平文の文字列を、文字列比較部１３５からの一致信号に応じて、この文字列比較部１０６で付与された単語番号（置換文字，短縮文字列）に変換するものであり、最長一致法により単語を固定バイトの単語番号に変換するもので、図２５における単語番号変換部１１２に対応するものである。
【０３３３】
可変長符号化部１４２は、タグ文字列変換部１４０や単語番号変換部１４１による変換結果（タグ内やＤＴＤに記述された文字列を置換文字に置き換え且つ平文内の単語文字列を単語番号に置き換えて得られた文字列）、つまり圧縮ファイルを、周知の手法で可変長符号化し、可変長符号化された圧縮ファイルを、タグ辞書とともに出力するものである。
圧縮ファイル記憶部１４３は、可変長符号化部１４２から出力された、タグ辞書と可変長符号化された圧縮ファイルとを保持するものである。
【０３３４】
次に、図３５を参照しながら、第３実施形態の変形例としての伸長装置について説明する。なお、図中、既述の符号と同一の符号は同一もしくはほぼ同一の部分を示しているので、その説明は省略する。
図３５において、１５１は圧縮ファイル記憶部、１５２は可変長復号化部、１５３は置換文字比較部、１５４はタグ文字列逆変換部、１５５は単語番号逆変換部、１５６は文書記憶部である。
【０３３５】
圧縮ファイル記憶部１５１は、図３４に示す圧縮装置により可変長符号化された圧縮ファイルを入力されるものであり、図３４に示す圧縮ファイル記憶部１４３そのものであってもよく、あるいは、この圧縮ファイル記憶部１４３から出力された圧縮ファイルを保持するものとして構成してもよい。
可変長復号化部１５２は、圧縮ファイル記憶部１５１から読み出された圧縮ファイルを、可変長符号化された状態から、例えば図３０（Ｂ）に示すような圧縮ファイルに復号化するものである。
【０３３６】
置換文字比較部１５３は、可変長復号化部１５２により復号化された圧縮ファイルの置換文字（単語番号）と、辞書１３４，１３７〜１３９の置換文字（単語番号）とを比較し、これらの置換文字が一致した場合には、その置換文字に対して文字列（単語文字列）を出力するものである。このとき、タグ内の置換文字はタグ辞書１３４に登録された置換文字と比較され、平文部分の単語番号（置換文字）は、単語辞書１３７〜１３９のいずれかにおける単語文字列と比較される。この置換文字比較部１５３は、図２６における置換文字比較部１２１に対応するものである。
【０３３７】
タグ文字列逆変換部１５４は、可変長復号化部１５２により復号化された圧縮ファイル（圧縮後のＸＭＬ文書）における置換文字を、置換文字比較部１５３からの信号に基づき、その置換文字に対応した文字列に逆変換するもので、図２６におけるタグ文字列逆変換部１２２に対応するものである。
同様に、単語番号逆変換部１５５は、可変長復号化部１５２により復号化された圧縮ファイル（圧縮後のＸＭＬ文書）における単語番号を、置換文字比較部１５３からの信号に基づき、その単語番号に対応した単語文字列に逆変換するもので、図２６における単語番号逆変換部１２３に対応するものである。
【０３３８】
文書記憶部１５６は、タグ文字列逆変換部１５４から出力された、置換文字に対応したタグ文字列と、単語番号逆変換部１５５から出力された、単語番号に対応した単語文字列とを記述されたＸＭＬ文書（復元された文書）を保持するもので、図２６における文書記憶部１２４に対応するものである。
【０３３９】
次に、図３４にて説明した圧縮装置の動作について、図３０を参照しながら図３６に示すフローチャート（ステップＳ２６１〜Ｓ２６７）に従って説明する。
まず、文書記憶部１０１に、例えばオペレータが作成済みの図３０（Ａ）に示すようなＸＭＬ文書を保持させる。そして、タグ平文識別部１３２は、文書記憶部１３１に保持されたＸＭＬ文書からタグ部分を抽出し、そのタグ部分に基づいて、タグ文字列登録部１３３は、図２７に示すフローチャートに従ってタグ文字列の置換文字登録（タグ辞書作成）処理を行ない、図３０（Ｃ）に示すようなタグ辞書１３４を作成する（ステップＳ２６１）。
【０３４０】
続いて、タグ平文識別部１３２が、文書記憶部１３１に保持されたＸＭＬ文書から平文を識別して言語識別部１３６に送出する。このとき、言語識別部１０７は、タグ平文識別部１３２からのＸＭＬ文書のエンコーディング宣言において記述された文字コード名（図示省略）、あるいは、任意のタグでの言語識別用の属性（xml：lang）の値を解読することにより、平文の言語が何語であるかを識別し、その言語に応じた単語辞書、例えば日本語の場合は日本語辞書１３７を選択する（ステップＳ２６２）。
【０３４１】
そして、文字列比較部１３５は、タグ辞書１３４の登録文字列と、圧縮対象のＸＭＬ文書におけるタグ内の文字列とを比較し、これらの文字列が一致した場合、その登録文字列に対応した置換文字（短縮文字列）をタグ辞書１３４から読み出し、タグ文字列変換部１４０にて、タグ内の文字列を置換文字に変換する（ステップＳ２６３）。
【０３４２】
ついで、文字列比較部１３５は、図３０（Ｄ）に示すような日本語辞書１３７の登録単語文字列と、圧縮対象のＸＭＬ文書における平文内の単語文字列とを比較し、これらの単語文字列が一致した場合、その登録単語文字列に対応した単語番号（置換文字，短縮文字列）を日本語辞書１３７から読み出し、単語番号変換部１４１において、平文内の単語文字列を単語番号に変換する（ステップＳ２６４）。
【０３４３】
この後、タグ文字列変換部１４０や単語番号変換部１４１による変換結果〔圧縮ファイル：図３０（Ｂ）に示すようなＸＭＬ文書〕は、可変長符号化部１４２において、周知の手法で可変長符号化される（ステップＳ２６５）。
また、タグ辞書１３４は、後述する逆変換処理つまり伸長・復元の際に必要になるため、図示省略のファイルに出力される（ステップＳ２６６）。
さらに、可変長符号化部１４２は、Ｓ２６５にて可変長符号化した圧縮ファイルを、圧縮ファイル記憶部１４３に出力する（ステップＳ２６７）。
【０３４４】
次に、図３５にて説明した伸長装置の動作について、図３０を参照しながら図３７に示すフローチャート（ステップＳ２７１〜Ｓ２７６）に従って説明する。
まず、図示省略のファイルからタグ辞書１３４を取り出し、そのタグ辞書１３４を図示省略のメモリに格納する（ステップＳ２７１）。
そして、そのタグ辞書１３４に対応する、図３４における可変長符号化部１４２により符号化された圧縮ファイルを、圧縮ファイル記憶部５１に入力・格納する（ステップＳ２７２）。
【０３４５】
この後、可変長符号化部１５２により、圧縮ファイル記憶部１５１に入力された圧縮ファイルを復号して、例えば図３０（Ｂ）に示すようなＸＭＬ文書に復元する（ステップＳ２７３）。
また、言語識別部１３６は、言語識別用タグ（図示省略）からそのＸＭＬ文書の平文の言語を識別し、予め作成されている単語辞書群の中から、その識別結果に応じた単語辞書、例えば図３０（Ｄ）に示すような日本語辞書１３７を選択する（ステップＳ２７４）。
【０３４６】
そして、タグ平文識別部１３２は、圧縮されたＸＭＬ文書の平文部分を識別し、その平文部分の単語番号（置換文字）を、置換文字比較部１５３において、日本語辞書１３７の登録単語番号（登録置換番号）と比較し、これらの単語番号が一致した場合、その単語番号に対応する単語文字列を日本語辞書１３７から読み出して単語番号逆変換部１５５に送出し、この単語番号逆変換部１５５にて、圧縮されたＸＭＬ文書の単語番号を単語文字列に変換する（ステップＳ２７５）。
【０３４７】
ついで、タグ平文識別部１３２は、圧縮されたＸＭＬ文書のタグ部分を識別し、タグ辞書１３４の置換文字とタグ部分の置換文字とを置換文字比較部１５３で比較・照合させ、これらの置換文字が一致した場合、その置換文字に対応するタグ内文字列をタグ辞書１３４から読み出してタグ文字列逆変換部１５４に送出し、このタグ文字列変換部１５４において、圧縮されたＸＭＬ文書の置換文字をタグ内文字列に変換する（ステップＳ２７６）。このようにして、図３０（Ａ）に示すようにＸＭＬ文書が復元され、文書記憶部１５６に保持される。
【０３４８】
本発明の第３実施形態によれば、圧縮率および検索速度は下記のようになる。
(i)伸長せずに検索する方式つまり検索時間が０．１秒を超えてはいけない場合、タグの圧縮率および平文の圧縮率は下記のようになる。
タグの圧縮率は、タグ内の文字列の長さをｎバイトとすると、
タグの元の長さは（ｎ＋２）バイトであり、
圧縮したタグの長さは３（＝１＋２）バイトであり、
圧縮率は３／（ｎ＋２）となる。ｎ＝３とすると、０．６程度となる。
また、平文の圧縮率は、大半の単語は４バイトか６バイトのため、０．３程度となる。
検索速度としては、元の検索システムの検索速度（例えば、平均０．０８秒）
が保たれる。
【０３４９】
(ii)伸長して検索する方式つまり検索時間が０．１秒を超えてもよい場合、タグの圧縮率および平文の圧縮率は下記のようになる。
タグの圧縮率は、タグ内の文字列の長さをｎバイトとすると、
タグの元の長さは（ｎ＋２）バイトであり、
圧縮したタグの長さは２バイト（固定バイト符号）であり、
圧縮率は２／（ｎ＋２）となる。ｎ＝３とすると、０．４程度となる。可変長符号化により０次文脈で圧縮しても圧縮率は同等である。
また、平文の圧縮率は、静的辞書で単語番号変換し、０次文脈で圧縮した場合０．４程度である。
検索速度は、検索システムの検索速度（例：平均０．０８秒）に対して０．０２秒から０．０３秒だけ速くなる。
【０３５０】
ところで、特開平１１−５３３４９号公報に開示された技術では、タグ記号“＜”および“＞”と、これらに挟まれた文字列とを一緒にして符号化しているので、第３実施形態のごとく文字列を符号化するものとは異なり、図３０（Ａ）の３〜６行目に示す“（chapter）”，“chapter”等は符号化することができないので、第３実施形態に比較して圧縮量が小さい。
【０３５１】
本発明の第３実施形態によれば、下記のような利点が得られる。
Ａ．タグ文字列登録部１１４や１３３によりタグ辞書１０５，１３４を作成し、そのタグ辞書１０５，１３４に基づいてタグ文字列を圧縮変換してタグを圧縮することにより、ＸＭＬ文書を圧縮するので、圧縮率を高めることができるのみならず、このタグを圧縮した状態で検索可能にすることができる。
【０３５２】
Ｂ．図２７や図３３を参照しながら説明したごとく、タグ文字列をタグ辞書に登録する際に、“＜”と“＞”とに囲まれたタグ領域内（ただし“＜！”と“＞”とにより囲まれたコメント領域を除く）において、空白文字が出現する度に文字列を区切って置換文字に対応させているので、タグ部分を正確に圧縮しながら圧縮率を高くすることができるほか、長いタグを短い文字で区切ることができ、タグ辞書のサイズを小形化し、タグ辞書を検索し易いものとして構成することができ、しかもタグを圧縮した状態で検索可能にすることができる。
【０３５３】
Ｃ．長いタグ部分を短い文字で区切ることができ検索し易くすることができるのみならず、さらにこれを圧縮して、圧縮率をより高くすることができる。
Ｄ．ＸＭＬ文書中の文字コード名、あるいは、任意のタグでの言語識別用の属性の値により平文の言語を認識し、その言語に応じた単語辞書を決定するので、例えば日本語，中国語，英語等の様々な言語により記述されたＸＭＬ文書にも正確に対応することができる。
【０３５４】
Ｅ．平文の部分を各言語の単語辞書に登録された単語文字列と比較し、単語番号変換部１１２，１４１において、登録単語文字列と一致した部分を固定長バイト番号（置換文字，短縮文字列）に変換するので、平文部分を大きく圧縮することができる。
Ｆ．タグの部分をタグ辞書１０５，１３４の登録文字列と比較し、タグ文字列変換部１１１，１４０において登録文字列と一致した部分を固定長バイトの置換文字（短縮文字列）に変換するので、タグ部分を大きく圧縮することができる。
【０３５５】
Ｇ．ＸＭＬ文書の言語識別記号により、該当する言語の種別に応じた単語辞書を決定するので、多言語に対応しながらＸＭＬ文書の復元が可能となる。
Ｈ．伸長復元処理時には、置換文字比較部１２１，１５３においてタグ内の置換文字をタグ辞書１０５，１３４の登録置換文字と比較し、タグ文字列逆変換部１２２，１５４において、登録置換文字と一致した置換文字をタグ内文字列に逆変換するので、タグを正確に復元することができる。
【０３５６】
Ｉ．伸長復元処理時には、置換文字比較部１２１，１５３において平文内の単語番号（置換文字）を各言語の登録単語番号と比較し、単語番号逆変換部１２３，１５５において、登録単語番号と一致した単語番号を単語文字列に逆変換するので、平文の単語番号を各言語に正確に復元することができる。
Ｊ．可変長符号化部１４２により置換処理後の文字列（置換文字や単語番号）をさらに可変長符号化することで、ＸＭＬ文書の圧縮率をより高めることができる。
【０３５７】
〔４〕その他
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態では、構造化文書がＸＭＬ文書である場合について説明したが、本発明は、これに限定されるものではなく、他の構造化文書、例えばＨＴＭＬ文書やＳＧＭＬ文書などにも同様に適用され、上述した実施形態と同様の作用効果を得ることができる。
【図面の簡単な説明】
【０３５８】
【図１】本発明の第１実施形態としての構造化文書の圧縮装置の機能構成を示すブロック図である。
【図２】（Ａ）〜（Ｄ）はいずれも第１実施形態における構造化文書（文書実現値）の圧縮原理を説明するための図である。
【図３】（Ａ）〜（Ｃ）はいずれも第１実施形態における構造化文書（文書実現値）の圧縮原理を説明するための図である。
【図４】（Ａ）および（Ｂ）はいずれも第１実施形態における構造化文書（ＤＴＤ）の圧縮原理を説明するための図である。
【図５】第１実施形態における構造化文書の圧縮手順を説明するためのフローチャートである。
【図６】第１実施形態における文書実現値解析手順を説明するためのフローチャートである。
【図７】第１実施形態における文書型定義解析手順を説明するためのフローチャートである。
【図８】第１実施形態における文書実現値構成変更手順を説明するためのフローチャートである。
【図９】第１実施形態における文書型定義構成変更手順を説明するためのフローチャートである。
【図１０】（Ａ）および（Ｂ）はいずれも第１実施形態による構造化文書（ＸＭＬ文書）の具体的な圧縮処理（第１例）を説明するための図である。
【図１１】（Ａ）および（Ｂ）はいずれも第１実施形態による構造化文書（ＸＭＬ文書）の具体的な圧縮処理（第２例）を説明するための図である。
【図１２】（Ａ）および（Ｂ）はいずれも第１実施形態による構造化文書（ＸＭＬ文書）の具体的な圧縮処理（第３例）を説明するための図である。
【図１３】（Ａ）〜（Ｄ）はいずれも第１実施形態による構造化文書（ＸＭＬ文書）の具体的な圧縮処理（第４例）を説明するための図である。
【図１４】本発明の第２実施形態としての構造化文書の圧縮装置の機能構成を示すブロック図である。
【図１５】（Ａ）〜（Ｄ）はいずれも第２実施形態における構造化文書の圧縮原理を説明するための図である。
【図１６】第２実施形態における構造化文書の圧縮手順を説明するためのフローチャートである。
【図１７】第２実施形態における文書実現値文字列置換手順を説明するためのフローチャートである。
【図１８】第２実施形態における文書型定義文字列置換手順を説明するためのフローチャートである。
【図１９】第２実施形態における構造化文書の伸長手順を説明するためのフローチャートである。
【図２０】（Ａ）〜（Ｃ）はいずれも第２実施形態による構造化文書（ＸＭＬ文書）の具体的な圧縮処理（第１例）を説明するための図である。
【図２１】（Ａ）〜（Ｃ）はいずれも第２実施形態による構造化文書（ＸＭＬ文書）の具体的な圧縮処理（第２例）を説明するための図である。
【図２２】（Ａ）〜（Ｃ）はいずれも第２実施形態による構造化文書（ＸＭＬ文書）の具体的な圧縮処理（第３例）を説明するための図である。
【図２３】（Ａ）〜（Ｄ）はいずれも第２実施形態による構造化文書（ＸＭＬ文書）の具体的な圧縮処理（第４例）を説明するための図である。
【図２４】（Ａ）〜（Ｇ）はいずれも第２実施形態による構造化文書（ＸＭＬ文書）の具体的な圧縮処理（第５例）を説明するための図である。
【図２５】本発明の第３実施形態としての構造化文書の圧縮装置の機能構成を示すブロック図である。
【図２６】本発明の第３実施形態としての構造化文書の伸長装置の機能構成を示すブロック図である。
【図２７】第３実施形態におけるタグ辞書作成手順（タグ辞書登録手順）を説明するためのフローチャートである。
【図２８】第３実施形態における構造化文書の圧縮手順を説明するためのフローチャートである。
【図２９】第３実施形態における構造化文書の伸長手順を説明するためのフローチャートである。
【図３０】（Ａ）〜（Ｄ）はいずれも第３実施形態による構造化文書（ＸＭＬ文書）の具体的な圧縮処理（第１例）を説明するための図である。
【図３１】（Ａ）〜（Ｇ）はいずれも第３実施形態による構造化文書（ＸＭＬ文書）の具体的な圧縮処理（第２例）を説明するための図である。
【図３２】（Ａ）〜（Ｄ）はいずれも第３実施形態による構造化文書（ＸＭＬ文書）の具体的な圧縮処理（第３例）を説明するための図である。
【図３３】第３実施形態での構造化文書の圧縮手法を説明するための図である。
【図３４】本発明の第３実施形態の変形例としての構造化文書の圧縮装置の機能構成を示すブロック図である。
【図３５】本発明の第３実施形態の変形例としての構造化文書の伸長装置の機能構成を示すブロック図である。
【図３６】第３実施形態の変形例における構造化文書の圧縮手順を説明するためのフローチャートである。
【図３７】第４実施形態の変形例における構造化文書の伸長手順を説明するためのフローチャートである。
【図３８】（Ａ）〜（Ｃ）はいずれも構造化文書（ＸＭＬ文書）における一般的なタグの書き方を説明するための図である。
【図３９】構造化文書（ＸＭＬ文書）のタグにおける一般的な属性の書き方を説明するための図である。
【図４０】一般的なＸＭＬプロセッサの処理について説明するための図である。
【符号の説明】
【０３５９】
１０  文書記憶部
２０  文書実現値解析部
３０  ＤＴＤ解析部（文書型定義解析部）
４０  文書実現値構成変更部
４１  文書実現値文字列置換部
５０  ＤＴＤ構成変更部（文書型定義構成変更部）
５１  ＤＴＤ文字列置換部（文書型定義文字列置換部）
６０  新規ＤＴＤファイル作成部
７０  新旧ＤＴＤ対応表出力部
８０  タグ辞書作成部
９０  タグ辞書
１００  外部ファイル
１０１，１２４，１３１，１５６  文書記憶部
１０２  ＤＴＤ条件調査部
１０３，１３２  タグ平文識別部（文書実現値解析部）
１０４，１３３  タグ文字列登録部（文書実現値解析部，文書型定義解析部，
タグ辞書作成部）
１０５，１３４  タグ辞書
１０６，１３５  文字列比較部（文書実現値文字列置換部，文書型定義文字列
置換部）
１０７，１３６  言語識別部
１０８，１３７  日本語辞書（単語辞書）
１０９，１３８  中国語辞書（単語辞書）
１１０，１３９  英語辞書（単語辞書）
１１１，１４０  タグ文字列変換部（文書実現値文字列置換部，文書型定義文
字列置換部）
１１２，１４１  単語番号変換部（単語文字列置換部）
１１３  単語番号ファイル
１１４  ＤＴＤ記入部
１２０  単語番号ファイル記憶部
１２１，１５３  置換文字比較部
１２２，１５４  タグ文字列逆変換部
１２３，１５５  単語番号逆変換部
１２５  旧ＤＴＤ記入部
１４２  可変長符号化部
１４３，１５１  圧縮ファイル記憶部
１５２  可変長復号化部
【図１】
2008084341.tif 000005
【図２】
2008084341.tif 000006
【図３】
2008084341.tif 000007
【図４】
2008084341.tif 000008
【図５】
2008084341.tif 000009
【図６】
2008084341.tif 000010
【図７】
2008084341.tif 000011
【図８】
2008084341.tif 000012
【図９】
2008084341.tif 000013
【図１０】
2008084341.tif 000014
【図１１】
2008084341.tif 000015
【図１２】
2008084341.tif 000016
【図１３】
2008084341.tif 000017
【図１４】
2008084341.tif 000018
【図１５】
2008084341.tif 000019
【図１６】
2008084341.tif 000020
【図１７】
2008084341.tif 000021
【図１８】
2008084341.tif 000022
【図１９】
2008084341.tif 000023
【図２０】
2008084341.tif 000024
【図２１】
2008084341.tif 000025
【図２２】
2008084341.tif 000026
【図２３】
2008084341.tif 000027
【図２４】
2008084341.tif 000028
【図２５】
2008084341.tif 000029
【図２６】
2008084341.tif 000030
【図２７】
2008084341.tif 000031
【図２８】
2008084341.tif 000032
【図２９】
2008084341.tif 000033
【図３０】
2008084341.tif 000034
【図３１】
2008084341.tif 000035
【図３２】
2008084341.tif 000036
【図３３】
2008084341.tif 000037
【図３４】
2008084341.tif 000038
【図３５】
2008084341.tif 000039
【図３６】
2008084341.tif 000040
【図３７】
2008084341.tif 000041
【図３８】
2008084341.tif 000042
【図３９】
2008084341.tif 000043
【図４０】
2008084341.tif 000044