(57)【要約】【課題】  データへの直接アクセスを可能とし、メモリ使用量の削減と高速なデータ変換処理を実現できるデータ変換装置を得る。【解決手段】  変換前データの構造を基本構造パタンの組み合わせとして表現した構造パタンと、変換前データのタグの親子関係を表すタグ構造を含む変換前データ構造パタン指定を記憶する変換前データ構造パタン指定記憶部１０１と、構造パタンとタグ構造に基づいて、変換前データの末端要素データ値を格納するデータ格納用配列の次元数を決定し、末端要素のデータ値をデータ格納用配列に格納する処理を生成する読み込み処理実行部１０５と、変換前データを変換するための変換規則を記述した変換命令を記憶する変換命令記憶部１０３と、構造パタンとタグ構造に基づいて、データ格納用配列に格納された変換前データの末端要素のデータ値を変換命令に従って処理し、変換後データとして出力する変換処理実行部１０６を備える。【選択図】        図１
2006163820.tif 000002
【特許請求の範囲】
【請求項１】
構造化文書を、異なるデータ構造に変換するデータ変換装置であって、
変換前データの構造を基本構造パタンの組み合わせとして表現した構造パタンと、上記変換前データのタグの親子関係を表すタグ構造を含む変換前データ構造パタン指定を記憶する変換前データ構造パタン指定記憶部と、
上記変換前データ構造パタン指定に基づいて、上記変換前データの末端要素データ値を格納するデータ格納用配列の次元数を決定し、上記末端要素のデータ値を上記データ格納用配列に格納する読み込み処理実行部と、
上記変換前データを上記異なるデータ構造に変換するための変換規則を記述した変換命令を記憶する変換命令記憶部と、
上記変換前データ構造パタン指定に基づいて、上記データ格納用配列に格納された上記変換前データの末端要素のデータ値を上記変換命令に従って処理し、変換後データとして出力する変換処理実行部を備えたデータ変換装置。
【請求項２】
変換前データを解析し、その変換前データ構造パタン指定を生成する構造パタン判別部を備えたことを特徴とする請求項１記載のデータ変換装置。
【請求項３】
構造パタン判別部は、変換前データのスキーマ情報に基づいて変換前データ構造パタン指定を生成することを特徴とする請求項２記載のデータ変換装置。
【請求項４】
変換前データと変換後データの間での末端要素の対応関係を記憶する末端要素変換命令記憶部と、
上記変換後データのスキーマ情報を記憶する変換後データスキーマ記憶部と、
上記末端要素の対応関係と上記変換後データのスキーマ情報に基づいて、変換命令を生成する変換命令生成部を備えたことを特徴とする請求項１から請求項３のうちのいずれか１項記載のデータ変換装置。
【請求項５】
変換前データ構造パタン指定に基づいて、変換前データの末端要素データ値を格納するデータ格納用配列の次元数を決定し、末端要素のデータ値をデータ格納用配列に格納するための、読み込み処理プログラムを生成する読み込み処理生成部と、
上記変換前データ構造パタン指定に基づいて、上記データ格納用配列に格納された上記変換前データの末端要素のデータ値を変換命令に従って処理し、変換後データとして出力するための、変換処理プログラムを生成する変換処理生成部と、
上記変換前データ構造パタン指定と上記変換命令の組を複数記憶する構造パタン・変換命令記憶部と、
上記構造パタン・変換命令記憶部から、上記変換前データ構造パタン指定を取得して上記読み込み処理生成部へ供給し、上記変換命令を取得して上記変換処理生成部へ供給し、上記読み込み処理生成部から取得した読み込み処理プログラムと上記変換処理生成部から取得した変換処理プログラムを、上記構造パタン・変換命令記憶部から取得した変換前データ構造パタン指定と変換命令の組に付加して出力する処理生成起動部と、
上記処理生成起動部の出力結果を記憶する処理記憶部と、
上記処理記憶部を参照し、変換処理時に指定された変換前データ構造パタン指定に対応する読み込み処理プログラムと変換処理プログラムを上記処理記憶部から取得し、それぞれ読み込み処理実行部と変換処理実行部に供給する処理選択部を備え、
上記読み込み処理実行部と上記変換処理実行部は、上記処理選択部から供給された読み込み処理プログラム及び変換処理プログラムを実行することを特徴とする請求項１から請求項３のうちのいずれか１項記載のデータ変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、構造化文書のデータ変換装置に関するものである。
【背景技術】
【０００２】
情報システムの発展に伴い、各種情報システムが持つデータを、企業間や企業内組織間で交換したり、共有したりすることへの要求が高まっている。このような要求を満たすために用いられるデータの標準フォーマットの１つとして、Ｗ３Ｃ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ  Ｃｏｎｓｏｒｔｉｕｍ）によって制定されているＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）が近年盛んに利用されるようになってきた。ＸＭＬは、データを構造化してテキストファイルとして表現するもので、送り手側のシステムはシステム内部でのデータ構造を持つデータをＸＭＬ文書に変換して送信し、受け手側のシステムでは受信したＸＭＬ文書をシステム内部のデータ構造に変換して利用する。
【０００３】
ＸＭＬ文書に対する一般的なデータ操作ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）として、ＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）やＳＡＸ（Ｓｉｍｐｌｅ  ＡＰＩ  ｆｏｒ  ＸＭＬ）がある。ＤＯＭは、読み込んだＸＭＬ文書全体を木構造（ＤＯＭ木）に変換してメモリ上に展開する。これにより、データへのランダムアクセスが可能となり、複雑な処理を行うデータ操作プログラムを作成しやすいという利点がある。しかし、ＤＯＭは処理が低速でメモリ使用量も大きいという欠点がある。
これに対し、ＳＡＸは、ＸＭＬ文書を先頭から順に読み込み、ＸＭＬ文書中に現れるタグやテキストに対して逐次的に処理を行うもので、処理が高速でメモリ使用量が少ないという利点がある。しかし、逐次処理のため、データへのランダムアクセスができず、複雑な処理を行うデータ操作プログラムを作成しにくいという欠点がある。
【０００４】
また、これらの標準的なＡＰＩを用いた構造化文書のデータ変換処理の高速化及びメモリ使用量の削減を目的とした技術も提案されている。
例えば、特許文献１に記載された従来の構造化文書変換方法では、変換対象の構造化文書を、予めデータ処理の対象となるキー要素と、データ処理の対象にならない非キー要素に分け、非キー要素の内容をＣＳＶ（Ｃｏｍｍａ  Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅ）形式で１つの要素にまとめた構造化文書にしておく。
【０００５】
【特許文献１】特開２００３−２０３０６７号公報（図１、第５頁〜第１８頁）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、ＸＭＬ文書の読み込みにＤＯＭやＳＡＸなどの標準的なＡＰＩを用いる限り、読み込み処理の速度がそれらのＡＰＩで制限され、それ以上の処理速度向上は実現できない。ここで、読み込み処理の速度が制限される理由として、１）標準ＡＰＩのオーバースペック、２）ＤＯＭのデータアクセス性能、３）ＳＡＸの逐次性、があげられる。
【０００７】
１）について説明する。ＤＯＭやＳＡＸのような標準ＡＰＩは、ＸＭＬの仕様上想定される全ての入力を扱えるようにするため、多くの内部変数や処理関数を持っている。また、ＤＯＭの読み込み処理では、後段でのデータアクセスのために、インデックス生成などの処理を行うのが一般的である。しかしながら、個々の変換対象データや変換処理プログラムから見ると、標準ＡＰＩの機能全てが必要となることは稀である。そのため、不必要な情報まで内部データとして保持することになり、オーバースペックとなることが多い。すなわち、汎用化を実現する代わりに、必ずしも各々の対象データやデータ変換プログラムにとって最適なデータ構造とはなっておらず、メモリ効率や速度性能が犠牲になっているという問題がある。
【０００８】
次に２）について説明する。ＤＯＭを介したデータアクセスは、基本的に木構造に対する探索となる。すなわち、末端要素に保持されたデータを得るためには、例えば、深さ優先探索によってＸＭＬの最も外側の要素に対応するルートから、目的とする末端要素に対応する葉が見つかるまで検索する必要がある。このような処理を行うと、一般的にメモリ使用量が増大し処理時間がかかるという問題がある。
【０００９】
次に３）について説明する。ＳＡＸは逐次的な処理を行うＡＰＩであり、データ操作プログラムには入力データ全体の構造は提供されず、その時点で処理対象となっているＸＭＬのタグに関する情報しか提供されない。従って、例えば、同じタグが繰り返し出現する反復構造を持つＸＭＬ文書を扱う場合には、ＸＭＬ文書の構造を管理するための処理をその都度記述する必要が生じ、プログラム作成のコストがかかるという問題がある。
【００１０】
この発明は上記のような課題を解決するためになされたもので、データへの直接アクセスを可能とし、かつ、メモリ使用量の削減と高速なデータ変換処理を実現できるデータ変換装置を得ることを目的とする。
【課題を解決するための手段】
【００１１】
この発明に係るデータ変換装置は、変換前データの構造を基本構造パタンの組み合わせとして表現した構造パタンと、変換前データのタグの親子関係を表すタグ構造を含む変換前データ構造パタン指定を記憶する変換前データ構造パタン指定記憶部と、変換前データ構造パタン指定に基づいて、変換前データの末端要素データ値を格納するデータ格納用配列の次元数を決定し、末端要素のデータ値をデータ格納用配列に格納する読み込み処理実行部と、変換前データを異なるデータ構造に変換するための変換規則を記述した変換命令を記憶する変換命令記憶部と、変換前データ構造パタン指定に基づいて、データ格納用配列に格納された変換前データの末端要素のデータ値を変換命令に従って処理し、変換後データとして出力する変換処理実行部を備えたものである。
【発明の効果】
【００１２】
この発明によれば、変換前データの構造を基本構造パタンの組み合わせで表現し、その構造パタンに従って末端要素データ値をデータ格納用配列に格納するようにしたので、変換処理において、末端要素が保持するデータ値に直接アクセスできると共に、メモリ使用量の削減と高速なデータ変換を実現できるデータ変換装置を得ることができる。
【発明を実施するための最良の形態】
【００１３】
以下、この発明の実施の様々な形態を説明する。
実施の形態１．
図１は、この発明の実施の形態１によるデータ変換装置１００の構成を示すブロック図である。図に示すように、データ変換装置１００は、変換前データ構造パタン指定記憶部１０１、読み込み処理生成部（読み込み処理実行部）１０２、変換命令記憶部１０３、変換処理生成部（変換処理実行部）１０４、読み込み処理実行部１０５、変換処理実行部１０６を備えている。読み込み処理生成部１０２、変換処理生成部１０４、読み込み処理実行部１０５及び変換処理実行部１０６は、データ変換装置１００のプロセッサを、該プロセッサの動作を制御するプログラムのモジュールに従って便宜的に分割したものである。
変換前データ構造パタン指定記憶部１０１及び変換命令記憶部１０３は、データ変換装置１００のメモリ、あるいはデータ変換装置１００と接続された外部の記憶装置等に含まれる。
【００１４】
次に動作について説明する。
図２は、実施の形態１による変換前ＸＭＬデータの例（ＤＡＴＡ１）を示す図である。また、図３は、実施の形態１による、図２に示す変換前ＸＭＬデータの変換後データ（ＤＡＴＡ２）を示す図である。以下、ＤＡＴＡ１をＤＡＴＡ２に変換する場合を例に取り説明する。
【００１５】
まず、変換前データ構造パタン指定記憶部１０１に記憶される変換前データ構造パタン指定について説明する。
変換前データ構造パタン指定は、変換前データの構造パタンとタグ構造を記述したものである。
タグ構造は、変換前データのタグの親子関係を表すものである。
構造パタンは、変換前データの構造を基本構造パタンの組み合わせとして表現したものである。基本構造パタンとしては、系列型（Ｓｅｑｕｅｎｃｅ型、以後Ｓ型と称す。）及び反復型（Ｒｅｐｅｔｉｔｉｏｎ型、以後Ｒ型と称す。）の２つをあげることができる。
図４は、Ｓ型の構造パタンを持つＸＭＬデータの一例を示す図である。図に示すように、＜日付＞の子要素が、＜年＞要素、＜月＞要素、＜日＞要素という異なる要素の系列となっている。
また、図５は、Ｒ型の構造パタンを持つＸＭＬデータの一例を示す図であり、図に示すように、＜登録者＞の子要素は、＜氏名＞要素という同一の要素が繰り返す構造となっている。
【００１６】
任意のＸＭＬデータをＳ型とＲ型の組み合わせのみで表現することはできないが、実用上多く用いられている帳票などのＸＭＬデータは、一般的にこれらの組み合わせによって表現可能である。例えば、多くの電子商取引の実用システムで用いられているＸＭＬデータの規格として、（財）日本情報処理開発協会  電子商取引推進センターによって策定されたＣＩＩ標準ベースＸＭＬ／ＥＤＩマッピング規則がある。図６は、この規則に準拠したＸＭＬデータの例を示す図である。図に示すように、このＸＭＬデータの例では、最上位のタグ＜ＣＩＩ−ＭＳＧ＞の子要素としては＜ＪＰＭＧＲＰ＞のみが存在する。すなわち、これは系列が１つのＳ型で表現できる。＜ＪＰＭＧＲＰ＞の子要素としては＜ＪＰＭＧＨ＞と＜ＪＰＴＲＭ＞の２つが存在し、系列が２つのＳ型で表現することができる。＜ＪＰＭＧＨ＞の子要素は＜ＪＰＣ０３＞、＜ＪＰＣ０４＞などの系列であり、これもＳ型で表現することができる。＜ＪＰＣ０３＞、＜ＪＰＣ０４＞などは子要素を持たない末端要素である。＜ＪＰＴＲＭ＞の子要素は＜ＪＰ２７００１＞、＜ＪＰ２７００２＞、＜ＪＰＭ＞などの系列であり、Ｓ型である。このうち＜ＪＰＭ＞要素は、反復する＜ＪＰＭＲ＞要素を持つ。従って、＜ＪＰＭ＞はＲ型である。＜ＪＰＭＲ＞は、＜ＪＰ２７１０４＞、＜ＪＰ２７１０５＞、＜ＪＰ２７１０６＞という系列を子要素に持つＳ型である。  以上より、このＸＭＬデータは、Ｓ型とＲ型の組み合わせのみで表現することができ、ＳＳＲＳ型という構造パタンを持つ。
【００１７】
ここで、図２に示す変換前データＤＡＴＡ１の構造パタンについて説明する。＜ＤＡＴＡ１＞要素の子要素は，＜月＞、＜日＞、＜予約＞の系列なのでＳ型で表現される。＜予約＞要素の子要素は＜人名＞要素の反復となっておりＲ型である。さらに、＜人名＞要素の子要素は＜姓＞要素と＜名＞要素の系列でありＳ型である。従って、ＤＡＴＡ１はＳＲＳ型という構造パタンとなる。
【００１８】
図７は、ＤＡＴＡ１の変換前データ構造パタン指定をＸＭＬで記述した例を示す図である。図に示すように、＜Ｉｎｐｕｔ＞タグのｐａｔｔｅｒｎ属性により、変換前データ構造パタンがＳＲＳ型であることが示されている。また、ｒｅｐｅａｔ属性で＜人名＞要素が反復することを示している。
＜Ｉｎｐｕｔ＞要素の内容としては、変換前データのタグ構造が記述されている。ここで、＜月／＞、＜日／＞、＜姓／＞、＜名／＞のような空要素として記述された要素が変換前データで実際のデータ値を持つ末端要素となる。なお、図７はＸＭＬによる記述例であるが、同等の情報をＣＳＶなど他のフォーマットで記述してもよい。
【００１９】
次に、データ格納のための配列について説明する。Ｓ型及びＲ型の基本構造パタンにおいては、その末端要素の構造は、要素の値を要素出現順序に並べた一次元配列に対応付けることができる。例えば、図４に示すＳ型構造パタンのＸＭＬデータの例には、図８に示す一次元配列ｄａｔａ［ｉ］を対応付けることができる。ここで、配列の添え字ｉはＳ型構造パタン中の各要素と一対一に対応し、先頭要素の添え字を１とすれば、要素の出現順序と同じ値となる。Ｒ型構造パタンについても同様に、一次元配列に対応付けることができる。
Ｓ型とＲ型の組み合わせで表現される構造パタンの場合について説明する。例えば、図３に示すＤＡＴＡ２は、ＲＳ型の構造パタンを持つＸＭＬデータであるが、ＤＡＴＡ２の末端要素の値に対しては、図９に示す２次元配列ｄａｔａ［ｉ］［ｊ］を対応付けることができる。配列の第１の添え字ｉは、Ｒ型構造パタンで第ｉ番目に出現した要素に対応し、配列の第２の添え字ｊは、Ｒ型構造パタンの第ｉ番目の要素における、Ｓ型構造パタンの第ｊ番目の要素に対応する。Ｓ型およびＲ型のＮ個の組み合わせまで拡張した場合、その末端要素の値は、Ｎ次元配列に対応付けて表現することが可能である。従って、データ格納用の配列としてはＳ型とＲ型の組み合わせ数に等しい次元を持つ多次元配列を用いることができる。
【００２０】
変換前データの構造が固定長、すなわち各基本構造パタン内部の系列数や繰り返し数が固定であれば、多次元配列は添え字の対応テーブルを用いて一次元配列で実装することも可能である。また、可変部分はリスト構造、固定部分には一次元配列など、多次元配列を効率よく実装する公知の方法を適用することができる。
【００２１】
次に、図２に示す変換前データと、図７に示す変換前データ構造パタン指定が入力された場合の、読み込み処理生成部１０２の動作について説明する。
読み込み処理生成部１０２は、変換前データを読み込んで、末端要素のデータ値をデータ格納用の配列に格納する処理のプログラムを生成する。以下、そのプログラムの処理内容を説明する。
前述したように、Ｓ型およびＲ型の組み合わせで表現される構造パタンに対して、一般にＮ次元配列をデータ格納用の配列として用いることができる。図７に示す変換前データ構造パタン指定が入力されると、変換前データ構造パタンはＳＲＳ型と指定されているので、読み込み処理生成部１０２は、データ格納用に３次元配列ｄａｔａ［ｘ］［ｙ］［ｚ］を用いる。配列の大きさについては、予め定められた上限値を用いてもよいし、実際にデータの読み込みに必要な大きさを確保しながら決定してもよい。
【００２２】
まず変換前データ構造パタンで指定された変換前データのタグ構造に基づいて、末端要素と配列要素名の対応テーブルを作成する。このとき、末端要素は、最上位のタグ（以後ルートタグと称す。）から末端要素に至るまでの全ての要素名を含むパスにより表現する。たとえば、図２において、ルートタグは＜ＤＡＴＡ１＞であり、末端要素＜月／＞に対するパスは／ＤＡＴＡ１／月、末端要素＜姓／＞に対するパスは／ＤＡＴＡ１／予約／人名／姓となる。
【００２３】
図１０は、末端要素と配列要素名の対応テーブルの作成処理のフローチャートである。
まず、変数を初期化する（ステップＳＴ１）。初期化される変数は、３次元配列ｄａｔａ［ｘ］［ｙ］［ｚ］の次元を表すｄ、パスを保持するためのｐａｔｈ、３次元配列ｄａｔａ［ｘ］［ｙ］［ｚ］の各次元の添え字を保持するためのｉｎｄｅｘ［ｉ］（ｉ＝１，２，３）である。これらに、初期値として、ｄに０、ｐａｔｈに空文字列、ｉｎｄｅｘ［ｉ］に１を設定する。
【００２４】
次に、変換前データのタグを１つ読み込む（ステップＳＴ２）。図７に示す変換前データ構造パタン指定が入力された場合、変換前データのタグ構造の最初のタグは＜ＤＡＴＡ１＞であるため、まず＜ＤＡＴＡ１＞が読み込まれる。読み込み処理生成部１０２は、読み込んだタグの種類に応じた処理を行う（ステップＳＴ３）。＜ＤＡＴＡ１＞は開始タグなので、ステップＳＴ４に進み、変数ｐａｔｈの末尾にタグ名（この場合、文字列”／ＤＡＴＡ１”）を追加する。変数ｐａｔｈの初期値は空文字列なので、変数ｐａｔｈは”／ＤＡＴＡ１”に更新される。
次に、読み込み処理生成部１０２は、当該タグが反復するタグかどうかを判定する（ステップＳＴ５）。＜ＤＡＴＡ１＞は反復するタグではないので、ステップＳＴ７に進み、ｄの値を１増やして１に更新した後に、次のタグの読み込みを行うためステップＳＴ２に戻る。
【００２５】
次に読み込まれるタグ＜月／＞は空要素タグであるため、ステップＳＴ１１に進み、変数ｐａｔｈの末尾にタグ名”／月”を追加し、変数ｐａｔｈを”／ＤＡＴＡ１／月”とする。さらに、配列ｄａｔａ［ｉｎｄｅｘ［１］］［ｉｎｄｅｘ［２］］［ｉｎｄｅｘ［３］］を追加する。ここでは、ｉｎｄｅｘ［１］、ｉｎｄｅｘ［２］、ｉｎｄｅｘ［３］は全て１なので、ｄａｔａ［ｉｎｄｅｘ［１］］［ｉｎｄｅｘ［２］］［ｉｎｄｅｘ［３］］はｄａｔａ［１］［１］［１］となる。従って、ｐａｔｈ”／ＤＡＴＡ１／月”と配列要素名ｄａｔａ［１］［１］［１］の対を対応テーブルに追加する。
次に、ｉｎｄｅｘ［ｄ］の値が数値であるか否かを判定する（ステップＳＴ１２）。ｉｎｄｅｘ［１］の値は１であり数値なので、これを１増やして２とし（ステップＳＴ１３）、次のタグの読み込みを行うためステップＳＴ２に戻る。
【００２６】
次に読み込まれるタグ＜日／＞は空要素タグであり、読み込み処理生成部１０２は前述のタグ＜月／＞の場合と同様に動作する。すなわち、ｐａｔｈ”／ＤＡＴＡ１／日”と配列要素名ｄａｔａ［２］［１］［１］の対を対応テーブルに追加する。また、ｉｎｄｅｘ［１］の値を１増やして３に更新し、次のタグの読み込みを行うためステップＳＴ２に戻る。
次に読み込まれるタグ＜予約＞は開始タグであるため、まずｐａｔｈが”／ＤＡＴＡ１／予約”に更新される。また、＜予約＞は反復するタグではないので、ｄの値を１増やして２とした後に、ステップＳＴ２に戻る。
【００２７】
次に読み込まれるタグ＜人名＞は開始タグであり、まずｐａｔｈが”／ＤＡＴＡ１／予約／人名”に更新される。次に、＜人名＞は反復するタグであるため、ｉｎｄｅｘ［２］の値を文字”ｉ”とする（ステップＳＴ６）。最後にｄの値を１増やして３とした後に、ステップＳＴ２に戻る。
次に読み込まれるタグ＜姓／＞は空要素タグであり、ｐａｔｈ”／ＤＡＴＡ１／予約／人名／姓”と配列要素名ｄａｔａ［３］［ｉ］［１］の対が対応テーブルに追加される。また、ｉｎｄｅｘ［３］の値を１増やして２に更新する。次のタグ＜名／＞についても同様に、ｐａｔｈ”／ＤＡＴＡ１／予約／人名／名”と配列要素名ｄａｔａ［３］［ｉ］［２］の対を対応テーブルに追加する。
【００２８】
次に読み込まれるタグ＜／人名＞は終了タグなので、ステップＳＴ８に進み、ｐａｔｈの値から末尾のタグ名とスラッシュを取り除き、”／ＤＡＴＡ１／予約”に更新する。また、ｉｎｄｅｘ［３］の値を１減らして１に更新する（ステップＳＴ９）。また、ｄの値を１減らして２に更新する（ステップＳＴ１０）。その後ステップＳＴ２に戻る。
次に読み込まれるタグ＜／予約＞は終了タグなので、同様にｐａｔｈを”／ＤＡＴＡ１”に更新し、ｉｎｄｅｘ［２］の値を１減らし、ｄを１に更新する。
次のタグ＜／ＤＡＴＡ１＞も終了タグであり、同様にｐａｔｈを””（空文字列）、ｄを０に更新する。読み込み処理生成部１０２は、次に読み込めるタグが存在しないため処理を完了する。以上の動作により、対応テーブルが生成される。図１１は、上述の処理によって生成された末端要素のパスと配列要素名との対応テーブルを示す図である。
【００２９】
次に、読み込んだ変換前データの末端要素の値をデータ格納用配列に代入する処理を行う。図１２に、この処理のフローチャートを示す。
まず、変数を初期化する（ステップＳＴ１２１）。初期化される変数は、パスを保持するためのｐａｔｈであり、空文字列が設定される。
次に、変換前データのタグあるいは要素の内容（データ値）を１つ読み込む（ステップＳＴ１２２）。
次に、読み込んだタグあるいはデータ値の種類に応じた処理を行う（ステップＳＴ１２３）。開始タグを読み込んだ場合にはｐａｔｈの末尾に”／タグ名”を追加し（ステップＳＴ１２４）、ステップＳＴ１２２に戻って次のタグ或いはデータ値を読み込む。終了タグを読み込んだ場合には、ｐａｔｈの末尾から”タグ名”と”／”を取り除く（ステップＳＴ１２５）。データ値を読み込んだ場合には、その要素のｐａｔｈに対応する配列要素名を対応テーブルから取得し（ステップＳＴ１２６）、対応する配列要素にデータ値を代入する（ステップＳＴ１２８）。対応テーブルに対応する配列要素名が存在しない場合には、ステップＳＴ１２２に戻る。
以上の処理により、変換前データの末端要素の値がデータ格納用配列に代入される。
【００３０】
読み込み処理生成部１０２は、上述したような変換前データを読み込んで末端要素のデータ値をデータ格納用の配列に格納する処理のプログラムを生成する。なお、対応テーブルの内容以外は定型的かつ静的なものなので、処理プログラムをあらかじめテンプレート化して保持しておいてもよい。
【００３１】
次に、変換命令記憶部１０３に記憶された変換命令について説明する。図１３は、図２に示す変換前データを図３に示す変換後データに変換するための変換命令を示す図である。図に示すように、＜Ｏｕｔｐｕｔ＞要素の内容として、変換後データのタグ構造が記述される。末端要素の値については、変換前データに対するパスで指定される。例えば、＜日付＞要素の値として、変換前データの＜月＞要素と＜日＞要素の値を用いることを、ｐａｔｈ／ＤＡＴＡ１／月と／ＤＡＴＡ１／日によって指定している。また、＜Ｏｕｔｐｕｔ＞タグのｒｅｐｅａｔ属性により、＜予約項目＞要素が反復することを示している。なお、図１３はＸＭＬによる記述例であるが、同等の情報をＣＳＶなど他のフォーマットで記述してもよい。
【００３２】
次に、図２に示す変換前データと、図７に示す変換前データ構造パタン指定と、図１３に示す変換命令が入力された場合の、変換処理生成部１０４の動作について説明する。
変換処理生成部１０４は、データ格納用の配列を読み込んで変換後データを生成する処理のプログラムを生成する。以下、その変換処理プログラムの処理内容を説明する。
まず、変換前データ構造パタン指定記憶部１０１から変換前データ構造パタンが与えられると、読み込み処理生成部１０２と同様に、図１０に示す処理により、図１１に示す変換前データの末端要素のパスと配列要素名との対応テーブルを作成する。
次に、変換命令記憶部１０３から変換命令を読み込み、末端要素の値を表す変換前データに対するパス以外の部分を単に文字列として出力し、変換前データに対するパスの部分は、対応テーブルを参照して配列要素名に置き換え、変数参照により値を出力する。
図１４は、変換処理生成部１０４によって生成されたプログラムの一部の例を示す図である。なお、図１４はＪａｖａ（登録商標）による記述であるがＣ＋＋など他のプログラミング言語を用いてもよい。
【００３３】
読み込み処理生成部１０２及び変換処理生成部１０４において生成される読み込み処理プログラムと変換処理プログラムは、例えば関数ライブラリとして予め作成しておいてもよい。
読み込み処理実行部１０５は、読み込み処理関数を呼び出すことにより、変換前データの読み込みを行う。また、変換処理実行部１０６は、変換処理関数を呼び出すことにより、変換前データの変換を実行する。例えば、前述のように生成された読み込み処理プログラムを読み込み処理実行部１０５が実行することにより、図２に示す変換前データが配列ｄａｔａ［ｘ］［ｙ］［ｚ］に格納される。
図１５は、読み込み処理実行部１０５において読み込み処理プログラムを実行した後の配列要素それぞれの値を示す図である。
次に、図１３に示す変換処理プログラムを変換処理実行部１０６が実行することにより、図３に示す変換後データが生成される。
【００３４】
以上のように、実施の形態１によれば、読み込み処理生成部１０２が変換前データ構造パタン指定に基づいて、変換前データをデータ格納用配列に格納する処理のプログラムを生成し、変換処理生成部１０４が、変換命令と変換前データ構造パタンに基づいて変換後データを生成する処理のプログラムを生成するようにした。これにより、変換対象データや変換処理にとって最適なデータ構造を用いて末端要素が保持するデータ値を直接アクセスする変換処理を実現でき、さらに、読み込み処理及び変換処理のプログラムを自動で作成できる。また、変換処理実行時には配列要素へのデータの代入と配列要素への参照によって変換処理が行えるため、ＤＯＭを使用した場合のように、ＤＯＭ木の記憶領域やＤＯＭ木へのアクセスが必要なく、メモリ使用量を削減して高速にデータ変換を行うことができるという効果が得られる。
【００３５】
実施の形態２．
図１６は、実施の形態２によるデータ変換装置２００の構成を示すブロック図である。図１と同一の符号は同一の構成要素を表している。
実施の形態２では、データ変換装置２００は、変換前データ構造パタン指定記憶部１０１を備えず、構造パタン判別部２０１を備えている。
【００３６】
次に動作について説明する。
構造パタン判別部２０１は、変換前データを解析して変換前データ構造パタン指定を生成する。以下、図２に示す変換前データから図７に示す変換前データ構造パタン指定を生成する動作の一例として、ＤＯＭを用いた方法について説明する。
【００３７】
ＤＯＭのＡＰＩを用いることにより、図２の変換前データから図１７に示す木構造（ＤＯＭ木）を得ることができる。この処理はＸｅｒｃｅｓなど公知のＤＯＭ木生成プログラム（ＤＯＭパーサ）によって実現されるので説明を省略する。図１７中、角の丸い四角で示した木の節点はＸＭＬ文書の要素に対応しており、要素ノードと呼ぶ。一方、四角で示した木の節点は末端要素の値に対応しており、文字列ノードと呼ぶ。また、ＤＯＭ木の根にあたるノード（ここでは「ＤＡＴＡ１」要素）をルートノードと呼ぶ。
【００３８】
図１８は、構造パタン判別部２０１による構造パタン解析処理のフローチャートである。
まず、構造パタン判別部２０１は、ルートノード「ＤＡＴＡ１」を引数として処理を呼び出す（ステップＳＴ１８１）。引数として与えられたノード「ＤＡＴＡ１」は、図１７に示すように、子ノードに要素ノードを持つ（ステップＳＴ１８２、ステップＳＴ１８３）。また、全ての子ノードのタグ名が異なるため（ステップＳＴ１８４）、それぞれの子ノードを引数として再帰的に処理を呼び出す（ステップＳＴ１８５）。そして、子ノードに対する処理の戻り値をリストとし、その先頭に記号”Ｓ”を追加したリストを戻り値とする（ステップＳＴ１８６）。
【００３９】
引数ノードが「月」での呼び出しの場合、子ノードに要素ノードはない（ステップＳＴ１８２）。従って、記号”Ｓ”を戻り値として返す（ステップＳＴ１９０）。引数ノードが「日」の場合も同様で、記号”Ｓ”を戻り値として返す。
一方、引数ノードが「予約」の場合、子ノードは要素ノードを２つ持つが（ステップＳＴ１８２、ステップＳＴ１８３）、タグ名が同一である（ステップＳＴ１８４）。従って、１つの子ノードのみを引数として再帰的に処理を呼び出す（ステップＳＴ１８７）。そして、子ノードに対する戻り値をリストとし、その先頭に記号”Ｒ”を追加したリストを戻り値として返す（ステップＳＴ１８８）。
【００４０】
引数ノードが「人名」での呼び出しの場合、子ノードに要素ノードを持ち（ステップＳＴ１８２、ステップＳＴ１８３）、全てタグ名が異なる（ステップＳＴ１８４）。従って、それぞれの子ノードを引数として再帰的に処理を呼び出す（ステップＳＴ１８５）。引数ノードが「姓」での呼び出しの場合は、子ノードに要素ノードはない（ステップＳＴ１８２、ステップＳＴ１８３）。従って、記号”Ｓ”を戻り値として返す（ステップＳＴ１９０）。引数ノードが「名」の場合も同様である。
【００４１】
以上の処理により、ルートノードを引数として処理を呼び出した結果、図１９に示す、記号ＳとＲからなるリストが得られる。Ｓ型は異なるタグ名の系列なので、Ｓ型が入れ子になって連続していても全体として１つのＳ型とみなすことができる。従って、図１９に示すリストに対して、全ての括弧を取り去る平坦化を行い、連続する記号Ｓを１つのＳに縮退させることで、図２に示す変換前データの構造パタンＳＲＳが得られる。
【００４２】
次に、変換前データのタグ構造を解析する処理の一例として、前述の例と同じく、図１７に示すＤＯＭ木を用いた方法について説明する。
図２０は、構造パタン判別部２０１によるタグ構造解析処理のフローチャートである。
まず、構造パタン判別部２０１は、ルートノード「ＤＡＴＡ１」を引数として処理を呼び出す（ステップＳＴ２０１）。引数で与えられたノード「ＤＡＴＡ１」は子ノードに要素ノードを持つ（ステップＳＴ２０２、ステップＳＴ２０３）。また、全ての子ノードのタグ名が異なるため（ステップＳＴ２０４）、それぞれの子ノードを引数として再帰的に当処理を呼び出す（ステップＳＴ２０５）。子ノードに対する処理の戻り値を連結した文字列を生成し（ステップＳＴ２０６）、その先頭に文字列”＜ＤＡＴＡ１＞”を、末尾に文字列”＜／ＤＡＴＡ１＞”追加して戻り値とする（ステップＳＴ２０７）。
【００４３】
引数ノードが「月」での呼び出しの場合、子ノードに要素ノードはない。従って、文字列”＜月／＞”を戻り値として返す（ステップＳＴ２１１）。引数ノードが「日」の場合も同様で文字列”＜日／＞”を戻り値として返す。
一方、引数ノードが「予約」での呼び出しの場合、子ノードは要素ノードを２つ持つが（ステップＳＴ２０２、ステップＳＴ２０３）、タグ名が同一である（ステップＳＴ２０４）。従って、１つの子ノードのみを引数として再帰的に処理を呼び出す（ステップＳＴ２０８）。子ノードに対する戻り値の先頭に”＜予約＞”を末尾に”＜／予約＞”を追加した文字列を戻り値とする（ステップＳＴ２０９）。また、「予約」が繰り返し要素であることを記録しておく。
【００４４】
引数ノードが「人名」での呼び出しの場合、子ノードに要素ノードを持ち、全てタグ名が異なる。従って、それぞれの子ノードを引数として再帰的に処理を呼び出す（ステップＳＴ２０５）。子ノードに対する戻り値の先頭に”＜人名＞”を末尾に”＜／人名＞”を追加した文字列を戻り値とする（ステップＳＴ２０７）。引数ノードが「姓」での呼び出しの場合は、子ノードに要素ノードはない。従って、文字列”＜姓／＞”を戻り値として返す（ステップＳＴ２１１）。引数ノードが「名」の場合も同様である。
以上の処理により、ルートノードを引数として図２０の処理を呼び出した結果として、図２１に示す文字列が得られる。
【００４５】
構造パタン判別部２０１は、構造パタン解析処理とタグ構造解析処理の結果から、図７に示す変換前データ構造パタン指定を生成する。なお、実施の形態２では、構造パタン解析処理及びタグ構造解析処理に、ＤＯＭを用いたが、ＳＡＸなど他のＡＰＩを用いて行ってもよい。
【００４６】
データ変換装置２００は、構造パタン判別部２０１によって生成された変換前データ構造パタン指定を用いて、変換前データの読み込み処理及び変換処理を行う。読み込み処理及び変換処理については、実施の形態１と同様なので説明を省略する。
【００４７】
以上のように、実施の形態２によれば、構造パタン判別部２０１が変換前データを解析して変換前データ構造パタン指定を自動的に生成するようにしたので、人手により変換前データを解析して構造パタン指定を生成する必要がなくなるという効果が得られる。
【００４８】
実施の形態３．
図２２は、実施の形態３によるデータ変換装置３００の構成を示すブロック図である。図１または図１６と同一の符号は同一の構成要素を表している。実施の形態３では、データ変換装置３００は、変換前データスキーマ記憶部３０１を備えている。
【００４９】
次に、動作について説明する。
変換前データスキーマ記憶部３０１には、変換前データの構造を規定するためのスキーマ記述が記憶されている。図２３は、図２に示す変換前データに対するスキーマ記述の例を示す図である。このスキーマ記述はＤＴＤ（Ｄｏｃｕｍｅｎｔ  Ｔｙｐｅ  Ｄｅｆｉｎｉｔｉｏｎ）と呼ばれるもので、標準化団体であるＷ３Ｃ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ  Ｃｏｎｓｏｒｔｉｕｍ）によって規定されており、ＸＭＬ文書のスキーマ記述として最も一般的に用いられているものである。
図中、「＜！ＥＬＥＭＥＮＴ  ＤＡＴＡ１  （月，日，予約）＞」のように、「＜！ＥＬＥＭＥＮＴ」で始まり「＞」で終わる記述は要素型宣言と呼ばれる。「ＤＡＴＡ１」の部分を要素名、「（月，日，予約）」の部分を内容モデルと呼ぶ。内容モデルにより、要素「ＤＡＴＡ１」が「月」「日」「予約」の３つの子要素を持つこと、すなわちタグの入れ子構造が規定されている。「人名」の後ろに指定された「＊」は、「人名」要素が任意の回数出現することを意味する。要素「月」「日」「姓」「名」の内容は「（＃ＰＣＤＡＴＡ）」によって文字列であることが規定されている。すなわち、これらは子要素を持たない末端要素である。また、開始行の「＜！ＤＯＣＴＹＰＥ  ＤＡＴＡ１」により、開始要素が「ＤＡＴＡ１」であることが規定されている。
【００５０】
構造パタン判別部２０１は、変換前データスキーマ記憶部３０１内の変換前データのスキーマ記述を参照し、変換前データ構造パタン指定を生成する。
以下、図２３に示すスキーマ記述に基づいて、図７の変換前データ構造パタン指定を生成する例について説明する。処理は大きく分けて、スキーマ記述から変換前データのタグ構造を表すＤＯＭ木を生成する工程と、得られたＤＯＭ木を解析して変換前データ構造パタン指定を生成する工程に分けられる。
図２４は、前者の処理のフローチャートである。また、後者の処理は実施の形態２と同様であるため説明を省略する。なお、図２４に示す例は、ＤＴＤの内容モデルに対する処理のみで、それ以外の内容モデルに対する処理を含んでいない。しかし、それらを追加することは容易であり、また図２３のスキーマ記述から図７の変換前データ構造パタン指定の生成処理の説明を主眼とするため、必要な処理のみについて述べる。
【００５１】
まず、構造パタン判別部２０１は、スキーマ記述により開始要素が「ＤＡＴＡ１」であることがわかるので、タグ名「ＤＡＴＡ１」を持つノードを生成してルートノードとする。そして、ルートノードを引数として図２４に示すＤＯＭ木生成処理を呼び出す（ステップＳＴ２４１）。
次に、引数で与えられたノードのタグ名は「ＤＡＴＡ１」であるので、対応する要素型宣言をスキーマ記述から参照し、内容モデルとして「（月，日，予約）」を取得する（ステップＳＴ２４２）。
次に、内容モデルの「月」に対して処理を行う。「月」は要素であるので、タグ名が「月」であるノードを新たに生成してルートノードの子ノードとして登録する（ステップＳＴ２４３〜ステップＳＴ２４５）。次に、新たに生成したノードを引数として図２４の処理を再帰的に呼び出す（ステップＳＴ２４６）。
【００５２】
タグ名「月」を持つノードを引数として処理を呼び出した場合、スキーマ記述中の「月」に対する要素型宣言より、要素「月」の内容モデルとして「（＃ＰＣＤＡＴＡ）」が取得される。これは要素ではなく文字列であるため、ステップＳＴ２４５〜２４６の処理は行わない（ステップＳＴ２４４）。
【００５３】
次に、内容モデルの「日」についても新たにノードを生成して再帰的に図２４の処理を呼び出す。ノード「日」に対する呼び出し処理はノード「月」と同様である。
次に、内容モデルの「予約」に対して新たにノードを生成してルートノードの子ノードとして登録し、生成したノードを引数として図２４の処理を再帰的に呼び出す。
【００５４】
タグ名「予約」を持つノードを引数として処理を呼び出した場合には、スキーマ記述中の「予約」に対する要素型宣言より、要素「予約」の内容モデルとして「（人名＊）」が得られる。「人名」は要素なので、新たにノードを生成してノード「予約」の子ノードとして登録し、生成したノードを引数として図２４の処理を再帰的に呼び出す。以下、同様に再帰的に処理を繰り返すことにより、最終的に図２５に示すＤＯＭ木が得られる。ＤＯＭ木が得られたら、図１８及び図２０に示す実施の形態２と同様の処理により、図７の変換前データ構造パタン指定を生成する。
【００５５】
なお、以上の説明ではスキーマ記述としてＤＴＤを用いた例を説明したが、Ｗ３Ｃが規定するＸＭＬスキーマなど他のスキーマ記述方法を用いてもよい。
データ変換装置３００は、構造パタン判別部２０１によって生成された変換前データ構造パタン指定を用いて、変換前データの読み込み処理及び変換処理を行う。読み込み処理及び変換処理については、実施の形態１と同様なので説明を省略する。
【００５６】
以上のように実施の形態３によれば、変換前データスキーマ記憶部３０１に記憶されたスキーマ記述から、構造パタン判別部２０１が変換前データ構造パタン指定を自動的に生成するようにしたので、人手によりスキーマ記述を解析して構造パタン指定を生成する必要がないという効果が得られる。また、実際の変換前データのサンプルが無く、スキーマ記述のみが与えられている場合でも、読み込み処理および変換処理が生成できるという効果がある。
【００５７】
実施の形態４．
図２６は、実施の形態４によるデータ変換装置４００の構成を示すブロック図である。図１と同一の符号は同一の構成要素を表している。実施の形態４では、データ変換装置４００は、変換命令生成部４０１、変換後データスキーマ記憶部４０２、末端要素変換命令記憶部４０３を備えている。
【００５８】
次に、動作について説明する。
末端要素変換命令記憶部４０３には、末端要素変換命令が記憶されている。末端要素変換命令は、変換後データの末端要素のタグ名と、末端要素の値として用いる変換前データを指し示すパスの対応表である。図２７は、末端要素変換命令の一例を示す図である。例えば、変換後データの末端要素「日付」には、変換前データに対するパス「／ＤＡＴＡ１／月」および「／ＤＡＴＡ１／日」によって指定される値を用いることを意味する。
【００５９】
変換後データスキーマ記憶部４０２には、変換後データの構造情報を表すスキーマが記憶される。図２８は、実施の形態３で説明したＤＴＤで変換後データのスキーマを記述した例を示す図である。
【００６０】
変換命令生成部４０１は、末端要素変換命令と変換後データスキーマに基づいて変換命令を生成する。変換命令生成部４０１の処理は、変換処理生成部１０４による変換処理生成に先だって行うものであるため、例えばＤＯＭを用いて実現すればよい。基本的な処理の流れは、ＤＴＤからＤＯＭ木を生成し、開始要素に対応するＤＯＭ木の根（ルートノード）から、深さ優先で木をなぞりながら要素名を出力して図１３に示すような変換命令を生成する。
【００６１】
以下、図２９を用いて、図２７に示す末端要素変換命令と、図２８に示す変換後データのスキーマを例にとり説明する。まず、開始要素「ＤＡＴＡ２」に対するＤＯＭ木のノードを生成する（図２９”ＤＡＴＡ２”）。これがルートノードとなる。次に、要素「ＤＡＴＡ２」に対する要素型宣言を参照すると、子要素は「予約項目」であるため、図に示すように、「予約項目」に対するＤＯＭ木のノードをルートノードの子ノードとして生成する。また、「予約項目」は繰り返し要素と指定されているので、ルートノードのｒｅｐｅａｔ属性の値として要素名「予約項目」を記録しておく。同様に、「予約項目」の子ノードとして、「日付」および「氏名」に対するノードを生成する。「日付」要素は子要素を持たない末端要素である。図２７の末端要素変換命令から、「日付」要素に対する変換前データに対するパスは「／ＤＡＴＡ１／月  ／ＤＡＴＡ１／日」であるため、この文字列を値として持つノードを生成して「日付」要素に対するノードの子ノードとして登録する。「氏名」要素に対しても同様に処理を行い、最終的に図２９に示すＤＯＭ木が得られる。
【００６２】
変換命令生成部４０１は、生成されたＤＯＭ木をＸＭＬ文字列に変換する。具体的な変換処理としては、前述したように、ルートノードから深さ優先で木を辿りながら各ノードに保持された要素名や末端要素の値を順次出力すればよい。あるいは、Ｗ３Ｃ規定のＤＯＭの標準ＡＰＩであるＤＯＭ  Ｌｅｖｅｌ３  Ｌｏａｄ  ａｎｄ  Ｓａｖｅに規定されている、ＤＯＭ木をＸＭＬ文字列として書き出すＬＳＳｅｒｉａｌｉｚｅｒインタフェースを実装した処理系を用いてもよい。いずれの方法でも、ＤＯＭ木を等価なＸＭＬ文字列に変換する公知の処理が存在するので、それを用いればよい。なお、以上の説明ではスキーマ記述としてＤＴＤを用いた例を説明したが、Ｗ３Ｃが規定するＸＭＬスキーマなど他のスキーマ記述方法を用いてもよい。
変換処理生成部１０４は、変換命令生成部４０１によって生成された変換命令を用いて変換処理プログラムを生成する。変換処理プログラムの内容と読み込み処理については、実施の形態１と同様なので説明を省略する。また、変換前データ構造パタン指定は、実施の形態２あるいは実施の形態３と同様に構造パタン判別部２０１によって生成するようにしてもよい。
【００６３】
以上のように、実施の形態４によれば、末端要素変換命令記憶部４０３に末端要素変換命令を記憶し、変換後データスキーマ記憶部４０２に変換後データの構造情報スキーマを記述しておき、変換命令生成部４０１が末端要素変換命令と変換後データスキーマに基づいて変換命令を生成するようにしたので、変換後データの構造がスキーマで与えられている場合に、末端要素の対応関係だけを規定することで変換処理が行え、スキーマから具体的な変換命令を人手により作成する必要がないという効果がある。
また、スキーマを変更することで、末端要素の対応関係は保ったまま、変換後データの構造を任意に変更できるという効果が得られる。
【００６４】
実施の形態５．
図３０は、実施の形態５によるデータ変換装置５００の構成を示すブロック図である。図１と同一の符号は同一の構成要素を表している。
実施の形態５では、データ変換装置５００は、処理選択部５０１、処理記憶部５０２、処理生成起動部５０３、構造パタン・変換命令記憶部５０４を備えている。
【００６５】
次に、動作について説明する。
構造パタン・変換命令記憶部５０４には、実施の形態１による変換前データ構造パタン指定記憶部１０１が記憶している変換前データ構造パタン指定と、変換命令記憶部１０３が記憶している変換命令の組（以後、読み込み・変換指定と称す。）が複数記憶されている。図３１にその一例を示す。読み込み・変換指定は、要素＜ＴＲＡＮＳ＞の子要素＜ＲＵＬＥ＞に変換前データ構造パタン指定と変換命令の組が記述されている。図３１に示す読み込み・変換指定には、＜ＲＵＬＥ＞要素が２つ含まれており、１つ目の＜ＲＵＬＥ＞要素は図７に示す変換前データ構造パタン指定と図１３に示す変換命令の組が記述されている。
【００６６】
処理生成起動部５０３は、構造パタン・変換命令記憶部５０４から読み込み・変換指定を読み出し、読み込み・変換指定中の変換前データ構造パタン指定を読み込み処理生成部１０２へ供給し、変換命令を変換処理生成部１０４へ供給する。
読み込み処理生成部１０２は、実施の形態１と同様の動作で読み込み処理プログラムを生成し、生成した読み込み処理プログラムを処理生成起動部５０３へ返す。
また、変換処理生成部１０４も実施の形態１と同様の動作で変換処理プログラムを生成し、生成した変換処理プログラムを処理生成起動部５０３へ返す。
処理生成起動部５０３は、読み込み処理プログラムと変換処理プログラムの組を、読み込み・変換指定に付与して処理記憶部５０２に出力する。
この時、図３１に示す読み込み・変換指定中の一番目の＜ＲＵＬＥ＞要素に含まれる変換前データ構造パタン指定に対する読み込み処理プログラムがｐａｒｓｅｒ１という名前のファイルに格納され、変換命令に対する変換処理プログラムがｔｒａｎｓｌａｔｏｒ１という名前のファイルに格納されたとする。また、図３１の二番目の＜ＲＵＬＥ＞要素に含まれる変換前データ構造パタン指定に対する読み込み処理プログラムがｐａｒｓｅｒ２という名前のファイルに格納され、変換命令に対する変換処理プログラムがｔｒａｎｓｌａｔｏｒ２という名前のファイルに格納されたとする。この場合、処理生成起動部５０３は、図３２に示すように、＜ＲＵＬＥ＞要素のｐａｒｓｅｒ属性およびｔｒａｎｓｌａｔｏｒ属性で、生成された処理プログラムが格納されたファイル名を指定して処理記憶部５０２に出力する。
処理記憶部５０２は、処理生成起動部５０３によってファイル名が追加された読み込み・変換指定と、読み込み処理プログラム及び変換処理プログラムのファイルを記憶する。
【００６７】
処理選択部５０１は、変換前データの変換処理を行う際、入力された変換前データ構造パタン指定に対応する処理プログラムを処理記憶部５０２より取得する。例えば、図７に示す変換前データ構造パタン指定が入力された場合、図３２に示す読み込み・変換指定から、読み込み処理プログラムはｐａｒｓｅｒ１、変換処理プログラムはｔｒａｎｓｌａｔｏｒ１というファイルとして保持されていることが分かる。従って、処理選択部５０１は、これらのファイルに格納された処理プログラムを読み込み処理実行部１０５及び変換処理実行部１０６へ供給する。
なお、処理選択部５０１に入力される変換前データ構造パタン指定は、実施の形態１のように変換前データ構造パタン指定記憶部１０１から供給してもよいし、実施の形態２あるいは実施の形態３と同様に構造パタン判別部２０１によって生成するようにしてもよい。
【００６８】
以上のように、実施の形態５によれば、構造パタン・変換命令記憶部５０４が、変換前データの構造パタン及びタグ構造と変換命令を組にして保持し、処理生成起動部５０３が読み込み処理生成部１０２と変換処理生成部１０４により生成された読み込み処理プログラムと変換処理プログラムを組にして出力し、処理記憶部５０２が読み込み処理プログラムと変換処理プログラムの組を記憶し、処理選択部５０１が変換前データ構造パタン指定に対応した読み込み処理プログラムと変換処理プログラムを選択するようにしたので、予め複数の読み込み・変換指定を用意しておくことにより、異なる構造パタンを持つ変換前データに対して、変換前データに応じた処理を動的に選択して変換処理を実行することができる。
【図面の簡単な説明】
【００６９】
【図１】この発明の実施の形態１による、データ変換装置の構成を示すブロック図である。
【図２】この発明の実施の形態１による、変換前ＸＭＬデータの例を示す図である。
【図３】この発明の実施の形態１による、図２に示す変換前ＸＭＬデータの変換後データを示す図である。
【図４】この発明の実施の形態１による、Ｓ型の構造パタンを持つＸＭＬデータの一例を示す図である。
【図５】この発明の実施の形態１による、Ｒ型の構造パタンを持つＸＭＬデータの一例を示す図である。
【図６】この発明の実施の形態１による、この規則に準拠したＸＭＬデータの例を示す図である。
【図７】この発明の実施の形態１による、変換前データ構造パタン指定をＸＭＬで記述した例を示す図である。
【図８】この発明の実施の形態１による、データ格納配列の例を示す図である。
【図９】この発明の実施の形態１による、データ格納配列の例を示す図である。
【図１０】この発明の実施の形態１による、末端要素と配列要素名との対応テーブルの作成処理のフローチャートである。
【図１１】この発明の実施の形態１による、末端要素のパスと配列要素名との対応テーブルの例を示す図である。
【図１２】この発明の実施の形態１による、変換前データの末端要素の値を配列に代入する処理のフローチャートである。
【図１３】この発明の実施の形態１による、変換命令の例を示す図である。
【図１４】この発明の実施の形態１による、変換処理生成部によって生成されたプログラムの例を示す図である。
【図１５】この発明の実施の形態１による、読み込み処理実行部において読み込み処理プログラムを実行した後の配列要素の値の例を示す図である。
【図１６】この発明の実施の形態２による、データ変換装置の構成を示すブロック図である。
【図１７】この発明の実施の形態２による、変換前データに基づいて生成されるＤＯＭ木の例を示す図である。
【図１８】この発明の実施の形態２による、構造パタン判別部による構造パタン解析処理のフローチャートである。
【図１９】この発明の実施の形態２による、構造パタン解析処理によって得られるリストの例を示す図である。
【図２０】この発明の実施の形態２による、構造パタン判別部によるタグ構造解析処理のフローチャートである。
【図２１】この発明の実施の形態２による、タグ構造解析処理によって得られるリストの例を示す図である。
【図２２】この発明の実施の形態３による、データ変換装置の構成を示すブロック図である。
【図２３】この発明の実施の形態３による、変換前データに対するスキーマ記述の例を示す図である。
【図２４】この発明の実施の形態３による、スキーマ記述から変換前データのタグ構造を表すＤＯＭ木を生成する処理のフローチャートである。
【図２５】この発明の実施の形態３による、スキーマ記述から変換前データのタグ構造を表すＤＯＭ木を生成する処理によって得られたＤＯＭ木の例を示す図である。
【図２６】この発明の実施の形態４による、データ変換装置の構成を示すブロック図である。
【図２７】この発明の実施の形態４による、末端要素変換命令の一例を示す図である。
【図２８】この発明の実施の形態４による、ＤＴＤで変換後データのスキーマを記述した例を示す図である。
【図２９】この発明の実施の形態４による変換命令生成処理を説明する図である。
【図３０】この発明の実施の形態５による、データ変換装置の構成を示すブロック図である。
【図３１】この発明の実施の形態５による、構造パタン・変換命令記憶部に記憶されている読み込み・変換指定の例を示す図である。
【図３２】この発明の実施の形態５による、処理プログラムファイル名が属性として記述された読み込み・変換指定の例を示す図である。
【符号の説明】
【００７０】
１００，２００，３００，４００，５００  データ変換装置、１０１  変換前データ構造パタン指定記憶部、１０２  読み込み処理生成部（読み込み処理実行部）、１０３  変換命令記憶部、１０４  変換処理生成部（変換処理実行部）、１０５  読み込み処理実行部、１０６  変換処理実行部、２０１  構造パタン判別部、３０１  変換前データスキーマ記憶部、４０１  変換命令生成部、４０２  変換後データスキーマ記憶部、４０３  末端要素変換命令記憶部、５０１  処理選択部、５０２  処理記憶部、５０３  処理生成起動部、５０４  構造パタン・変換命令記憶部。
【図１】
2006163820.tif 000003
【図２】
2006163820.tif 000004
【図３】
2006163820.tif 000005
【図４】
2006163820.tif 000006
【図５】
2006163820.tif 000007
【図６】
2006163820.tif 000008
【図７】
2006163820.tif 000009
【図８】
2006163820.tif 000010
【図９】
2006163820.tif 000011
【図１０】
2006163820.tif 000012
【図１１】
2006163820.tif 000013
【図１２】
2006163820.tif 000014
【図１３】
2006163820.tif 000015
【図１４】
2006163820.tif 000016
【図１５】
2006163820.tif 000017
【図１６】
2006163820.tif 000018
【図１７】
2006163820.tif 000019
【図１８】
2006163820.tif 000020
【図１９】
2006163820.tif 000021
【図２０】
2006163820.tif 000022
【図２１】
2006163820.tif 000023
【図２２】
2006163820.tif 000024
【図２３】
2006163820.tif 000025
【図２４】
2006163820.tif 000026
【図２５】
2006163820.tif 000027
【図２６】
2006163820.tif 000028
【図２７】
2006163820.tif 000029
【図２８】
2006163820.tif 000030
【図２９】
2006163820.tif 000031
【図３０】
2006163820.tif 000032
【図３１】
2006163820.tif 000033
【図３２】
2006163820.tif 000034