(57)【特許請求の範囲】
【請求項１】
記憶装置のデータベース領域に格納すべきＸＭＬデータのスキーマ情報に基づいてエレメント毎に一つのテーブルを作成し、該テーブルにスキーマ情報に従ったデータを格納する方法であって、
データの格納は、ルートエレメントから順にたどって各テーブルに格納し、格納したデータにはすべてのエレメントに対して一意の値となるように出現順序情報を付加し、各テーブルにはダウングリップカラムとアップグリップカラムを作成し、ダウングリップカラムに前記出現順序情報を入れ、前記アップグリップカラムには当該データと親子関係にある親データのダウングリップカラムの出現順序情報を割り当ててデータ間のリンク関係をつけたことを特徴とするＸＭＬデータの格納方法。
【請求項２】
テーブルには、エレメントの内容および属性情報を入れるカラムを作成する請求項１に記載のＸＭＬデータの格納方法。
【請求項３】
テーブルは、データ間の親子関係情報を入れるカラムを有する請求項１に記載のＸＭＬデータの格納方法。
【請求項４】
各テーブルはルートエレメントからの階層の深さを表すレベルカラムを作成し、該レベルカラムにレベル値を格納する請求項１乃至３のいずれかの項に記載のＸＭＬデータの格納方法。
【請求項５】
エレメント間の親子関係情報を、前記テーブルとは別に記憶装置に保存する請求項１に記載のＸＭＬデータの格納方法。
【請求項６】
テータベース領域に作成されたフォルダ内にスキーマ情報とテーブルが保存される請求項１乃至４のいずれかの項に記載のＸＭＬデータの格納方法。
【請求項７】
異なるスキーマ情報に応じて別のフォルダを作成する請求項６に記載のＸＭＬデータの格納方法。
【請求項８】
ＸＭＬデータを読み込み、読み込んだＸＭＬデータのスキーマ情報に基づいて、記憶装置のデータベース領域にエレメント毎に一つのテーブルを作成し、作成したテーブルにデータを登録する処理手段を備え、
該処理手段によるデータの登録は、ルートエレメントから順にたどって各テーブルに格納し、格納したデータにはすべてのエレメントに対して一意の値となるように出現順序情報を付加し、各テーブルにはダウングリップカラムとアップグリップカラムを作成し、ダウングリップカラムに前記出現順序情報を入れ、前記アップグリップカラムには当該データと親子関係にある親データのダウングリップカラムの出現順序情報を割り当ててデータ間のリンク関係をつけたことを特徴とするＸＭＬデータの格納装置。
【請求項９】
テーブルには、エレメントの内容および属性情報を入れるカラムを作成する請求項８に記載のＸＭＬデータの格納装置。
【請求項１０】
テーブルは、データ間の親子関係情報を入れるカラムを有する請求項８に記載のＸＭＬデータの格納装置。
【請求項１１】
各テーブルはルートエレメントからの階層の深さを表すレベルカラムを作成し、該レベルカラムにレベル値を格納する請求項８乃至１０のいずれかの項に記載のＸＭＬデータの格納装置。
【請求項１２】
処理手段は、エレメント間の親子関係情報を、前記テーブルとは別に記憶装置上に記憶する請求項８に記載のＸＭＬデータの格納装置。
【請求項１３】
処理手段は、データが保存されるテーブルを、テータベース領域に作成されたフォルダ内にスキーマ情報と共に保存する請求項８乃至１１のいずれかの項に記載のＸＭＬデータの格納装置。
【請求項１４】
異なるスキーマ情報に応じて別のフォルダを作成する請求項１３に記載のＸＭＬデータの格納装置。
【請求項１５】
記憶装置のデータベース領域に格納すべきＸＭＬデータのスキーマ情報に基づいてエレメント毎に一つのテーブルを作成するステップと、
該テーブルに前記スキーマ情報に従ったデータを格納するステップとを有し、
データの格納は、ルートエレメントから順にたどって各テーブルに格納し、格納したデータにはすべてのエレメントに対して一意の値となるように出現順序情報を付加し、各テーブルにはダウングリップカラムとアップグリップカラムを作成し、前記ダウングリップカラムに前記出現順序情報を入れ、前記アップグリップカラムには当該データと親子関係にある親データのダウングリップカラムの出現順序情報を割り当ててデータ間のリンク関係をつけることを特徴とするＸＭＬデータの格納方法をコンピュータに実行させるためのプログラム。
【請求項１６】
テーブルを作成する際に、エレメントの内容および属性情報を入れるカラムを作成する請求項１５に記載のプログラム。
【請求項１７】
テーブルを作成する際に、データ間の親子関係情報を入れるカラムを作成する請求項１５または１６に記載のプログラム。
【請求項１８】
テーブルを作成する際に、ルートエレメントからの階層の深さを表すレベルカラムを作成し、該レベルカラムにレベル値を格納する請求項１５乃至１７のいずれかの項に記載のプログラム。
【請求項１９】
エレメント間の親子関係情報を、前記テーブルとは別に記憶装置上に記憶するステップを有する請求項１５に記載のプログラム。
【請求項２０】
記憶装置のデータベース領域にフォルダを作成し、該フォルダにテーブルとスキーマ情報とを保存する請求項１５乃至１８のいずれかの項に記載のプログラム。
【請求項２１】
異なるスキーマ情報に応じて別のフォルダを作成する請求項１５乃至１８のいずれかの項に記載のプログラム。
【請求項２２】
請求項１５乃至２１のいずれかの項に記載のプログラムを記録したコンピュータ読取可能な記録媒体。
【請求項２３】
記録装置のデータベース領域に格納すべきＸＭＬデータのスキーマ情報に基づいてエレメント毎に一つのテーブルを作成され、該テーブルに前記スキーマ情報に従ったデータが格納され、
データの格納は、ルートエレメントから順にたどって各テーブルに格納し、格納したデータにはすべてのエレメントに対して一意の値となるように出現順序情報を付加し、各テーブルにはダウングリップカラムとアップグリップカラムを作成し、ダウングリップカラムに前記出現順序情報を入れ、前記アップグリップカラムには当該データと親子関係にある親データのダウングリップカラムの出現順序情報を割り当ててデータ間のリンク関係をつけたことを特徴とする表形式のＸＭＬデータの格納構造。
【請求項２４】
テーブルは、エレメントの内容および属性情報を入れるカラムを有する請求項２３に記載の表形式のＸＭＬデータの格納構造。
【請求項２５】
テーブルには、データ間の親子関係情報を入れるカラムを有する請求項２３または２４に記載のＸＭＬデータの格納構造。
【請求項２６】
各テーブルはルートエレメントからの階層の深さを表すレベルカラムが作成され、該レベルカラムにレベル値が格納されている請求項２３乃至２５のいずれかの項に記載の表形式のＸＭＬデータの格納構造。
【請求項２７】
エレメント間の親子関係情報が、前記テーブルとは別に記憶装置に保存されている請求項２３に記載の表形式のＸＭＬデータの格納構造。
【請求項２８】
テータベース領域に作成されたフォルダ内にスキーマ情報とテーブルが保存されている請求項２３乃至２６のいずれかの項に記載の表形式のＸＭＬデータの格納構造。
【請求項２９】
異なるスキーマ情報に応じて別のフォルダを作成されている請求項２８に記載の表形式のＸＭＬデータの格納構造。
【請求項３０】
請求項２３乃至２９のいずれかの項に記載の構造の表形式のＸＭＬデータを記録したコンピュータ読取可能の記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＸＭＬ（拡張可能なマーク付け言語；Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記述された階層構造を有するＸＭＬデータのデータベースに関するもので、特に、ＸＭＬデータを表形式のテーブルに格納する場合の格納技術に関する。
【０００２】
【従来の技術】
ＸＭＬデータをデータベース管理システムに格納し、また格納したデータを高速に検索する仕組みは、従来から様々な手法がとられてきた。
ＸＭＬデータをリレーショナルモデルに基づき格納する場合は、基本的に３つの方法が考えられる。
【０００３】
第１は、一つのＸＭＬデータを一つの文字列データとして格納する方法である。
この場合、基本的にはＸＭＬデータを格納するために設けたテーブルの特定のカラムに、ＸＭＬデータ全体が一つの文字列データとして格納される。
また、主に検索性能を向上させる目的で、ＸＭＬデータを文字列として格納するカラムとは別に同じテーブルに検索用のカラムを用意し、検索に使用するＸＭＬデータ中のエレメントまたは属性の値をあらかじめ抽出して当該カラムに格納しておく手法なども、同時に用いられることがある。
【０００４】
第２は、ＸＭＬデータの各エレメントと属性を分解し、あらかじめターゲットとなるＸＭＬ専用に設計し作成してある複数のテーブルの各カラムに、それぞれ対応させて格納する方法である。
この場合、全てのエレメント・属性の値を分解して格納する方法のほか、必要なエレメント・属性の値のみを抽出して格納する方法がある。後者の場合は、第１の方法と組み合わせて使用する場合もある。
【０００５】
第３は、ＸＭＬデータのエレメントまたは属性の情報を格納するテーブルと、エレメント間の親子関係を表わすリンク情報を格納するテーブルに分ける方法である。
リレーショナルデータベースにおいては、検索を高速化するために、検索対象となるエレメントまたは属性の値のインデックス情報を別途作成しておき、検索の際には最初にインデックス情報を参照して目的のデータを探す手法が一般的に用いられる。
【０００６】
【発明が解決しようとする課題】
第１の方法の問題点は、データベースにおいてはＸＭＬデータ全体を一つの文字列情報として扱うため、検索を高速化するためには特殊なインデックスなどをあらかじめ作成しておく必要があり、一つでも情報が変化した場合はインデックスを作成しなおす必要がある。
また、特定の位置にあるエレメントまたは属性の値についての範囲検索や集計などを高速に処理することが困難であるほか、エレメントや属性の値のデータ型が文字型に限定されてしまうなどの問題がある。
【０００７】
第２の方法の問題点は、格納対象となるＸＭＬデータの構造にしたがってあらかじめデータベースを設計しておく必要があるため、ＸＭＬデータの構造が変化すると設計からやり直す必要があり、ＸＭＬデータの持つ自由度や柔軟性を大きく阻害してしまうことである。
また、一般的に木構造を持つＸＭＬデータをリレーショナルモデルに対応付けることは技術的にも難しく、その結果として検索性能を向上させることも難しいものになる。
【０００８】
第３の方法の問題点は、特定の位置にあるエレメントまたは属性の情報を探すために毎回リンク情報を辿って行く必要があることで、ＸＭＬデータ構造や検索内容によってはリンクを何度も辿る必要があり、一般的に高速な検索処理を行うことが難しい。また第１の方法と同様に比較的多くのＸＭＬデータ構造に柔軟に対応できる半面、数値型や文字型などデータ型のバリエーションを持たせることは困難である。
その他の関連する技術としては、たとえば、特開２００２−７３５８９号、特開２００１−３４６１８号、特開２００１−３１８９３５号、特開２００１−２８２８５６号、特開２００１−１９５４０６号公報等がある。
【０００９】
本発明は、上記した従来技術の課題を解決するためになされたもので、その目的とするところは、ＸＭＬデータの持つ自由度や柔軟性を大きく阻害することないＸＭＬデータの格納方法および格納装置、並びにプログラムおよびプログラムを記録した記録媒体、さらに表形式のＸＭＬデータの格納構造及びデータを格納した記録媒体を提供することにある。
【００１０】
【課題を解決するための手段】
上記目的を達成するために、本発明のＸＭＬデータの格納方法は、記憶装置のデータベース領域に格納すべきＸＭＬデータのスキーマ情報に基づいてエレメント毎に一つのテーブルを作成し、テーブルに前記スキーマ情報に従ったデータを格納することを特徴とする。
ＸＭＬデータとは、周知のＸＭＬで記述された階層構造を有するデータであり、エレメント（要素）を単位とし、エレメントはデータにその内容を示すタグを付けて記述される。エレメントをグループ化することによってエレメントの階層構造が表現され、全体として木構造（ツリー構造）のモデルで表現できるデータである。
【００１１】
使用するエレメントやデータ内容、エレメントの属性、エレメント間の親子兄弟関係等の規則をスキーマとして設計される。スキーマの記述方法としては、たとえばＤＴＤ等が定められているが、ＤＴＤに即した記述に限定されるものではなく、ＸＭＬ  Ｓｃｈｅｍａ等、種々の言語を用いることができる。
ＸＭＬデータはＤＴＤの記述を不要にすることができるが、この発明では、スキーマ情報が記述されていることが前提であり、スキーマ情報に基づいてテーブルを作成し、同じスキーマ情報に基づくＸＭＬデータを格納するようにしたものである。
テーブルには、エレメントの内容および属性情報を入れるカラム、データ間の親子関係情報を入れるカラムを作成する。
【００１２】
データの格納は、ルートエレメントから順にたどって各テーブルに格納し、格納したデータには出現順序情報を付加する。
各テーブルにはダウングリップカラムとアップグリップカラムを作成し、ダウングリップカラムに前記出現順序情報を入れ、前記アップグリップカラムには当該データと親子関係にある親データのダウングリップカラムの出現順序情報を割り当ててデータ間のリンク関係をつけたことを特徴とする。
各テーブルはルートエレメントからの階層の深さを表すレベルカラムを作成し、レベルカラムにレベル値を格納することが好適である。
エレメント間の親子関係情報を、前記テーブルとは別に記憶装置に保存することが好ましい。
テータベース領域に作成されたフォルダ内にスキーマ情報とテーブルが保存される構成とする。異なるスキーマ情報に応じて別のフォルダを作成しておけば、複数のスキーマ情報に対応可能である。
【００１３】
本発明は、上記ＸＭＬデータの格納方法を実施する上で好適なデータ格納装置も提供する。
すなわち、本発明のデータ格納装置は、ＸＭＬデータを読み込み、読み込んだＸＭＬデータのスキーマ情報に基づいて、記憶装置のデータベース領域にエレメント毎に一つのテーブルを作成し、作成したテーブルにデータを登録する処理手段を備えていることを特徴とする。
テーブルには、エレメントの内容および属性情報を入れるカラム、データ間の親子関係情報を入れるカラムを作成する。
【００１４】
データの格納は、ルートエレメントから順にたどって各テーブルに格納し、格納したデータには出現順序情報を付加する。
各テーブルにはダウングリップカラムとアップグリップカラムを作成し、ダウングリップカラムに前記出現順序情報を入れ、前記アップグリップカラムには当該データと親子関係にある親データのダウングリップカラムの出現順序情報を割り当ててデータ間のリンク関係がつけられる。
各テーブルにはルートエレメントからの階層の深さを表すレベルカラムを作成し、該レベルカラムにレベル値を格納する。
処理手段は、エレメント間の親子関係情報を、前記テーブルとは別に記憶装置上に記憶するようにしてもよい。
また、データが保存されるテーブルを、テータベース領域に作成されたフォルダ内にスキーマ情報と共に保存するようにし、さらに、異なるスキーマ情報に応じて別のフォルダを作成することが好適である。
【００１５】
本発明は、上記ＸＭＬデータの格納方法をコンピュータに実行させるためのプログラムおよびこのプログラムを記録したコンピュータ読取可能な記録媒体も提供する。
すなわち、記憶装置のデータベース領域に格納すべきＸＭＬデータのスキーマ情報に基づいてエレメント毎に一つのテーブルを作成するステップと、テーブルに前記スキーマ情報に従ったデータを格納するステップとを有する。
テーブルを作成する際に、エレメントの内容および属性情報を入れるカラム、また、データ間の親子関係情報を入れるカラムを作成する。
データの格納は、ルートエレメントから順にたどって各テーブルに格納し、格納したデータには出現順序情報を付加する。
【００１６】
各テーブルにはダウングリップカラムとアップグリップカラムを作成し、ダウングリップカラムに前記出現順序情報を入れ、前記アップグリップカラムには当該データと親子関係にある親データのダウングリップカラムの出現順序情報を割り当ててデータ間のリンク関係をつける。
また、テーブルを作成する際に、ルートエレメントからの階層の深さを表すレベルカラムを作成し、該レベルカラムにレベル値を格納することが好適である。
また、エレメント間の親子関係情報を、前記テーブルとは別に記憶装置上に記憶するステップを有する。
記憶装置のデータベース領域にフォルダを作成し、該フォルダにテーブルとスキーマ情報とを保存する。異なるスキーマ情報に応じて別のフォルダを作成する。
【００１７】
さらに、本発明は、上記ＸＭＬデータの格納方法を用いて格納された表形式のＸＭＬデータの格納構造および表形式のＸＭＬデータを記録したコンピュータ読取可能な記録媒体についても提供する。
すなわち、本発明の表形式のＸＭＬデータの格納構造は、記憶装置のデータベース領域にデータ格納すべきＸＭＬデータのスキーマ情報に基づいてエレメント毎に一つのテーブルを作成され、該テーブルに前記スキーマ情報に従ったデータが格納された構造となっている。
テーブルは、エレメントの内容および属性情報を入れるカラムを有する。
テーブルには、データ間の親子関係情報を入れるカラムを有する。
【００１８】
データは、ルートエレメントから順にたどって各テーブルに格納され、格納したデータには出現順序情報が付加されている。
各テーブルにはダウングリップカラムとアップグリップカラムが作成され、ダウングリップカラムに前記出現順序情報を入れ、前記アップグリップカラムには当該データと親子関係にある親データのダウングリップカラムの出現順序情報を割り当ててデータ間のリンク関係がつけられていることを特徴とする。
各テーブルはルートエレメントからの階層の深さを表すレベルカラムが作成され、該レベルカラムにレベル値が格納されている。
エレメント間の親子関係情報が、前記テーブルとは別に記憶装置に保存されている。
テータベース領域に作成されたフォルダ内にスキーマ情報とテーブルが保存されている。また、異なるスキーマ情報に応じて別のフォルダが作成されている。
【００１９】
【発明の実施の形態】
以下に本発明を図示の実施の形態に基づいて説明する。
図１（Ａ）は、本発明のＸＭＬデータを格納方法が適用される装置構成を概念的に示している。
このＸＭＬデータ格納装置は、データを記憶するデータベース領域４０１を備えた記憶装置４００と、ＸＭＬデータ１００のスキーマ情報が記述されたＤＴＤ１０１（文書型定義；Ｄｏｃｕｍｅｎｔ  Ｔｙｐｅ  Ｄｅｆｉｎｉｔｉｏｎ）で定義されているエレメント毎に記憶装置４００のデータベース領域４０１にテーブル２００，２０１，２０２を作成し、実際のタグ付きデータが記述されたデータ本体部１０２のデータを対応する各テーブル２００，２０１，２０２に振り分けて格納するようにプログラムされたコンピュータの主制御部３００とを備えた構成となっている。テータベース領域４０１にはフォルダ４０２が作成され、このフォルダ４０２内にＤＴＤ１０１と共に各テーブル２００，２０１，２０２が作成される。
主制御部３００は、特に図示しないが、通常のコンピュータのマイクロプロセッサ（ＣＰＵ）とＲＡＭ等の主記憶装置を含む構成で、主記憶装置に読み込まれたプログラムに従ってデータが処理される。プログラムは一般的にはハードディスク等の補助記憶装置に記憶され、処理実行時に主記憶装置に読み出されて実行される。
テーブル２００，・・・が作成される記憶装置４００についてもＲＡＭ等の主記憶装置が用いられる。
【００２０】
図示例では、親子関係にあるルート（ｒｏｏｔ），チャイルド（ｃｈｉｌｄ），グランドチャイルド（ｇｒｃｈｉｌｄ）の３つのエレメントに対応して、３つのテーブル２００，２０１，２０２が作成される場合が示されている。
ＸＭＬはスキーマ情報としてＤＴＤ等の記載を不要とすることができる構造化データ記述言語であるが、本発明で扱うＸＭＬデータ１００は、スキーマ情報を必要とする。スキーマ情報としては、ＤＴＤ１０１に限定されるものではなく、ＸＭＬ  ＳｃｈｅｍａやＲＥＬＡＸ  ＮＧなどの他のスキーマ言語を用いた情報でもよい。図１（Ａ）において、ＤＴＤ１０１が必要となるのは、最初にフォルダ４０２を作成する際のみで、ＸＭＬデータを格納する際には不要である。
【００２１】
図１（Ｂ）には、テーブルに作成されるカラムが例示されている。
属性（attr-）カラムＣ１には属性値が格納される。属性省略時にはＮＵＬＬ値を格納する。
テキスト（ｔｅｘｔ）カラムＣ２には、テキスト値が格納される。このテキストカラムは、テキスト値を持つ場合のみ記入される。
ダウングリップ（ｄｏｗｎ−ｇｒｉｐ）カラムＣ３には、データ本体部１０２のデータ出現順に出現順序情報として順番号が割り当てられる。
アップグリップ（ｕｐ−ｇｒｉｐ）カラムＣ４には、対応する親エレメントのダウングリップの値が格納される。
ネーム（ｎａｍｅ）カラムＣ５は、ＸＭＬ文書のドキュメント名であり、ルートエレメントにのみ記載される。
親（ｐａｒｅｎｔ）要素カラムＣ６には、親要素のエレメント名を格納する。
レベルカラム（ｌｅｖｅｌ）Ｃ７には、ルートエレメントからの階層の深さを表すレベル値が格納される。ルートエレメントであれば０、ルートエレメントの子であれば１となる。
【００２２】
図２（Ａ），（Ｂ）には、ＸＭＬデータのデータ各テーブルへの格納例が示されており、この格納手順を図９のフローチャートを参照して説明する。
ＸＭＬデータの格納手順は、まず、ＤＴＤを指定してフォルダ４０２内にテーブルを作成し、当該ＤＴＤに従うＸＭＬデータをフォルダ内のテーブルに順次格納していく。
まず、フォルダ作成手順を説明する（図９（Ａ）参照）。
すなわち、フォルダ作成開始を指示すると、処理装置３００のプログラムが実行されて、登録すべきＤＴＤ１０１を検索してＤＴＤ１０１を解析し（Ｓ−１）、ＤＴＤ１０１に基づいて、記憶装置４００のデータベース領域４０１にエレメント毎にテーブルを作成する（Ｓ−２）。次いで、テーブルの親子関係を設定し（Ｓ−３）、フォルダ作成が終了する。
たとえば、テーブルは、図２に示すように、ルートテーブル２００，チャイルドテーブル２０１およびグランドチャイルドテーブル２０２が生成され、データベース領域４０１にはフォルダ４０２が作成され、フォルダ４０２にＤＴＤ１０１と各テーブル２００，２０１，２０２が作成される。
ルートテーブル２００には、アップグリップカラムＣ４、ダウングリップカラムＣ３、名前カラムＣ５、親要素カラムＣ６、レベルカラムＣ７が作成され、チャイルドテーブル２０１には、アップグリップカラムＣ４、ダウングリップカラムＣ３、テキストカラムＣ２、親要素カラムＣ６、レベルカラムＣ７が作成される。また、グランドチャイルドテーブル２０２には、アップグリップカラムＣ４、ダウングリップカラムＣ３、属性カラムＣ１、親要素カラムＣ６、レベルカラムＣ７が作成される。
【００２３】
テーブルを作成した後、ＸＭＬデータ登録を行う（図９（Ｂ）参照）。
すなわち、登録開始を指示すると、処理装置３００のプログラムが実行され、格納すべきＸＭＬデータ１００を解析し（Ｓ−１１）、エレメントを取得してエレメントと属性のデータを対応するテーブルに格納する（Ｓ−１２，Ｓ−１３）。
エレメントの取得とテーブルへの格納は、ＸＭＬデータのデータ本体部１０２のデータをルートからたどり、タグ名を参照して対応するテーブルを選択し、属性値があれば属性値を属性カラムに格納し、テキストデータがあればテキストカラムに格納する
ダウングリップカラムには、エレメント出現順に若い値から割り当てる。すべてのエレメントに対して一意の値となる。アップグリップカラムには、当該エレメントの親エレメントに割り当てられたダウングリップの値となる。同じ値のアップグリップを持つエレメントが複数存在する場合、それらの出現順はダウングリップの若い順となっている。
ダウングリップに対応するアップグリップを持つ子エレメントが存在しない場合には、子が無いことを表す。
次に全エレメントが終了したかどうかを判断し（Ｓ−１４）、全エレメントの格納が終了していなければ次のエレメントを取得し、データ格納手順を繰り返す。
全エレメントのデータの格納が終了した場合には、登録すべき全ＸＭＬデータの格納が終了したがどうかが判断され（Ｓ−１５）、全ＸＭＬデータの格納が終了していなければ次のＸＭＬデータを解析して（Ｓ−１１）、データの格納手順を繰り返す。全ＸＭＬデータの格納が終了した場合には、登録処理を終了する。
【００２４】
図２に示す例では、１行目のルートタグからルートテーブル２００を選択し、ルートテーブル２００のダウングリップカラムに”０”、アップグリップカラムＣ４に対応する親エレメントが無いことを示す”−１”を格納し、さらに名前カラムＣ５に文書名として”ｆａｍｉｌｙ．ｘｍｌ”、レベルカラムＣ７に”０”を格納する。
次に、２行目のチャイルドタグからチャイルドテーブル２０１を選択し、このチャイルドテーブル２０１のダウングリップカラムＣ３に”１”、アップグリップカラムＣ４に”０”を記入し、テキストカラムＣ２に”Ｓｍｉｔｈ”、親エレメントカラムＣ６に”ｒｏｏｔ”、レベルカラムＣ７に”１”を記入する。
【００２５】
次に、３行目のグランドチャイルドタグからグランドチャイルドテーブル２０２を選択し、このグランドチャイルドテーブル２０２のダウングリップカラムＣ３に”２”、属性カラムＣ１に”１０”、テキストカラムＣ２に”Ｂｏｂ”、親エレメントカラムに”ｃｈｉｌｄ”、レベルカラムＣ７に”２”を記入する。
次に、４行目のグランドチャイルドタグからグランドチャイルドテーブル２０２を選択し、このグランドチャイルドテーブル２０２のダウングリップカラムＣ３に”３”、属性カラムＣ１に”８”、テキストカラムＣ２に”Ｍａｙ”、親エレメントカラムに”ｃｈｉｌｄ”、レベルカラムＣ７に”２”を記入する。
データ本体部１０２のデータを全てたどり終えると、登録処理を終了する。
【００２６】
このように、フォルダに格納したＸＭＬデータは、エレメントの内容、属性、階層構造、エレメントの出現順序等の情報がすべて登録されることになり、フォルダに保存された表形式のデータを、ＸＭＬデータに再現することも可能である。
なお、ＸＭＬデータ１００を登録する前に、ＤＴＤによる妥当性検証（Ｖａｌｉｄｉａｔｉｏｎ）を行うようにしてもよい。
【００２７】
以上の格納方法を実行するためのプログラムは、一般的にはコンピュータのハードディスク等の記憶装置に格納され、処理実行時にコンピュータの主記憶装置に読み込まれて実行される。
プログラムは、ＣＤ−ＲＯＭ，ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ等、種々の記録媒体に格納することができるし、ネットワークを介して配信することもできる。
【００２８】
エレメント間の親子関係については、データテーブルとは別にメモリ上に格納する。
図７にはエレメントの親子関係を付ける一例を示している。
図示例は、テーブル５００にリンク関係を記憶した例で、テーブル５００には、エレメント名カラム５０１と、テーブル名に一連の番号を順番に付けるテーブル番号カラム５０２と、各テーブルに対して親となるテーブルの番号を格納する親カラム５０３と、各テーブルの子となるテーブルの番号を格納する子カラム５０４とが設けられている。この親子関係のデータは、各フォルダ４０２に対応付けられて管理されている。
【００２９】
図示例では、エレメント名カラム５０１に”ルート（ｒｏｏｔ）”、”チャイルド（ｃｈｉｌｄ）”、”グランドチャイルド（ｇｒｃｈｉｌｄ）”を格納し、その横の番号カラムに、０、１、２と固有の番号を付ける。
そして、テーブルの１行目のルートエレメントについては、親カラムに”０”、子カラムに”１”を格納する。
テーブル５００の２行目のチャイルドエレメントについては、親カラムに”１”、子カラムに”２”を格納する。
テーブルの３行目のグランドチャイルドエレメントについては、親カラムに”１”、子カラムに”３”（不図示の次のエレメント）を格納する。
このようにすれば、各テーブル間の親子関係を付けることができる。
【００３０】
図３乃至図５には、より具体的なＸＭＬデータの格納例を例示している。
図３はテーブル作成工程を示している。
すなわち、ＤＴＤ１０１のスキーマ情報に基づいて、ウェザデータエレメント（ｗｅａｔｈｅｒ＿ｄａｔａ）に対応するウェザデータテーブル２１０と、ウェザエレメント（ｗｅａｔｈｅｒ）に対応するウェザテーブル２１１が作成される。
【００３１】
ウェザデタテーブル２１０には、アップグリップ（ｕｐ−ｇｒｉｐ）カラムＣ４，ダウングリップ（ｄｏｗｎ−ｇｒｉｐ）カラムＣ３、名前（ｎａｍｅ）カラムＣ５、親要素（ｐａｒｅｎｔ）カラムＣ６、レベル（ｌｅｖｅｌ）カラムＣ７の５つのカラムが作成される。
ウェザテーブル２１１には、属性−日（ａｔｔｒ−ｄａｙ）カラムＣ１１、属性−月（ａｔｔｒ−ｍｏｎｔｈ）カラムＣ１２、テキスト（ｔｅｘｔ）カラムＣ２、アップグリップ（ｕｐ−ｇｒｉ）カラムＣ４、ダウングリップ（ｄｏｗｎ−ｇｒｉｐ）カラムＣ３、親要素（ｐａｒｅｎｔ）カラムＣ６、レベル（ｌｅｖｅｌ）カラムＣ７の７つのカラムが作成される。
【００３２】
図４は、ＸＭＬデータの格納状態を示している。
すなわち、ＸＭＬデータのデータ本体部１０２をルートから順にたどり、各エレメントについて、対応するテーブルに格納する。
まず、タグ付きデータが記載された１行目のエレメントのルートタグからウェザデータテーブル２１０を選択し、ウェザデータテーブル２１０のダウングリップカラムに”０”、アップグリップカラムＣ４に対応する親エレメントが無いことを示す（−１）を記入し、さらに名前カラムＣ５に文書名として”ｗａｔｈｅｒ＿ｄａｔａ．ｘｍｌ”、レベルカラムＣ７に”０”を記入する。
第２行はウェザエレメントなので、ウェザテーブル２１１にデータを格納する。
すなわち、属性−月カラムＣ１２が”３”、属性−日カラム１１の値が”１”、テキストカラムＣ２に”晴れ”（Ｆｉｎｅ）、アップグリップとして”０”、ダウングリップとして”１”、親要素カラムＣ６にウェザデータ（ｗｅａｔｈｅｒ＿ｄａｔａ）、レベルカラムＣ７にレベル値として１を格納する。
【００３３】
第３行もウェザエレメントなので、ウェザテーブルにデータを格納する。
属性−月の値が”３”、属性−日の値が”２”、テキスト値として”曇り”（Ｃｌｏｕｄ）、アップグリップとして”０”、ダウングリップとして”２”、親要素カラムＣ６に”ウェザデータ”、レベルカラムに”１”を格納する。
以下、第４行から第９行までウェザエレメントであり、同様にしてウェザテーブル２１１の次の行に順番に格納する。
ダウングリップカラムＣ３には、エレメント出現順に１から９まで割り当てられており、すべてのエレメントに対して一意の値となる。アップグリップは、当該エレメントの親エレメントであるウェザデータエレメント２１０に割り当てられたダウングリップの値（０）である。
ダウングリップＣ３に対応するアップグリップを持つ子エレメントが存在しない場合には、子が無いことを表す。
図５は、ＤＴＤを共通とする別のＸＭＬデータを追加する場合を示している。
図ではデータは記載していないが、ウェザデータテーブルの２行目に、ダウングリップが”１０”として、文書名（ｗａｔｈｅｒ２．ｘｍｌ）が入り、以下、不図示のデータが各テーブルに追加される。
【００３４】
図６は、ＸＭＬデータに再帰的に同じ名前のエレメントが現れる場合のテーブル格納例である。このような再帰的な構造の場合、レベルカラムが有効となる。
図示例では、図６（Ａ）に示すように、チャイルドエレメントが再帰的に現れる構成となっている。
特に、ＤＴＤを記載しないが、テーブルはＤＴＤに基づいて作成する点は上記した例と同様であり、ルート（ｒｏｏｔ）テーブル２２０と、チャイルド（ｃｈｉｌｄ）テーブル２２１と、ネーム（ｎａｍｅ）テーブル２２２とが作成される（同図（Ｂ），（Ｃ），（Ｄ）参照）。カラムについては、図１（Ｂ）に示したカラムが作成される。説明を分かりやすくするために、図６（Ａ）にはダウングリップの値を付し、図６（Ｅ）にツリー構造を示す。
【００３５】
まず、１行目のルートタグからルートテーブル２００を選択し、ルートテーブル２００のダウングリップカラムに”０”、アップグリップカラムＣ４に対応する親エレメントが無いことを示す”−１”を記入する。レベルカラムは”０”である。
次に、２行目のチャイルドタグからチャイルドテーブル２０１を選択し、このチャイルドテーブル２０１のダウングリップカラムＣ３に１、アップグリップカラムＣ４に０を格納する。
次に、３行目の名前タグから名前テーブルを選択し、名前テーブルの１行目のダウングリップカラムに”２”、アップグリップカラムに”１”、テキストカラムに”Ｂｏｂ”、親エレメントカラムに”ｒｏｏｔ”、レベルカラムＣ７に”１”を格納する。
【００３６】
次に、４行目のチャイルドタグからチャイルドテーブル２０１を選択し、このチャイルドテーブル２０２の２行目に、ダウングリップカラムＣ３に”３”、アップグリップカラムＣ４に”１”、レベルカラムに”２”を格納する。
次に、５行目の名前タグから名前テーブルを選択し、名前テーブルの２行目のダウングリップカラムに”４”、アップグリップカラムに”３”、テキストカラムに”Ｓｍｉｔｈ”、レベルカラムＣ７に”３”を格納する。
次に、７行目のチャイルドタグからチャイルドテーブル２０１を選択し、このチャイルドテーブル２０２の３行目の、ダウングリップカラムＣ３に”５”、アップグリップカラムＣ４に”１”、レベルカラムに”２”を格納する。
【００３７】
次に、８行目の名前タグから名前テーブルを選択し、名前テーブルの３行目のダウングリップカラムＣ３に”６”、アップグリップカラムに”５”、テキストカラムに”Ｍａｒｙ”、レベルカラムＣ７に”３”を格納する。
次に、９行目のチャイルドタグからチャイルドテーブル２０１を選択し、このチャイルドテーブル２０２の４行目の、ダウングリップカラムＣ３に”７”、アップグリップカラムＣ４に”５”、レベルカラムＣ７に”３”を格納する。
次に、１０行目の名前タグから名前テーブルを選択し、名前テーブルの４行目のダウングリップカラムＣ３に”８”、アップグリップカラムに”７”、テキストカラムに”Ｂｅｔｈ”、レベルカラムＣ７に”４”を格納する。
このＸＭＬデータの場合には、チャイルドエレメントの中に何階層同じものがでてくるのか分からないような構造であり、レベルカラムＣ７が無いと、チャイルドテーブルの各データの階層がルートエレメントからどの深さにあるかは、同一テーブル内のダウングリップカラムとアップグリップカラムをすべてたどらないと分からない。レベルカラＣ７ムを設けておけば、着目するデータの階層が直ぐに判定できる。
【００３８】
なお、上記実施の形態では、一つのスキーマに従ったＸＭＬデータを格納する場合について説明したが、異なるスキーマ情報を有するＸＭＬデータについても、記憶装置に専用のテーブルを作成することによって格納することができる。
図８には、スキーマ情報の異なるＸＭＬデータ１００Ａ，１００Ｂの格納構成例を示している。
すなわち、異なるスキーマ情報に応じて別のフォルダ４０２Ａ，４０２Ｂを作成し、それぞれのフォルダ４０２Ａ，４０２ＢにＤＴＤ（Ａ），ＤＴＤ（Ｂ）と共に作成したテーブルセット２００Ａ，２００Ｂが保存される。
【００３９】
【発明の効果】
以上説明したように、本発明によれば、記憶装置のデータベース領域に格納すべきＸＭＬデータのスキーマ情報に基づいてデータの単位となるエレメント毎に一つのテーブルを作成し、テーブルに前記スキーマ情報に従ったデータを格納するようになっているので、同じスキーマのＸＭＬデータは過不足なくすべて格納することができる。
テーブルに、エレメントの内容および属性情報を入れるカラムの他に、データ間の親子関係情報を入れるカラムを有する構成としておけば、ＸＭＬデータの特徴である階層構造についてもテーブルに格納することができる。
データの格納は、ルートエレメントから順にたどって各テーブルに格納し、格納したデータには出現順序情報を付加する構成としておけば、データの出現順序についてもテーブルに格納可能となる。
【００４０】
特に、各テーブルにダウングリップカラムとアップグリップカラムを作成し、ダウングリップカラムに前記出現順序情報を入れ、前記アップグリップカラムには当該データと親子関係にある親データのダウングリップカラムの出現順序情報を割り当ててデータ間のリンク関係をつけたので、データ間の階層関係までテーブルに格納できる。
また、各テーブルはルートエレメントからの階層の深さを表すレベルカラムを作成し、レベルカラムにレベル値を格納するようにすれば、同じエレメント内でデータが階層関係になっている場合でも、ダウングリップおよびアップグリップをたどることなく、ルートからのレベルが直ぐに判定できる。
【００４１】
エレメント間の親子関係情報を、前記テーブルとは別に記憶装置に保存しておけば、エレメント間の親子関係情報を利用して迅速に検索処理が可能となる。
テータベース領域に作成されたフォルダ内にスキーマ情報とテーブルを保存しておけば、登録するＸＭＬデータがスキーマに合致しているかどうかの検証ができる。
異なるスキーマ情報に応じて別のフォルダを作成しておけば、スキーマの異なるＸＭＬデータを整理して保存できる。
【図面の簡単な説明】
【図１】図１（Ａ）は本発明の実施の形態に係るＸＭＬデータの格納装置の概略構成を示す図、図１（Ｂ）は同図（Ａ）の記憶装置のテーブルに形成されるカラムの種類を示す図である。
【図２】図２（Ａ）はＤＴＤのデータとテーブルの関係を示す図、同図（Ｂ）はＸＭＬデータのデータ内容とテーブルのデータ格納状態を示す図である。
【図３】図３は他のＸＭＬデータのＤＴＤとテーブルの関係を示す図である。
【図４】図４はＸＭＬデータのテーブルへの格納状態を示す図である。
【図５】図５は図４のテーブルへ、さらに追加のＸＭＬデータを追加する場合の説明図である。
【図６】図６はレベルカラムの機能の説明で、同図（Ａ）はＸＭＬのデータ内容を示す図、同図（Ｂ）乃至（Ｄ）は各テーブルへのデータ格納状態を示す図、同図（Ｅ）はＸＭＬデータのツリー構造を示す図である。
【図７】図７はテーブル間の親子関係を示すテーブル構成例を示す図である。
【図８】図８は、図１の装置の異なるＤＴＤを有するＸＭＬデータの格納状態を示す図である。
【図９】図９（Ａ），（Ｂ）は図１の格納装置の処理手順を示すフローチャートである。
【符号の説明】
１００  ＸＭＬデータ
１０１  ＤＴＤ
１０２  データ本体部
２００，２０１，２０２  テーブル
３００  処理装置
４００  記憶装置
Ｃ１  属性カラム
Ｃ２  テキストカラム
Ｃ３  ダウングリップカラム
Ｃ４  アップグリップカラム
Ｃ５  ネームカラム
Ｃ６  親要素カラム
Ｃ７  レベルカラム
【図１】
0003560043.tif 000002
【図２】
0003560043.tif 000003
【図３】
0003560043.tif 000004
【図４】
0003560043.tif 000005
【図５】
0003560043.tif 000006
【図６】
0003560043.tif 000007
【図７】
0003560043.tif 000008
【図８】
0003560043.tif 000009
【図９】
0003560043.tif 000010