(57)【特許請求の範囲】
【請求項１】
ＸＭＬ(eXtensible Markup Language）データを表形式のデータに変換して所定の記憶手段に格納するデータ格納装置において、
入力された第１のＸＭＬデータ（221）の内部の繰り返し要素であってルート要素Ａの子要素Ｂでない要素Ｆを分離し、要素Ｆが取り除かれた第２のＸＭＬデータ（222）と、新たなＸＭＬデータに要素Ｆを追加した第３のＸＭＬデータ（223）とを作成する第１のデータ変換手段（202）と、
第２のＸＭＬデータ（222）の内部の再帰になっている要素Ｄを分離し、要素Ｄが取り除かれた第４のＸＭＬデータ（224）と、新たなＸＭＬデータに要素Ｄを追加した第５のＸＭＬデータ（225）とを作成する第２のデータ変換手段（203）と、
第４のＸＭＬデータ（224）の内部の３レベル以上入れ子になっている要素Ｅをルート要素Ａの子要素Ｂの子要素として移動して第６のＸＭＬデータ（226）を作成する第３のデータ変換手段（204）と、
第６のＸＭＬデータ（226）を第１のテーブルに格納し、第５のＸＭＬデータ（225）を第２のテーブルに格納し、第３のＸＭＬデータ（223）を第３のテーブルに格納するデータ格納手段（205）と
を備えることを特徴とするデータ格納装置。
【請求項２】
ＸＭＬ(eXtensible Markup Language）データを表形式のデータに変換して所定の記憶手段に格納するデータ格納装置において、
入力されたＸＭＬデータ（321）の内部の繰り返し要素である要素Ｃと文字列を分離し、新たなＸＭＬデータにルート要素Ａの子要素Ｂとその要素としての要素Ｃと文字列を、要素Ｂの順序位置を示す要素ＩＤとともに追加したＸＭＬデータ（323）を作成するデータ変換手段（302）と、
ＸＭＬデータ（323）をテーブルに格納し、かつその際、要素Ｃと文字列を要素ＩＤともに格納するデータ格納手段（303）と
を備えることを特徴とするデータ格納装置。
【請求項３】
ＸＭＬ(eXtensible Markup Language）データを表形式のデータに変換して所定の記憶手段に格納するデータ格納方法において、
入力された第１のＸＭＬデータ（221）の内部の繰り返し要素であってルート要素Ａの子要素Ｂでない要素Ｆを分離し、要素Ｆが取り除かれた第２のＸＭＬデータ（222）と、新規のＸＭＬデータに要素Ｆを追加した第３のＸＭＬデータ（223）とを作成する第１のデータ変換過程と、
第２のＸＭＬデータ（222）の内部の再帰になっている要素Ｄを分離し、要素Ｄが取り除かれた第４のＸＭＬデータ（224）と、新規のＸＭＬデータに要素Ｄを追加した第５のＸＭＬデータ（225）とを作成する第２のデータ変換過程と、
第４のＸＭＬデータ（224）の内部の３レベル以上入れ子になっている要素Ｅをルート要素Ａの子要素Ｂの子要素として移動して第６のＸＭＬデータ（226）を作成する第３のデータ変換過程と、
第６のＸＭＬデータ（226）を第１のテーブルに格納し、第５のＸＭＬデータ（225）を第２のテーブルに格納し、第３のＸＭＬデータ（223）を第３のテーブルに格納するデータ格納過程と
を含んでいることを特徴とするデータ格納方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、要素（タグ）の入れ子構造、繰り返し、再帰的構造を含むＸＭＬ（Extensible Markup Language）文書をテーブル形式のデータベースに格納する際に用いて好適なデータ格納装置及び方法に関する。
【０００２】
【従来の技術】
ＸＭＬ(eXtensible Markup Language；拡張可能なマーク付け言語)は、Ｗ３Ｃ(World Wide Web Consortium)で標準化が進められているＷｅｂ上で構造化文書をやりとりするためのデータフォーマットである。ＸＭＬは、ＳＧＭＬ(Standard Generalized Markup Language)[ISO 8879]の利用を前提とし、そのサブセットとして設計されている。ＸＭＬ文書は、ルートと呼ばれる文書実体から始まり、それぞれマーク付けされ、かつ入れ子構造を有している宣言、要素、コメント、文字参照および処理命令を含んでいる。各文書は一つ以上の要素を含み、各文書にはルートまたは文書要素という要素が一つだけ存在し、これは他の要素の内容に含まれない。各要素は、開始タグと終了タグで区切られ、入れ子構造をなしている。すべての要素は、その開始タグが他の要素の内容に含まれれば、対応する終了タグも同じ要素の内容に含まれる。また、要素Ｂが要素Ａの内容に含まれ、かつ要素Ａの内容に含まれる他の要素に含まれないとき、要素Ａを要素Ｂの親といい、要素Ｂを要素Ａの子という。
【０００３】
図１８を参照して、ＸＭＬ文書を構成するデータ（以下、ＸＭＬデータ）をテーブル形式のデータベースに格納するためのＸＭＬデータ格納方式について説明する。図１８において、データ格納手段４０１は、ＸＭＬデータ４２１の内容を解析し、ＸＭＬデータ４２１内に含まれる各要素を抽出してデータベース４０２内のテーブル４２２に格納する。ＸＭＬデータ４２１が図１９に示すような内容を有している場合を例にして、図１８に示すデータ格納手段４０１の動作について説明する。この場合、ＸＭＬデータ４２１は１つのルート要素４２１ａを持ち、要素４２１ａの子要素として、次の１つ下位の階層に要素４２１ｂ（４２１ｂ１，４２１ｂ２）の繰り返しを持っている。各要素４２１ｂ１，４２１ｂ２は、要素４２１ｃ，ｄ，ｅからなる同じ子要素の列をそれぞれ含んでいる。データ格納手段４０１はＸＭＬデータ４２１を入力として受け取り、要素４１２ａの各子要素４１２ｂ１，４１２ｂ２をテーブル４２２の行Ｂ０１，Ｂ０２に対応させて格納する。また各子要素４１２ｂ１，４１２ｂ２の子要素４１２ｃ〜ｅを各行の列Ｃ，Ｄ，Ｅに対応させて格納する。テーブル４２２の例を図２０に示す。
【０００４】
【発明が解決しようとする課題】
上述したような従来技術には、次のような問題点があった。第１の問題点は、要素４２１ａの子要素４２１ｂ１，２の子要素４２１ｃ〜ｅがさらに子要素を持つ場合にテーブルの列に対応させて格納することができないということである。その理由は、テーブルの列が要素４２１ａの子要素４２１ｂ１，２の子要素４２１ｃ〜ｅに対応しているためである。第２の問題点は、要素４２１ａの子要素４２１ｂ１，２の内部に繰り返しを持つ場合にテーブルに格納することができないということである。その理由は、テーブルの行が表現する繰り返しが要素４２１ａの子要素にだけ対応しているためである。第３の問題点は、再帰的なタグ構造をテーブルに格納できないということである。その理由は、テーブルが再帰的なデータ構造をそのまま格納できないためである。
【０００５】
本発明は、従来の構成では対応できなかった、３階層以上の要素（タグ）の入れ子構造、繰り返し、または再帰的構造を含むＸＭＬ文書を、テーブル形式のデータベースに格納することができるようにするデータ格納装置及び方法を提供することを目的とする。
【０００６】
【課題を解決するための手段】
上記課題を解決するため、請求項１記載の発明は、ＸＭＬ(eXtensible Markup Language）データを表形式のデータに変換して所定の記憶手段に格納するデータ格納装置において、入力された第１のＸＭＬデータ（221）の内部の繰り返し要素であってルート要素Ａの子要素Ｂでない要素Ｆを分離し、要素Ｆが取り除かれた第２のＸＭＬデータ（222）と、新たなＸＭＬデータに要素Ｆを追加した第３のＸＭＬデータ（223）とを作成する第１のデータ変換手段（202）と、第２のＸＭＬデータ（222）の内部の再帰になっている要素Ｄを分離し、要素Ｄが取り除かれた第４のＸＭＬデータ（224）と、新たなＸＭＬデータに要素Ｄを追加した第５のＸＭＬデータ（225）とを作成する第２のデータ変換手段（203）と、第４のＸＭＬデータ（224）の内部の３レベル以上入れ子になっている要素Ｅをルート要素Ａの子要素Ｂの子要素として移動して第６のＸＭＬデータ（226）を作成する第３のデータ変換手段（204）と、第６のＸＭＬデータ（226）を第１のテーブルに格納し、第５のＸＭＬデータ（225）を第２のテーブルに格納し、第３のＸＭＬデータ（223）を第３のテーブルに格納するデータ格納手段（205）とを備えることを特徴とする。
【０００７】
請求項２記載の発明は、ＸＭＬ(eXtensible Markup Language）データを表形式のデータに変換して所定の記憶手段に格納するデータ格納装置において、入力されたＸＭＬデータ（321）の内部の繰り返し要素である要素Ｃと文字列を分離し、新たなＸＭＬデータにルート要素Ａの子要素Ｂとその要素としての要素Ｃと文字列を、要素Ｂの順序位置を示す要素ＩＤとともに追加したＸＭＬデータ（323）を作成するデータ変換手段（302）と、ＸＭＬデータ（323）をテーブルに格納し、かつその際、要素Ｃと文字列を要素ＩＤともに格納するデータ格納手段（303）とを備えることを特徴とする。
【０００８】
請求項３記載の発明は、ＸＭＬ(eXtensible Markup Language）データを表形式のデータに変換して所定の記憶手段に格納するデータ格納方法において、入力された第１のＸＭＬデータ（221）の内部の繰り返し要素であってルート要素Ａの子要素Ｂでない要素Ｆを分離し、要素Ｆが取り除かれた第２のＸＭＬデータ（222）と、新規のＸＭＬデータに要素Ｆを追加した第３のＸＭＬデータ（223）とを作成する第１のデータ変換過程と、第２のＸＭＬデータ（222）の内部の再帰になっている要素Ｄを分離し、要素Ｄが取り除かれた第４のＸＭＬデータ（224）と、新規のＸＭＬデータに要素Ｄを追加した第５のＸＭＬデータ（225）とを作成する第２のデータ変換過程と、第４のＸＭＬデータ（224）の内部の３レベル以上入れ子になっている要素Ｅをルート要素Ａの子要素Ｂの子要素として移動して第６のＸＭＬデータ（226）を作成する第３のデータ変換過程と、第６のＸＭＬデータ（226）を第１のテーブルに格納し、第５のＸＭＬデータ（225）を第２のテーブルに格納し、第３のＸＭＬデータ（223）を第３のテーブルに格納するデータ格納過程とを含んでいることを特徴とする。
【０００９】
【発明の実施の形態】
以下、図面を参照して本発明によるデータ格納装置の実施形態について説明する。
【００１０】
図１は、本発明によるデータ格納装置の一実施形態を説明するためのブロック図である。図１において、データ変換手段１１１はＸＭＬデータ１０１から文書型定義上ルート要素の子要素以外に繰り返しのある部分を分離し、分離した部分を除いたＸＭＬデータ１０２と、分離した部分を新規のルート要素の下に同じ要素が繰り返しになるように配置することで作成されたＸＭＬデータ１０３およびその他のＸＭＬデータとする。データ変換手段１１２はＸＭＬデータ１０２から文書定義上再帰的な構造になっている部分を分離し、分離した部分を再帰的に現れる要素がルート要素の子要素の繰り返し形式となるように変換することで作成したＸＭＬデータ１０５およびその他のＸＭＬデータと、分離した部分を除いたＸＭＬデータ１０４とする。ＸＭＬデータ１０３等、データ変換手段１１１のその他の出力ＸＭＬデータもＸＭＬデータ１０２と同様の変換を行う。データ変換手段１１３はＸＭＬデータ１０４の文書定義上３レベル以上の要素の入れ子になっている要素をルート要素の子要素の子要素とする形式に変換しＸＭＬデータ１０６とする。ＸＭＬデータ１０５等、データ変換手段１１２のその他の出力ＸＭＬデータについても同様に変換を行う。データ変換手段１１１〜１１３の変換によりＸＭＬデータ１０１はルート要素の子要素としてそれぞれ同じ要素の繰り返しを持ち子要素の内部に同じ要素の列を持つＸＭＬデータ１０６およびその他のＸＭＬデータに変換される。データ更新手段１１４はこれらのＸＭＬデータのルート要素の子要素の子要素をテーブルの列に対応付けることによってＸＭＬデータをデータベース１２１のテーブルに格納する。このようにして、３レベル以上のタグの入れ子構造、繰り返し、再帰的タグ構造を含むＸＭＬ文書をテーブル形式のデータベースに格納することを可能にする。
【００１１】
次に、図２を参照して本発明によるデータ格納装置の他の実施形態について説明する。図２を参照すると、本発明のＸＭＬデータ格納装置の一実施形態は、ＸＭＬデータ入力手段２０１と、データ変換手段２０２と、データ変換手段２０３と、データ変換手段２０４と、データ格納手段２０５と、データベース２１１から構成されている。ＸＭＬデータ２２１の例を図３に示す。ＸＭＬデータ２２１はルート要素Ａ（開始タグ：＜Ａ＞、終了タグ：＜／Ａ＞；以下同様。ただし図面では開始タグに参照符号の引き出し線を付けている。）から構成されている。要素Ａは要素Ｂ（Ｂ０１，Ｂ０２）の繰り返しで構成されている。要素Ｂ０１は要素Ｃ（Ｃ０１）と、要素Ｄ（Ｄ０１，Ｄ０２）から構成されている。要素Ｂ０２は要素Ｃ（Ｃ０２）と、要素Ｄ（Ｄ０３）から構成されている。要素Ｃ０１は１つの要素Ｅ（Ｅ０１）と、要素Ｆ（Ｆ０１，Ｆ０２）の繰り返しから構成されている。要素Ｃ０２は１つの要素Ｅ（Ｅ０２）と、要素Ｆ（Ｆ０３）から構成されている。要素Ｄ０１は１つの要素Ｇ（Ｇ０１）と１個の要素Ｄ（Ｄ０２）から構成されている。要素Ｄ０３は１つの要素Ｇ（Ｇ０３）から構成されている。要素Ｆ（Ｆ０１，Ｆ０２，Ｆ０３）はそれぞれ要素Ｉと要素Ｊから構成されている。要素Ｅ、要素Ｇ、要素Ｉ、要素Ｊは文字列から構成されている。
【００１２】
上記各手段はそれぞれ概略つぎのように動作する。データ入力手段２０１は、ＸＭＬデータ２２１を入力しデータ変換手段２０２へ渡す。データ変換手段２０２は、ＸＭＬデータ２２１の内部の繰り返し要素である要素Ｆ（Ｆ０１，Ｆ０２）を分離しＸＭＬデータ２２２とＸＭＬデータ２２３とする。要素Ｂ（Ｂ０１，Ｂ０２）も繰り返しになっているが、ルート要素Ａの子要素なので変換しない。データ変換手段２０３は、ＸＭＬデータ２２２の内部の再帰になっている要素Ｄ（Ｄ０１，Ｄ０２）を分離しＸＭＬデータ２２４とＸＭＬデータ２２５とする。データ変換手段２０４は、ＸＭＬデータ２２４の内部の３レベル以上入れ子になっている要素Ｅをルート要素Ａの子要素Ｂの子要素として移動しＸＭＬデータ２２６とする。データ格納手段２０５は、ＸＭＬデータ２２６をテーブルＡに格納する。このとき要素Ｅの内容を列Ｅに格納する。ＸＭＬデータ２２５をテーブルＹに格納する。このとき要素Ｇの内容を列Ｇに格納する。ＸＭＬデータ２２３をテーブルＸに格納する。このとき要素Ｉの内容を列Ｉに、要素Ｊの内容を列Ｊに格納する。
【００１３】
［実施形態の動作の説明］
次に、図４、図５、図６、図７のフローチャートを参照して本実施形態の全体の動作について詳細に説明する。
【００１４】
ＸＭＬデータ２２１をデータ変換手段２０２へ入力する。要素Ｘをルート要素とする新しいＸＭＬデータ２２３を生成する（図４のステップＡ１０１）。ここでＸは変数である。ＸＭＬデータ２２１に要素Ｂがなければ終わり（ステップＡ１０２）、要素Ｂがあれば最初の要素Ｂを要素Ｂ１とする（ステップＡ１０３）。ここで、ＢおよびＢ１は変数を示す。次に、要素Ｂ１に要素Ｆがなければ終わり（ステップＡ１０４）、要素Ｂ１に要素Ｆがあれば要素Ｂ１の最初の要素ＦをＦ１とする（ステップＡ１０５）。ここでＦおよびＦ１は変数である。要素Ｆ１を要素Ｂ１から取り除き要素Ｘに追加する（ステップＡ１０６）。要素Ｂ１に次の要素ＦがあればステップＡ１０８へ、なければステップＡ１０９へ進む（ステップＡ１０７）。ステップＡ１０８では次の要素ＦをＦ１として、ステップＡ１０６へ戻る。ステップＡ１０９では、次の要素ＢがあればステップＡ１１０へ、なければ終わる。ステップＡ１１０では、次の要素ＢをＢ１として、ステップＡ１０４へ戻る。終了時には総ての要素Ｆが取り除かれたＸＭＬデータ２２１をＸＭＬデータ２２２とする。
【００１５】
データ変換手段２０３はデータ変換手段２０２からＸＭＬデータ２２２を入力する。要素Ｙをルート要素とする新しいＸＭＬデータ２２５を生成する（図５のステップＡ２０１）。ここでＹは変数である。ＸＭＬデータ２２２に要素Ｂがなければ終わり（ステップＡ２０２）、要素Ｂがあれば最初の要素Ｂを要素Ｂ１とする（ステップＡ２０３）。次に要素Ｂ１の子要素の要素ＤをＤ１とする（ステップＡ２０４）。ここでＤおよびＤ１は変数である。次に要素Ｄ１を親要素から取り除き要素Ｙの子要素として追加する（ステップＡ２０５）。要素Ｄ１の子要素に要素ＤがあればステップＡ２０７へ、なければステップＡ２０８へ進む（ステップＡ２０６）。ステップＡ２０７では子要素ＤをＤ１としてステップＡ２０５へ戻る。ステップＡ２０８では次の要素ＢがあればステップＡ２０９へ、なければ終わる。ステップＡ２０９では次の要素ＢをＢ１としてステップＡ２０４へ戻る。終了時には総ての要素Ｄが取り除かれたＸＭＬデータ２２２をＸＭＬデータ２２４とする。
【００１６】
データ変換手段２０４はデータ変換手段２０３からＸＭＬデータ２２４を入力する。ＸＭＬデータ２２４に要素Ｂがなければ終わり（図６のステップＡ３０１）、要素Ｂがあれば最初の要素Ｂを要素Ｂ１とする（ステップＡ３０２）。要素Ｂ１の子要素Ｃの子要素Ｅを要素Ｃから取り除き、要素Ｂ１の子要素として追加する（ステップＡ３０３）。ここでＣ，Ｅは変数である。要素Ｂ１から要素Ｃを削除する（ステップＡ３０４）。次の要素ＢがあればステップＡ３０６へ、なければ終わる（ステップＡ３０５）。ステップＡ３０６では次の要素ＢをＢ１としてステップＡ３０３へ戻る。終了時には総ての要素Ｃ、要素Ｅの変換が行われたＸＭＬデータ２２４をＸＭＬデータ２２６とする。
【００１７】
データ格納手段２０５は、データ変換手段２０４からＸＭＬデータ２２６を、データ変換手段２０３からＸＭＬデータ２２５を、データ変換手段２０３からＸＭＬデータ２２３を入力する。ＸＭＬデータ２２６に要素ＢがなければステップＡ４０７へ進む（図７のステップＡ４０１）。ＸＭＬデータ２２６に要素ＢがあればＸＭＬデータ２２６の最初の要素Ｂを要素Ｂ１とする（ステップＡ４０２）。次にテーブルＡに行Ａ１を追加する（ステップＡ４０３）。ここでＡ１は変数である。次に要素Ｂ１の子要素Ｅの内容を行Ａ１の列Ｅに格納する（ステップＡ４０４）。次の要素ＢがあればステップＡ４０６へ、なければステップＡ４０７へ進む（ステップＡ４０５）。ステップＡ４０６では次の要素ＢをＢ１とし、ステップＡ４０３へ戻る。ステップＡ４０７では、ＸＭＬデータ２２５に要素ＤがなければステップＡ４１３へ進み、要素ＤがあればステップＡ４０８へ進む。ステップＡ４０８ではＸＭＬデータ２２５の最初の要素Ｄを要素Ｄ１とする。テーブルＹに行Ｙ１を追加する（ステップＡ４０９）。ここでＹ１は変数である。次に要素Ｄ１の子要素Ｇの内容を行Ｙ１の列Ｇに格納する（ステップＡ４１０）。ここでＧは変数である。次の要素ＤがあればステップＡ４１２へ、なければステップＡ４１３へ進む（ステップＡ４１１）。ステップＡ４１２では次の要素ＤをＤ１としてステップＡ４０９へ戻る。ステップＡ４１３ではＸＭＬデータ２２３に要素Ｆがなければ終わり、要素ＦがあればステップＡ４１４へ進む。ステップＡ４１４では、ＸＭＬデータ２２３の最初の要素Ｆを要素Ｆ１とする。テーブルＸに行Ｘ１を追加する（ステップＡ４１５）。次に要素Ｆ１の子要素Ｉの内容を行Ｘ１の列Ｉに格納する（ステップＡ４１６）。ここでＸ１，Ｉは変数である。次に要素Ｆ１の子要素Ｊの内容を行Ｘ１の列Ｊに格納する（ステップＡ４１７）。ここでＪは変数である。次に、次の要素ＦがあればステップＡ４１９へ、なければ終了する（ステップＡ４１８）。ステップＡ４１９では次の要素ＦをＦ１としてステップＡ４１５へ戻る。以上で処理が終了する。
【００１８】
次に、図３に示すＸＭＬデータ２２１を入力する場合の具体例を用いて説明する。ＸＭＬデータ２２１をデータ変換手段２０２へ入力する。データ変換手段２０２では、要素Ｘをルート要素とする新しいＸＭＬデータ２２３を生成する（図４のステップＡ１０１）（図８（ａ）参照）。図３に示すＸＭＬデータ２２１の最初の要素Ｂ、要素Ｂ０１を取り出す（ステップＡ１０３）。要素Ｂ０１の最初の要素Ｆ、要素Ｆ０１取り出す（ステップＡ１０５）。Ｆ０１をＢ０１から取り除き要素Ｘに追加する（ステップＡ１０６）（図８（ｂ）（図８の右上））。要素Ｂ０１の次の要素Ｆ、要素Ｆ０２を取り出す（ステップＡ１０８）。Ｆ０２をＢ０１から取り除き要素Ｘに追加する（ステップＡ１０６）（図８（ｃ））。次の要素Ｂ、要素Ｂ０２を取り出す（ステップＡ１１０）。要素Ｂ０２の最初の要素Ｆ、要素Ｆ０３取り出す（ステップＡ１０５）。Ｆ０３をＢ０２から取り除き要素Ｘに追加する（ステップＡ１０６）（図８（ｄ））。総ての要素Ｆが取り除かれたＸＭＬデータ２２１をＸＭＬデータ２２２（図８（ｅ））とする。
【００１９】
データ変換手段２０３はデータ変換手段２０２から図８（ｅ）に示すＸＭＬデータ２２２を入力する。要素Ｙをルート要素とする新しいＸＭＬデータ２２５を生成する（図５のステップＡ２０１）（図９（ａ））。図８（ｅ）のＸＭＬデータ２２２の最初の要素Ｂ、要素Ｂ０１を取り出す（ステップＡ２０３）。要素Ｂ０１の子要素の要素Ｄ、要素Ｄ０１を取り出す（ステップＡ２０４）。Ｄ０１をＢ０１から取り除き要素Ｙの子要素として追加する（ステップＡ２０５）（図９（ｂ）（図９の右上））。要素Ｄ０１の子要素の要素Ｄ、要素Ｄ０２を取り出す（ステップＡ２０７）。Ｄ０２をＤ０１から取り除き要素Ｙの子要素として追加する（ステップＡ２０５）（図９（ｃ））。次の要素Ｂ、要素Ｂ０２を取り出す（ステップＡ２０９）。要素Ｂ０２の子要素の要素Ｄ、要素Ｄ０３をＢ０２から取り除き要素Ｙの子要素として追加する（ステップＡ２０５）（図９（ｄ））。総ての要素Ｄが取り除かれたＸＭＬデータ２２２をＸＭＬデータ２２４とする（図９（ｅ））。
【００２０】
データ変換手段２０４はデータ変換手段２０３から図９（ｅ）に示すＸＭＬデータ２２４を入力する。ＸＭＬデータ２２４の最初の要素Ｂ、要素Ｂ０１を取り出す（ステップＡ３０２）。要素Ｂ０１の子要素Ｃ（Ｃ０１）の子要素Ｅ（Ｅ０１）を要素Ｃから取り除き要素Ｂ０１の子要素として追加する（ステップＡ３０３）（図１０（ａ））。要素Ｂ０１から要素Ｃを削除する（ステップＡ３０４）（図１０（ｂ））。次の要素Ｂ、要素Ｂ０２を取り出す（ステップＡ３０６）。要素Ｂ０２の子要素Ｃ（Ｃ０２）の子要素Ｅ（Ｅ０２）を要素Ｃから取り除き要素Ｂ０２の子要素として追加する（ステップＡ３０３）（図１０（ｃ））。要素Ｂ０２から要素Ｃを削除する（ステップＡ３０４）（図１０（ｄ））。総ての要素Ｃ、要素Ｅの変換が行われたＸＭＬデータ２２４をＸＭＬデータ２２６とする（図１０（ｅ））。
【００２１】
データデータ格納手段２０５は変換手段２０４から図１０（ｅ）に示すＸＭＬデータ２２６を、データ変換手段２０３から図９（ｄ）に示すＸＭＬデータ２２５を、データ変換手段２０３から図８（ｄ）に示すＸＭＬデータ２２３を入力する。ＸＭＬデータ２２６の最初の要素Ｂ、要素Ｂ０１を取り出す（図７のステップＡ４０２）。テーブルＡに行Ａ０１を追加する（ステップＡ４０３）（図１１（ａ））。要素Ｂ０１の子要素Ｅの内容を行Ａ１の列Ｅに格納する（ステップＡ４０４）（図１１（ｂ））。次の要素Ｂ、要素Ｂ０２を取り出す（ステップＡ４０６）。テーブルＡに行Ａ０２を追加する（ステップＡ４０３）（図１１（ｃ））。要素Ｂ０２の子要素Ｅの内容を行Ａ２の列Ｅに格納する（ステップＡ４０４）（図１１（ｄ））。ＸＭＬデータ２２５の最初の要素Ｄ、要素Ｄ０１を取り出す（ステップＡ４０８）。テーブルＹに行Ｙ０１を追加する（ステップＡ４０９）（図１１（ｅ））。ＸＭＬデータ２２５の要素Ｄ０１の子要素Ｇの内容を行Ｙ０１の列Ｇに格納する（ステップＡ４１０）（図１１（ｆ））。次の要素Ｄ、要素Ｄ０２を取り出す（ステップＡ４１２）。テーブルＹに行Ｙ０２を追加する（ステップＡ４０９）。要素Ｄ０２の子要素Ｇの内容を行Ｙ０２の列Ｇに格納する（ステップＡ４１０）。次の要素Ｄ、要素Ｄ０３を取り出す。テーブルＹに行Ｙ０３を追加する（ステップＡ４０９）。要素Ｄ０３の子要素Ｇの内容を行Ｙ０３の列Ｇに格納する（ステップＡ４１０）（図１１（ｇ））。ＸＭＬデータ２２３の最初の要素Ｆ、要素Ｆ０１を取り出す（ステップＡ４１４）。テーブルＸに行Ｘ０１を追加する（ステップＡ４１５）（図１１（ｈ））。要素Ｆ０１の子要素Ｉの内容を行Ｘ０１の列Ｉに格納する（ステップＡ４１６）。要素Ｆ０１の子要素Ｊの内容を行Ｘ０１の列Ｊに格納する（ステップＡ４１７）（図１１（ｉ））。次の要素Ｆ、要素Ｆ０２を取り出す（ステップＡ４１９）。テーブルＸに行Ｘ０２を追加する（ステップＡ４１５）（図１１（ｊ））。要素Ｆ０２の子要素Ｉの内容を行Ｘ０２の列Ｉに格納する（ステップＡ４１６）。要素Ｆ０２の子要素Ｊの内容を行Ｘ０２の列Ｊに格納する（ステップＡ４１７）（図１１（ｋ））。次の要素Ｆ、要素Ｆ０３を取り出す（ステップＡ４１９）。テーブルＸに行Ｘ０３を追加する（ステップＡ４１５）（図１１（ｌ））。要素Ｆ０３の子要素Ｉの内容を行Ｘ０３の列Ｉに格納する（ステップＡ４１６）。要素Ｆ０３の子要素Ｊの内容を行Ｘ０３の列Ｊに格納する（ステップＡ４１７）（図１１（ｍ））。
【００２２】
本実施形態によれば次のような効果を得ることができる。第１の効果は、タグの繰り返し構造を含むＸＭＬ文書をテーブル形式のデータベースに格納できることにある。その理由は、タグの繰り返し構造を持つ部分を別のデータとして括り出しテーブル形式に格納できる形に変換したためである。第２の効果は、再帰的タグ構造を含むＸＭＬ文書をテーブル形式のデータベースに格納できることにある。その理由は、再帰的タグ構造を持つ部分を別のデータとして括り出しテーブル形式に格納できる形に変換したためである。第３の効果は、３レベル以上のタグ入れ子構造を含むＸＭＬ文書をテーブル形式のデータベースに格納できることにある。その理由は、３レベル以上の入れ子構造を持つ部分の要素を上位の要素へ移動しテーブル形式のデータベースに格納できる形に変換したためである。
【００２３】
［発明の他の実施形態］
次に、本発明の他の実施形態について図面を参照して詳細に説明する。図１２を参照すると、本発明のＸＭＬデータ格納装置の他の実施形態は、ＸＭＬデータ入力手段３０１と、データ変換手段３０２と、データ格納手段３０３と、データベース３１１から構成されている。ＸＭＬデータ３２１の例を図１３に示す。ＸＭＬデータ３２１はルート要素Ａから構成されている。要素Ａは要素Ｂの繰り返し（Ｂ０１，Ｂ０２）で構成されている。要素Ｂ０１は要素Ｃ（ＣＴ０２）と文字列の繰り返し（ＣＴ０１，ＣＴ０３）から構成されている。要素Ｂ０２は要素Ｃの繰り返し（ＣＴ０４，ＣＴ０６）と文字列（ＣＴ０５）から構成されている。
【００２４】
上記各手段はそれぞれ概略つぎのような機能を有する。データ入力手段３０１は、ＸＭＬデータ３２１を入力しデータ変換手段３０２へ渡す。データ変換手段３０２は、ＸＭＬデータ３２１の内部の繰り返し要素である要素Ｃと文字列を分離しＸＭＬデータ３２２とＸＭＬデータ３２３とする。データ格納手段３０３は、ＸＭＬデータ３２３をテーブルＸに格納する。要素Ｃの内容を列Ｃに、文字列を列ＴＥＸＴに、要素Ｂの位置情報を列ＩＤに格納する。
【００２５】
次に、図１４及び図１５のフローチャートを参照して本実施形態の全体の動作について詳細に説明する。ＸＭＬデータ３２１をデータ変換手段３０２へ入力する。要素Ｘをルート要素とする新しいＸＭＬデータ３２３を生成する（図１４のステップＡ５０１）。ＸＭＬデータ３２１に要素Ｂがなければ終わる（ステップＡ５０２）。最初の要素Ｂを要素Ｂ１とする（ステップＡ５０３）。要素Ｂ１の順序位置をＩＤ１とする（ステップＡ５０４）。要素Ｂ１に要素Ｃか文字列がなければＡ５１４へ進む（ステップＡ５０５）。要素Ｂ１に要素Ｃか文字列があれば、要素Ｂ１の最初の要素Ｃか文字列をＣＴ１とする（ステップＡ５０６）。要素Ｙを生成しＹ１とする（ステップＡ５０７）。要素ＸにＹ１を追加する（ステップＡ５０８）。ＣＴ１をＢ１から取り除き要素Ｙ１に追加する（ステップＡ５０９）。要素Ｙ１に要素ＩＤを追加する（ステップＡ５１０）。要素ＩＤの内容としてＩＤ１を設定する（ステップＡ５１１）。要素Ｂ１に次の要素Ｃか文字列があればステップＡ５１３へ、なければステップＡ５１４へ進む（ステップＡ５１２）。次の要素Ｃか文字列をＣＴ１とする（ステップＡ５１３）。次の要素ＢがあればステップＡ５１５へ、なければ終わる（ステップＡ５１４）。次の要素ＢをＢ１とする（ステップＡ５１５）。要素Ｂの子の総ての要素Ｆと文字列が取り除かれたＸＭＬデータ３２１をＸＭＬデータ３２２とする。
【００２６】
データ格納手段３０３はデータ変換手段３０２からＸＭＬデータ３２３を入力する。ＸＭＬデータ３２３に要素Ｙがなければ終わる（図１５のステップＡ６０１）。ＸＭＬデータ３２３の最初の要素Ｙを要素Ｙ１とする（ステップＡ６０２）。テーブルＸに行Ｘ１を追加する（ステップＡ６０３）。要素Ｙ１に子要素Ｃがあれば内容を行Ｘ１の列Ｃに格納する（ステップＡ６０４、Ａ６０５）。要素Ｙ１に文字列があれば行Ｘ１の列ＴＥＸＴに格納する（ステップＡ６０６、Ａ６０７）。要素Ｙ１の子要素ＩＤの内容を列Ｘ１の要素ＩＤに格納する（ステップＡ６０８）。次の要素ＢがあればステップＡ６１０へ、なければ終わる。次の要素ＢをＢ１とする（ステップＡ６１０）。次に、具体例について説明する。
【００２７】
ＸＭＬデータ３２１をデータ変換手段３０２へ入力する。要素Ｘをルート要素とする新しいＸＭＬデータ３２３を生成する（図１４のステップＡ５０１）。最初の要素Ｂ、要素Ｂ０１を取り出す（ステップＡ５０３）。要素Ｂ０１の順序位置１をＩＤ１とする（ステップＡ５０４）。要素Ｂ０１の最初の文字列ＣＴ０１を取り出す（ステップＡ５０６）。要素Ｙを生成しＹ０１とする（ステップＡ５０７）。要素ＸにＹ０１を追加する（ステップＡ５０８）。ＣＴ０１をＢ０１から取り除き要素Ｙ０１に追加する（ステップＡ５０９）。要素Ｙ０１に要素ＩＤを追加する（ステップＡ５１０）。要素ＩＤの内容としてＩＤ１の値１を設定する（ステップＡ５１１）。次の要素Ｃ、要素ＣＴ０２を取り出す（ステップＡ５１３）。要素Ｙを生成しＹ０２とする（ステップＡ５０７）。要素ＸにＹ０２を追加する（ステップＡ５０８）。ＣＴ０２をＢ０１から取り除き要素Ｙ０２に追加する（ステップＡ５０９）。要素Ｙ０２に要素ＩＤを追加する（ステップＡ５１０）。要素ＩＤの内容としてＩＤ１の値１を設定する（ステップＡ５１１）。次の文字列、ＣＴ０３を取り出す（ステップＡ５１３）。要素Ｙを生成しＹ０３とする（ステップＡ５０７）。要素ＸにＹ０３を追加する（ステップＡ５０８）。ＣＴ０３をＢ０１から取り除き要素Ｙ０３に追加する（ステップＡ５０９）。要素Ｙ０３に要素ＩＤを追加する（ステップＡ５１０）。要素ＩＤの内容としてＩＤ１の値１を設定する（ステップＡ５１１）。次の要素Ｂ、要素Ｂ０２を取り出す（ステップＡ５１５）。要素Ｂ０２の順序位置２をＩＤ１とする（ステップＡ５０４）。要素Ｂ０２の最初の要素Ｃ、要素ＣＴ０４を取り出す（ステップＡ５０６）。要素Ｙを生成しＹ０４とする（ステップＡ５０７）。要素ＸにＹ０１を追加する（ステップＡ５０８）。ＣＴ０４をＢ０２から取り除き要素Ｙ０４に追加する（ステップＡ５０９）。要素Ｙ０４に要素ＩＤを追加する（ステップＡ５１０）。要素ＩＤの内容としてＩＤ１の値２を設定する（ステップＡ５１１）。次の文字列、ＣＴ０５を取り出す（ステップＡ５１３）。要素Ｙを生成しＹ０５とする（ステップＡ５０７）。要素ＸにＹ０５を追加する（ステップＡ５０８）。ＣＴ０５をＢ０２から取り除き要素Ｙ０５に追加する（ステップＡ５０９）。要素Ｙ０５に要素ＩＤを追加する（ステップＡ５１０）。要素ＩＤの内容としてＩＤ１の値２を設定する（ステップＡ５１１）。次の要素Ｃ、ＣＴ０６を取り出す（ステップＡ５１３）。要素Ｙを生成しＹ０６とする（ステップＡ５０７）。要素ＸにＹ０６を追加する（ステップＡ５０８）。ＣＴ０６をＢ０２から取り除き要素Ｙ０６に追加する（ステップＡ５０９）。要素Ｙ０６に要素ＩＤを追加する（ステップＡ５１０）。要素ＩＤの内容としてＩＤ１の値２を設定する（ステップＡ５１１）。要素Ｂの子の総ての要素Ｃと文字列が取り除かれたＸＭＬデータ３２１をＸＭＬデータ３２２とする。作成されたＸＭＬデータ３２３を図１６に示す。
【００２８】
データ格納手段３０３はデータ変換手段３０２からＸＭＬデータ３２３を入力する。ＸＭＬデータ３２３の最初の要素Ｙ、要素Ｙ０１を取り出す（図１５のステップＡ６０２）。テーブルＸに行Ｘ０１を追加する（ステップＡ６０３）。要素Ｙ０１の文字列を行Ｘ０１の列ＴＥＸＴに格納する（ステップＡ６０７）。要素Ｙ０１の子要素ＩＤの内容を行Ｘ０１の列ＩＤに格納する（ステップＡ６０８）。次の要素Ｙ、要素Ｙ０２を取り出す（ステップＡ６１０）。テーブルＸに行Ｘ０２を追加する（ステップＡ６０３）。要素Ｙ０２の子要素Ｃの内容を行Ｘ０２の列Ｃに格納する（ステップＡ６０５）。要素Ｙ０２の子要素ＩＤの内容を行Ｘ０２の列ＩＤに格納する（ステップＡ６０８）。次の要素Ｙ、要素Ｙ０３を取り出す（ステップＡ６１０）。テーブルＸに行Ｘ０３を追加する（ステップＡ６０３）。要素Ｙ０３の文字列を行Ｘ０１の列ＴＥＸＴに格納する（ステップＡ６０７）。要素Ｙ０３の子要素ＩＤの内容を列Ｘ０３の列ＩＤに格納する（ステップＡ６０８）。次の要素Ｙ、要素Ｙ０４を取り出す（ステップＡ６１０）。テーブルＸに行Ｘ０４を追加する（ステップＡ６０３）。要素Ｙ０４の子要素Ｃの内容を行Ｘ０４の列Ｃに格納する（ステップＡ６０５）。要素Ｙ０４の子要素ＩＤの内容を行Ｘ０４の列ＩＤに格納する（ステップＡ６０８）。次の要素Ｙ、要素Ｙ０５を取り出す（ステップＡ６１０）。テーブルＸに行Ｘ０５を追加する（ステップＡ６０３）。要素Ｙ０５の文字列を行Ｘ０５の列ＴＥＸＴに格納する（ステップＡ６０７）。要素Ｙ０５の子要素ＩＤの内容を列Ｘ０５の列ＩＤに格納する（ステップＡ６０８）。次の要素Ｙ、要素Ｙ０６を取り出す（ステップＡ６１０）。テーブルＸに行Ｘ０６を追加する（ステップＡ６０３）。要素Ｙ０６の子要素Ｃの内容を行Ｘ０６の列Ｃに格納する（ステップＡ６０５）。要素Ｙ０６の子要素ＩＤの内容を行Ｘ０６の列ＩＤに格納する（ステップＡ６０８）。作成されたテーブルＸを図１７に示す。
【００２９】
本実施形態の第１の効果は、文字列、要素が混在した繰り返しがテーブル形式のデータベースに格納できることである。その理由は、タグと文字列の繰り返し構造を持つ部分を要素あるいは文字列を内容として持つ要素で括り、別のデータとして括り出しテーブル形式に格納できる形に変換したためである。第２の効果は、テーブル形式のデータベースに格納された文字列、要素のデータの元の位置情報を格納できることにある。その理由は、文字列や要素を括り出す時に親要素の位置情報を付加し、その情報もテーブルに格納したためである。
【００３０】
なお、本発明の実施の形態は上述した形態に限定されるものではなく適宜変更可能である。例えば、各実施形態における変換手段の位置は他の変換手段と交換可能である。図２を参照して説明した実施形態に、図１８を参照して説明した実施形態で用いた要素の位置情報を表す要素を追加する構成を付加することなどが考えられる。また、本発明のデータ格納装置は、コンピュータとそのコンピュータで実行されるプログラムとを用いて実現することができ、そのコンピュータで実行されるプログラムはコンピュータ読み取り可能な記録媒体あるいは通信回線を介して頒布することが可能である。
【００３１】
【発明の効果】
以上説明したように発明によれば、次のような効果を得ることができる。第１の効果は、タグの繰り返し構造を含むＸＭＬ文書をテーブル形式のデータベースに格納できることにある。その理由は、タグの繰り返し構造を持つ部分を別のデータとして括り出しテーブル形式に格納できる形に変換したためである。第２の効果は、再帰的タグ構造を含むＸＭＬ文書をテーブル形式のデータベースに格納できることにある。その理由は、再帰的タグ構造を持つ部分を別のデータとして括り出しテーブル形式に格納できる形に変換したためである。第３の効果は、３レベル以上のタグ入れ子構造を含むＸＭＬ文書をテーブル形式のデータベースに格納できることにある。その理由は、３レベル以上の入れ子構造を持つ部分の要素を上位の要素へ移動しテーブル形式のデータベースに格納できる形に変換したためである。第４の効果は、文字列、要素が混在した繰り返しがテーブル形式のデータベースに格納できることである。その理由は、タグと文字列の繰り返し構造を持つ部分を要素あるいは文字列を内容として持つ要素で括り、別のデータとして括り出しテーブル形式に格納できる形に変換したためである。第５の効果は、テーブル形式のデータベースに格納された文字列、要素のデータの元の位置情報を格納できることにある。その理由は、文字列や要素を括り出す時に親要素の位置情報を付加し、その情報もテーブルに格納したためである。
【図面の簡単な説明】
【図１】  本発明によるデータ格納装置の一実施の形態の構成を示すブロック図。
【図２】  本発明によるデータ格納装置の一実施の形態の構成を示すブロック図。
【図３】  図２のＸＭＬデータ２２１の一例を示す図。
【図４】  図２の構成（データ変換手段２０２）の動作を示すフローチャート。
【図５】  図２の構成（データ変換手段２０３）の動作を示すフローチャート。
【図６】  図２の構成（データ変換手段２０４）の動作を示すフローチャート。
【図７】  図２の構成（データ格納手段２０５）の動作を示すフローチャート。
【図８】  図２におけるデータ変換手段２０２によるＸＭＬデータ２２３の作成経過（ａ）〜（ｄ）と作成されたＸＭＬデータ２２２（ｅ）を示す図。
【図９】  図２におけるデータ変換手段２０３によるＸＭＬデータ２２５の作成経過（ａ）〜（ｄ）と作成されたＸＭＬデータ２２４（ｅ）を示す図。
【図１０】  図２におけるデータ変換手段２０４によるＸＭＬデータ２２４の変換経過（ａ）〜（ｄ）と作成されたＸＭＬデータ２２６（ｅ）を示す図。
【図１１】  図２におけるデータ格納手段２０５によるデータベース２１１内のテーブルＡ，Ｘ，Ｙの作成経過（ａ）〜（ｍ）を示す図。
【図１２】  本発明によるデータ格納装置の他の実施の形態の構成を示すブロック図。
【図１３】  図１２のＸＭＬデータ３２１の一例を示す図。
【図１４】  図１２の構成（データ変換手段３０２）の動作を示すフローチャート。
【図１５】  図１２の構成（データ格納手段３０３）の動作を示すフローチャート。
【図１６】  図１２においてデータ変換手段３０２によって作成されたＸＭＬデータ３２３の内容の一例を示す図。
【図１７】  図１２のデータ格納手段３０５によるデータベース３１１内のテーブルＸの作成例を示す図。
【図１８】  従来のデータ格納装置の構成を示すブロック図。
【図１９】  図１８のＸＭＬデータ４２１の内容を示す図。
【図２０】  図１８のテーブル４２２の内容を示す図。
【符号の説明】
１０１〜１０６，２２１〜２２６，３２１〜３２３…ＸＭＬデータ
１１１〜１１３，２０２〜２０４，３０２…データ変換手段
２０１，３０１…データ入力手段
１２１，２１１，３１１…データベース
１１４…データ更新手段
２０５，３０３…データ格納手段
【図１】
0003719125.tif 000002
【図２】
0003719125.tif 000003
【図３】
0003719125.tif 000004
【図４】
0003719125.tif 000005
【図５】
0003719125.tif 000006
【図６】
0003719125.tif 000007
【図７】
0003719125.tif 000008
【図８】
0003719125.tif 000009
【図９】
0003719125.tif 000010
【図１０】
0003719125.tif 000011
【図１１】
0003719125.tif 000012
【図１２】
0003719125.tif 000013
【図１３】
0003719125.tif 000014
【図１４】
0003719125.tif 000015
【図１５】
0003719125.tif 000016
【図１６】
0003719125.tif 000017
【図１７】
0003719125.tif 000018
【図１８】
0003719125.tif 000019
【図１９】
0003719125.tif 000020
【図２０】
0003719125.tif 000021