(57)【要約】【課題】構造化データを当該データの階層構造を極力保った状態で表形式データに変換するための変換法を自動的に生成できるようにする。【解決手段】対象／記述境界決定部１２４は、構造化データの階層構造を上位層をなす第１の層と下位層をなす第２の層とに分割するための境界を決定する。変換法生成部１２５は、上記第１の層を表の行方向及び列方向のうちの一方である第１の方向に対応付け、上記第２の層を上記表の行方向及び列方向のうちの他方である第２の方向に対応付けるための変換法を示す変換法情報を生成する。【選択図】図２
2007094971.tif 000002
【特許請求の範囲】
【請求項１】
構造化データを表形式データに変換するための変換法を計算機により自動生成する変換法自動生成方法において、
前記構造化データの階層構造を、上位層をなす第１の層と下位層をなす第２の層とに分割するステップと、
前記第１の層を表の行方向及び列方向のうちの一方である第１の方向に対応付け、前記第２の層を前記表の行方向及び列方向のうちの他方である第２の方向に対応付けるための変換法を示す変換法情報を生成する変換法生成ステップと
を具備することを特徴とする変換法自動生成方法。
【請求項２】
前記分割するステップは、
前記構造化データの階層構造内で同じ深さの要素のうちタグ名が異なる要素の割合が第１のレベル以上となるか、或いは当該同じ深さの要素のうちタグ名が同一の要素の割合が第２のレベル以上となる最大深さを判別する判別ステップと、
前記判別ステップの判別結果に基づいて前記第１の層及び前記第２の層の境界を決定して、前記構造化データの階層構造のルートから前記検出された最大深さまでの層を前記第１の層とし、前記構造化データの階層構造の前記検出された最大深さより深い層を前記第２の層とする境界決定ステップと
を含むことを特徴とする請求項１記載の変換法自動生成方法。
【請求項３】
前記第１及び第２のレベルを１００％としたことを特徴とする請求項２記載の変換法自動生成方法。
【請求項４】
前記変換法情報は、前記構造化データの階層構造における各パスについて、当該パス、当該パスに対応する見出しをどこから得るかを表す見出し決定法情報及び当該パスに対応するセルの値をどこから得るかを表すセル値決定法情報を含む配列から構成されることを特徴とする請求項２記載の変換法自動生成方法。
【請求項５】
前記見出し決定法情報及び前記セル値決定法情報は、対応するパスで特定される要素のタグ名、当該要素の内容であるテキスト、当該要素の特定の子要素の内容であるテキスト、当該要素の特定の属性値及び定数のいずれかを指定する請求項４記載の変換法自動生成方法。
【請求項６】
前記変換法生成ステップは、
前記第１の層内で同じ深さの各要素のタグ名が全て異なる場合、当該各要素に対応付ける見出しを指定する前記見出し決定法情報として前記定数を決定し、当該各要素に対応付けるセルの値を指定する前記セル値決定法情報として当該各要素のタグ名を決定するステップと、
前記第１の層内で同じ深さの各要素のタグ名が全て同じ場合、当該各要素に対応付ける見出しを指定する前記見出し決定法情報として、当該各要素に共通のタグ名及び前記定数のいずれかを予め定められた優先度に従って決定し、当該各要素に対応付けるセルの値を指定する前記セル値決定法情報として、当該各要素のテキスト、当該各要素の特定の子要素のテキスト、当該各要素の特定の属性値及び前記定数のいずれかを予め定められた優先度に従って決定するステップと
を含むことを特徴とする請求項５記載の変換法自動生成方法。
【請求項７】
前記変換法生成ステップは、
前記第２の層内で子ノードを持たない要素について、当該要素に対応付ける見出しを指定する前記見出し決定法情報として、当該要素のタグ名及び前記定数のいずれかを予め定められた優先度に従って決定し、当該要素に対応付けるセルの値を指定する前記セル値決定法情報として、当該要素のテキスト、当該要素の特定の子要素のテキスト、当該要素の特定の属性値及び前記定数のいずれかを予め定められた優先度に従って決定するステップと、
前記第２の層内で子ノードを持つ要素について、当該要素に対応付ける見出しを指定する前記見出し決定法情報として、当該要素のタグ名及び前記定数のいずれかを予め定められた優先度に従って決定し、当該要素に対応付けるセルの値を指定する前記セル値決定法情報として指定なしを決定するステップと
を含むことを特徴とする請求項５記載の変換法自動生成方法。
【請求項８】
前記生成された変換法情報を端末に転送して画面表示するステップと、
前記端末に表示された変換法情報をユーザの前記端末の操作に基づいて修正するステップと
を更に具備することを特徴とする請求項１記載の変換法自動生成方法。
【請求項９】
前記変換法情報の生成に用いられた前記構造化データを当該変換法情報に基づいて表形式データに変換して表形式で出力するステップを更に具備することを特徴とする請求項１記載の変換法自動生成方法。
【請求項１０】
構造化データを表形式データに変換するための変換法を自動生成する変換法自動生成プログラムであって、
計算機に、
前記構造化データの階層構造を、上位層をなす第１の層と下位層をなす第２の層とに分割するステップと、
前記第１の層を表の行方向及び列方向のうちの一方である第１の方向に対応付け、前記第２の層を前記表の行方向及び列方向のうちの他方である第２の方向に対応付けるための変換法を示す変換法情報を生成する変換法生成ステップと
を実行させるための変換法自動生成プログラム。
【請求項１１】
前記分割するステップは、
前記構造化データの階層構造内で同じ深さの要素のうちタグ名が異なる要素の割合が第１のレベル以上となるか、或いは当該同じ深さの要素のうちタグ名が同一の要素の割合が第２のレベル以上となる最大深さを判別する判別ステップと、
前記判別ステップの判別結果に基づいて前記第１の層及び前記第２の層の境界を決定して、前記構造化データの階層構造のルートから前記検出された最大深さまでの層を前記第１の層とし、前記構造化データの階層構造の前記検出された最大深さより深い層を前記第２の層とする境界決定ステップと
を含むことを特徴とする請求項１０記載の変換法自動生成プログラム。
【請求項１２】
前記変換法情報は、前記構造化データの階層構造における各パスについて、当該パス、当該パスに対応する見出しをどこから得るかを表す見出し決定法情報及び当該パスに対応するセルの値をどこから得るかを表すセル値決定法情報を含む配列から構成されることを特徴とする請求項１１記載の変換法自動生成プログラム。
【請求項１３】
構造化データを表形式データに変換するための変換法を自動生成する変換法自動生成装置において、
前記構造化データの階層構造を上位層をなす第１の層と下位層をなす第２の層とに分割するための境界を決定する境界決定手段と、
前記第１の層を表の行方向及び列方向のうちの一方である第１の方向に対応付け、前記第２の層を前記表の行方向及び列方向のうちの他方である第２の方向に対応付けるための変換法を示す変換法情報を生成する変換法生成手段と
を具備することを特徴とする変換法自動生成装置。
【請求項１４】
前記構造化データの階層構造内で同じ深さの要素のうちタグ名が異なる要素の割合が第１のレベル以上となるかを判別する第１のタグ名判別手段と、
前記構造化データの階層構造内で同じ深さの要素のうちタグ名が同一の要素の割合が第２のレベル以上となるかを判別する第２のタグ名判別手段と
を更に具備し、
前記境界決定手段は、前記同じ深さの要素のうちタグ名が異なる要素の割合が前記第１のレベル以上とならず、且つ当該同じ深さの要素のうちタグ名が同一の要素の割合が前記第２のレベル以上とならない場合に、当該深さを前記境界と決定する
ことを特徴とする請求項１３記載の変換法自動生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化データを表形式データに変換するための変換法を自動生成するのに好適な変換法自動生成方法、変換法自動生成プログラム及び変換法自動生成装置に関する。
【背景技術】
【０００２】
一般に、論理構造を持つデータは構造化データと呼ばれる。構造化データにおいて、当該データの論理構造は、当該データ中に記述されたタグによって示される場合がある。このタグを用いて論理構造が表現された構造化データは、計算機で各種目的に合わせて解釈ないし加工して利用する処理に適している。
【０００３】
さて、タグを用いてデータを記述する手段として、ＸＭＬ(Extensible Markup Language)が広く利用されている。ＸＭＬは、意味付けされたタグによるデータの階層化が可能で且つ構造の自由な拡張性に富むという特長を持つ。このＸＭＬを用いて記述されたデータはＸＭＬデータと呼ばれる。ＸＭＬデータは、タグを用いて論理的に木構造で表現される構造化データの代表として知られている。
【０００４】
ＸＭＬは、純粋なデータとレイアウト情報を分離する思想に基づいている。帳票データをデータベースに蓄積する場合を例にとると、ＸＭＬは、フィールド値やそれらの識別情報、及び情報の階層情報のみをデータとして保存する。このようなデータ、つまりレイアウト情報を含まないＸＭＬデータを帳票として参照するには、ＸＭＬデータの形式毎に、レイアウト情報を含んだＸＭＬへの変換法を定義したスタイルシートを作成する必要がある。
【０００５】
スタイルシートは、一種のアプリケーション（アプリケーションプログラム）である。一般に、このスタイルシートとレイアウト情報を含まないＸＭＬデータとをＸＳＬＴ(XSL Transformations, XSL:Extensible Stylesheet Language)への入力として与えることで、当該データを、帳票として参照可能な、レイアウト情報を含むＸＭＬデータに変換することができる。したがって、スタイルシートを作成しない場合には、ユーザは元のＸＭＬデータをテキスト形式で参照しなければならない。
【０００６】
ここで、ＸＭＬデータを直接蓄積するネイティブＸＭＬデータベースを、例えば関係データベースと比較する。関係データベースでは、データの蓄積に元々「表」が用いられる。このため関係データベースにおいては、特別のアプリケーションを開発しなくても、当該データベースにどのようなデータが格納されているかを、ユーザは表の内容を単純に出力（表示またはプリント）することによって確認できる。
【０００７】
これに対し、ネイティブＸＭＬデータベースの場合、当該データベースにどのようなデータが格納されているかをユーザが確認するには、上述のように、データ構造に応じたＸＳＬＴのスタイルシート（つまりアプリケーション）を作成するか、もしくは元のＸＭＬデータをテキスト形式で参照するしかない。このテキスト形式のＸＭＬデータは、
（１）タグの反復が冗長である
（２）テキストが縦長になる
傾向がある。このため、テキスト形式のＸＭＬデータは、情報項目の構造間の対応関係をユーザが直感的に読み取る（理解する）のには適さない。つまり、テキスト形式のＸＭＬデータは、ユーザにとって決して見やすく且つ理解しやすいものではない。
【０００８】
さてＸＭＬに関し、データを当該ＸＭＬで蓄積すれば、そのデータの最大限の活用が可能になることが従来から期待されている。ところが、このような期待の一方で、蓄積データの増大と共に、当該データをユーザが簡単に参照する手段の不在、アプリケーション開発量の増大というデメリットが大きくなる問題が存在する。
【０００９】
そこで、例えば特許文献１には、ＸＭＬデータ（ＸＭＬ文書）を表形式のデータに変換して当該表形式のデータを表形式のデータベースに格納する技術（先行技術）が提案されている。この先行技術においては、ＸＭＬデータから抽出されたデータ（例えば階層構造の最も深い層の要素）が、レコードのフィールド（項目）の値として、表の行位置に格納される。レコード内の各フィールドの値（データ）は、当該データの要素種別に対応付けられる列見出が設定された列に位置する。つまり、ＸＭＬデータから抽出されたデータは、表内にマトリクス状に格納される。この先行技術によれば、ユーザはＸＭＬデータを表形式で参照することが可能となる。
【特許文献１】特開２００２−１１７０２０号公報（段落００２３乃至００２８）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら上記先行技術においては、ＸＭＬデータから抽出されたデータは、表内に単にマトリクス状に格納されるだけであり、当該表は元のＸＭＬデータの階層構造を何ら反映していない。このため、ユーザはＸＭＬデータを表形式で参照できても、見出間の階層構造を簡単に理解することは困難である。
【００１１】
本発明は上記事情を考慮してなされたものでその目的は、構造化データを当該データの階層構造を極力保った状態で表形式データに変換するための変換法を自動的に生成できる変換法自動生成方法、変換法自動生成プログラム及び変換法自動生成装置を提供することにある。
【課題を解決するための手段】
【００１２】
本発明の１つの観点によれば、構造化データを表形式データに変換するための変換法を自動生成する変換法自動生成方法が提供される。この方法は、前記構造化データの階層構造を、上位層をなす第１の層と下位層をなす第２の層とに分割するステップと、前記第１の層を表の行方向及び列方向のうちの一方である第１の方向に対応付け、前記第２の層を前記表の行方向及び列方向のうちの他方である第２の方向に対応付けるための変換法を示す変換法情報を生成する変換法生成ステップとを具備する。
【発明の効果】
【００１３】
本発明によれば、構造化データを当該データの階層構造を極力保った状態で表形式データに変換するための変換法を自動的に生成できる。したがって、この生成された変換法に基づいて、対応する構造化データを表形式データに変換して表形式で出力するならば、ユーザは、元の構造化データからは理解するのが困難な、情報項目の構造間の対応関係を表から直感的に理解することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係る計算機システムの構成を示すブロック図である。この計算機システムは、計算機１０及び当該計算機１０と接続される端末（ユーザ端末）２０から構成される。本実施形態において端末２０は計算機１０に直接接続されているものとする。しかし、端末２０がネットワークを介して計算機１０と接続されていても構わない。
【００１５】
計算機１０は、ＸＭＬデータベース１１、変換法自動生成モジュール１２、メモリ１３及びＸＭＬ−表変換モジュール１４を含む。ＸＭＬデータベース１１は、構造化データ、例えばＸＭＬデータを保存する。
【００１６】
変換法自動生成モジュール１２は、ＸＭＬデータベース１１に保存されているＸＭＬデータ毎に、当該データを表形式データに変換するための変換法（変換規則）を自動的に生成する。本実施形態において、変換法自動生成モジュール１２は、計算機１０が有するＣＰＵ（図示せず）が読み取って実行することが可能なプログラムである。このプログラム（変換法自動生成モジュール１２）は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラムが、ネットワークを介して計算機１０にダウンロード（頒布）されても構わない。
【００１７】
メモリ１３の一部は、変換法自動生成モジュール１２及びＸＭＬ−表変換モジュール１４の作業用領域に用いられる。メモリ１３の他の一部は、変換法格納領域１３１及びカスタマイズ情報領域１３２に用いられる。変換法格納領域１３１には、変換法自動生成モジュール１２によって生成された変換法を記述した情報（変換法情報）が格納される。この変換法情報は、例えばユーザの操作による端末２０からの編集のために、ファイル形式で出力されることがある。編集前の変換法情報及び編集後の変換法情報の各々は、いずれもＸＭＬ−表変換モジュール１４によるＸＭＬデータから表形式データへの変換に利用可能である。
【００１８】
図１では、作図の都合上、メモリ１３に、１つの変換法格納領域１３１だけが確保されている状態が示されている。しかし、変換法格納領域１３１が、ＸＭＬデータ毎に当該ＸＭＬデータに対応付けてメモリ１３に確保される構成とすることも可能である。また、生成された変換法情報を例えばファイル形式でハードディスクドライブ（ＨＤＤ）のような外部記憶装置に保存することも可能である。
【００１９】
変換法格納領域１３１は、変換法領域（ＲＵＬＥＳ領域）１３１ａ及び境界領域（ＢＯＲＤＥＲ領域）１３１ｂとから構成される。ＲＵＬＥＳ領域１３１ａには、変換法の配列（ＲＵＬＥＳ）が格納される。各配列は、｛パス、見出し決定法、セル値決定法｝から構成される。この配列における見出し決定法（見出し決定法情報）及びセル値決定法（セル値決定法情報）は、それぞれ値（見出し及びセル値）の取得元を指定する。指定可能な取得元は、次に列挙する
・ＴＡＧＮＡＭＥ        パスのタグ名を値とする
・ＴＥＸＴ              タグの内容テキストを値とする
・ＣＨＩＬＤ(“名前”)  指定のタグ名を持つ子要素の内容テキストを値とする
・ＡＴＴＲ(“名前”)    指定の名前を持つ属性値を値とする
・“文字列”            指定の文字列を値とする
・ｎｕｌｌ              指定なし（値不要）
のいずれかである。
【００２０】
ＲＵＬＥＳ領域１３１ａのサイズは、当該領域１３１ａに格納すべき変換法（変換法情報）のサイズに応じて自動的に可変される。ＢＯＲＤＥＲ領域１３１ｂは、変換法を構成する各配列のうち、対象層の変換法と記述層の変換法の階層構造上の境界を表すインデックスを格納する。本実施形態では、このインデックスで示されるＲＵＬＥＳ領域１３１ａの位置以降に記述層の変換法が格納される。対象層と記述層とについては後述する。
【００２１】
カスタマイズ情報領域１３２には、カスタマイズ情報ＶＡＬＳが格納される。このカスタマイズ情報ＶＡＬＳを、例えばファイルにより提供することが可能である。カスタマイズ情報ＶＡＬＳは、セル値取得元の候補を、優先度の高い順に変換法の値の取得元と同じ表記で与えられる。但し、ＴＡＧＮＡＭＥとｎｕｌｌは除かれる。カスタマイズ情報ＶＡＬＳは、例えば｛ＣＨＩＬＤ（“名前”），ＡＴＴＲ（“ｎａｍｅ”），ＣＨＩＬＤ（“ｎａｍｅ”），“−”｝のように与えられる。ここで、“−”は、定数“−”をセル値とすることを表す。
【００２２】
ＸＭＬ−表変換モジュール１４は、ＸＭＬデータベース１１に保存されているＸＭＬデータを、当該ＸＭＬデータに対応付けて変換法格納領域１３１に格納されている変換法（変換法情報）に従って、表形式データに変換する。ＸＭＬ−表変換モジュール１４は、計算機１０が有するＣＰＵが読み取って実行することが可能なプログラムである。このプログラム（ＸＭＬ−表変換モジュール１４）は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラムが、ネットワークを介して計算機１０にダウンロードされても構わない。また、変換法自動生成モジュール１２及びＸＭＬ−表変換モジュール１４が１つのプログラムとして提供されても構わない。
【００２３】
図２は、図１中の変換法自動生成モジュール１２の機能構成を示すブロック図である。この変換法自動生成モジュール１２の構成についての理解を容易にするために、ＸＭＬデータの一般的な特徴及びＸＭＬを表で表現する仕組みについて説明する。
【００２４】
＜ＸＭＬデータの一般的な特徴＞
まず、ＸＭＬデータの構造上の一般的な特徴について説明する。ここでは、ＸＭＬデータの表形式データへの変換という観点から、構造上の共通性のない情報の集まりを含めたＸＭＬ一般ではなく、日常の業務ソフトウェアが取り扱うような、定型的項目群からなる情報の集まり、及び、それらを分類する木構造を想定する。このようなＸＭＬデータにおける階層構造は、通常、よりルート要素（ルートノード）に近い（階層的に浅い）要素（ノード）と、ルート要素からより遠い（階層的に深い）要素について、次のように構成されるのが一般的である。
【００２５】
（１）深い層は、浅い層の部分を表わす
（２）深い層は、浅い層の構成メンバーを表わす
（３）深い層は、浅い層の特徴記述項目の値を記述する。
【００２６】
この構成について、別の解釈をするならば、より浅い要素について、より深い層が、その下位構造や属性などを説明または記述していると捉えることもできる。ある深さの階層を境界として、それより浅い層を、記述の対象に用いられることを意味する「対象層」と呼び、それより深い層を記述に用いられることを意味する「記述層」と呼ぶ。
【００２７】
＜ＸＭＬを表で表現する仕組み＞
次に、本実施形態で適用される、ＸＭＬを表で表現する仕組みについて、図３及び図４を参照して説明する。図３は、ＸＭＬデータの階層構造３１の一例を示す。図４は、この階層構造３１を保ちながら、ＸＭＬデータを表で表現する仕組みを示す。
【００２８】
図３に示す階層構造３１を持つＸＭＬデータが、定型的項目群から構成される場合、次のようにして、表による表現に変換できる。
【００２９】
（１）上記したように、ＸＭＬデータの階層構造（木構造）は、ある深さを境に、対象層（第１の層）と記述層との２つに分割可能であることが多い。そこで、図３に示す階層構造３１を持つＸＭＬデータを、当該階層構造３１の、ある深さ３２で相対的に浅い層３３と深い層３４とに分割する。深さ３２を対象／記述境界３２と呼び、浅い層３３及び深い層３４を、それぞれ対象層３３及び記述層３４と呼ぶ。階層構造（木構造）３１の対象層３３及び記述層３４は、一般にタグ付けに特徴がある。つまり、図３の階層構造３１のように、同じ深さの要素（ノード）のタグ名（要素名）が、ルートから１つ下位の階層の要素のタグ名Ｘのように全て同じであるか、または、ルートから２つ下位の階層の要素のタグ名Ａ，Ｂ，Ｃ，Ｄのように全て異なるなら、その階層は対象層３３に属すると見なすことができる。一方、同じ深さの要素のタグ名が、タグ名Ｐ，Ｑのセット及びタグ名Ｒ，Ｓのセットのように部分木毎に全て同じセットであるなら、その階層は記述層３４に属すると見なすことができる。
【００３０】
（２）対象層３３の要素を、図４に示すように、表３５の例えば行方向に対応付ける（割り当てる）。ここで対象層３３が、本実施形態のように１より大きい深さの階層構造を持つとき、当該対象層３３の要素を、その階層構造に対応する大分類〜小分類の行見出しを持った行に構成する。この対象層３３の大分類〜小分類に列見出しを持たせることもできる。
【００３１】
（３）記述層３４の要素（記述層３４の同一セットの要素）を、図４に示すように、表３５の例えば列方向に対応付ける。ここで記述層３４が、本実施形態のように１より大きい深さの階層構造を持つとき、当該記述層３４の要素を、その階層構造に対応する大分類〜小分類の列見出しを持った列に構成する。
【００３２】
（４）本実施形態では、表の各列見出し及びセルの値（セル値）として、
ａ：タグ名、ｂ：テキスト、ｃ：特定子要素のテキスト、ｄ：特定属性値、ｅ：定数
のいずれかのデータを用いることができる。
【００３３】
（５）列見出し及びセルの値（セル値）は、対象層及び記述層の各々について、次のように決定される。  
5-1)対象層については、同じ深さの要素のタグ名により、例えば次の優先度
全て異なるとき、  列見出し＝｛ｅ｝、    セル値＝｛ａ｝
全て同一のとき、  列見出し＝｛ｅ，ａ｝、セル値＝｛ｂ，ｃ，ｄ，ｅ｝
同一セットのとき、列見出し＝｛ｅ，ａ｝、セル値＝｛ｂ，ｃ，ｄ，ｅ｝
で値が決定される。ここで｛  ｝内の要素の優先度は、左側の要素ほど高いことを表す。例えば｛ｂ，ｃ，ｄ，ｅ｝は、ｂ（テキスト）の優先度が最も高く、以下、ｃ（特定子要素のテキスト）、ｄ（特定属性値）、ｅ（定数）の順に優先度が低くなることを表す。
【００３４】
5-2)記述層については、下位構造の有無により、例えば次の優先度
末端のとき、      列見出し＝｛ｅ，ａ｝、セル値＝｛ｂ，ｃ，ｄ，ｅ｝
末端でないとき、  列見出し＝｛ｅ，ａ｝、セル値＝なし
で値が決定される。
【００３５】
ここで、｛  ｝内の要素と、その要素の優先度は一例である。以下の例では、上記の列見出し＝｛ｅ，ａ｝に代えて、列見出し＝｛ａ｝が用いられる。
【００３６】
また、上記（２）及び（３）における「行」と「列」も一例であり、「行」を「列」に、「列」を「行」に入れ替えることも可能である。
【００３７】
再び図２を参照すると、変換法自動生成モジュール１２は、深さカウンタ１２１、第１のタグ名判別部１２２、第２のタグ名判別部１２３、対象／記述境界決定部１２４及び変換法生成部１２５から構成される。
【００３８】
深さカウンタ１２１は、変換法生成の対象となるＸＭＬデータの階層構造のルートからの深さｉを表す。
【００３９】
第１のタグ名判別部１２２は、深さカウンタ１２１によって示される深さｉのノードが全て異なるタグ名であるか否かを判別する。第２のタグ名判別部１２３は、上記深さｉのノードが全て同一のタグ名であるか否かを判別する。
【００４０】
対象／記述境界決定部１２４は、第１のタグ名判別部１２２及び第２のタグ名判別部１２３の判別結果に基づいて対象／記述境界３２を決定する。
【００４１】
変換法生成部１２５は、第１のタグ名判別部１２２及び第２のタグ名判別部１２３の判別結果に基づいて、深さｉのＸＭＬデータから表形式データへの変換法｛パス、見出し決定法、セル値決定法｝を生成する。
【００４２】
変換法生成部１２５は、第１の変換法生成部１２６及び第２の変換法生成部１２７から構成される。第１の変換法生成部１２６は、深さｉが対象層に属する場合に、当該深さｉのＸＭＬデータから表形式データへの変換法を生成する。第１の変換法生成部１２６は、カスタマイズ情報領域１３２に格納されているカスタマイズ情報ＶＡＬＳに基づいてセル値決定法を生成するセル値決定法生成部１２６ａを含む。第２の変換法生成部１２７は、深さｉが記述層に属する場合に、当該深さｉのＸＭＬデータから表形式データへの変換法を生成する。
【００４３】
次に、本実施形態の動作について、変換法自動生成モジュール１２による変換法自動生成処理の手順を例に、図５乃至図９を参照して説明する。ここで図５は変換法自動生成処理の手順を示すフローチャート、図６は変換法自動生成処理における処理Ｐ１の手順を示すフローチャート、図７は変換法自動生成処理における処理Ｐ２の手順を示すフローチャートである。図８は上記変換法自動生成処理の対象となるＸＭＬデータ４０の一例を示し、図９は当該ＸＭＬデータ４０の階層構造４１を示す。
【００４４】
まず、ユーザ操作に従う端末２０からの指示により、変換法自動生成モジュール１２が起動されたものとする。ここでは、ＸＭＬデータベース１１に格納されているＸＭＬデータのうち、図８に示すＸＭＬデータ４０を表形式データに変換するための変換法（変換規則）の生成が指示されたものとする。
【００４５】
変換法自動生成モジュール１２が起動されると、深さカウンタ１２１の値（深さｉ）が０に初期設定される（ステップＳ１）。ここで、ｉ＝０は、ルートノードから１つ下位の階層を表す。第１のタグ名判別部１２２は、ＸＭＬデータ４０の階層構造４１（図９参照）に従い、深さカウンタ１２１の示す深さｉのノード（カレントノード）群は全て異なるタグ名か否かを判別する（ステップＳ２）。もし、全て異なるタグ名であるならば、第１のタグ名判別部１２２は第１の変換法生成部１２６に制御を渡す。
【００４６】
第１の変換法生成部１２６は、深さｉのノード群が全て異なるタグ名の場合、対象層における深さｉの変換法の配列ＲＵＬＥＳ［ｉ］＝｛パス、見出し決定法、セル値決定法｝におけるパスとして、ルートノードから深さｉの各ノードまでのカレントパスを決定する（ステップＳ３）。このカレントパスは物理的には、深さｉの各ノード毎に異なる。しかし本実施形態では、以下の表記を用いることにより、深さｉの各ノードに共通のカレントパスとして取り扱われる。カレントパスは、基本的には、ルートノードから深さｉのノードまでのパス上の各ノードのタグ名によって表される。但し、同じ深さの各ノードのタグ名が異なる場合には、タグ名に代えて、ノードによってタグ名が異なることを表す記号、例えば＊が用いられる。これにより、図３に示す階層構造３１のＸＭＬデータの例では、深さｉが１の場合、即ち、深さｉがルートノードから２つ下位の階層を示す場合、上記ステップＳ３で決定されるカレントパスは、Ｒｏｏｔ／Ｘ／＊のように表される。決定されたパスは、メモリ１３内に確保された変換法格納領域１３１のＲＵＬＥＳ領域１３１ａにＲＵＬＥＳ［ｉ］の要素として格納される。ここで、ＲＵＬＥＳ［ｉ］が格納されるＲＵＬＥＳ領域１３１ａの位置は、「ｉ」をインデックスとして指定される。
【００４７】
また第１の変換法生成部１２６は、ＲＵＬＥＳ［ｉ］における見出し決定法として“”（空文字列）を決定する（ステップＳ４）。“”（空文字列）は、上述の定数ｅに相当する。決定された見出し決定法は、上記ＲＵＬＥＳ領域１３１ａにＲＵＬＥＳ［ｉ］の要素として格納される。また第１の変換法生成部１２６は、ＲＵＬＥＳ［ｉ］におけるセル値決定法としてＴＡＧＮＡＭＥを決定する（ステップＳ５）。決定されたセル値決定法は、上記ＲＵＬＥＳ領域１３１ａにＲＵＬＥＳ［ｉ］の要素として格納される。
【００４８】
第１の変換法生成部１２６は、ステップＳ３〜Ｓ５を実行すると、深さカウンタ１２１を１インクリメントする（ステップＳ６）。そして第１の変換法生成部１２６は、第１のタグ名判別部１２２に制御を渡す。
【００４９】
すると第１のタグ名判別部１２２は、このインクリメント後の深さカウンタ１２１の示す深さｉのノード群は全て異なるタグ名か否かを判別する（ステップＳ２）。もし、一部のノード群でも同一タグ名であるならば、第１のタグ名判別部１２２は第２のタグ名判別部１２３に制御を渡す。すると第２のタグ名判別部１２３は、深さｉのノード群は全て同一のタグ名か否かを判別する（ステップＳ７）。もし、全て同一のタグ名であるならば、第２のタグ名判別部１２３は第１の変換法生成部１２６に制御を渡す。
【００５０】
第１の変換法生成部１２６は、深さｉのノード群が全て同一のタグ名の場合、上記ステップＳ３，Ｓ４と同様にして、ＲＵＬＥＳ［ｉ］におけるパス及び見出し決定法として、それぞれカレントパス及び当該タグ名を決定する（ステップＳ８，Ｓ９）。カレントパスは、図３に示す階層構造３１のＸＭＬデータの例で、ｉ＝０であるものとすると、Ｒｏｏｔ／Ｘで表される。なお、見出し決定法として、タグ名に代えて定数（文字列）を適用しても良い。また、この定数を、カスタマイズ情報ＶＡＬＳと同様の例えばカスタマイズ情報ＶＡＬＳ１により、ステップＳ９での見出し決定法の決定に用いられる候補（見出し取得元の候補）として指定することも可能である。この場合、例えばカスタマイズ情報ＶＡＬＳ１によって定数（見出し取得元の候補）が指定されていないことを条件に、見出し決定法としてタグ名が決定されるようにしても良い。つまり、列見出し＝｛ｅ，ａ｝としても良い。
【００５１】
また第１の変換法生成部１２６は、ＲＵＬＥＳ［ｉ］におけるセル値決定法を処理Ｐ１により決定（取得）する（ステップＳ１０）。
【００５２】
処理Ｐ１は、第１の変換法生成部１２６内のセル値決定法生成部１２６ａにより、次のように実行される。まずセル値決定法生成部１２６ａは、メモリ１３のカスタマイズ情報領域１３２に格納されているカスタマイズ情報ＶＡＬＳの最初（先頭）の候補（セル値取得元候補）を参照する（ステップＳ２１）。
【００５３】
次にセル値決定法生成部１２６ａは、該当する候補の有無をチェックする（ステップＳ２２）。もし、該当する候補がないならば、セル値決定法生成部１２６ａはセル値決定法を“”（空文字列）とする（ステップＳ２３）。
【００５４】
これに対し、上記最初の候補の参照時のように、該当する候補があるならば、セル値決定法生成部１２６ａは、その候補がＴＥＸＴ、ＣＨＩＬＤ(“名前”)及びＡＴＴＲ（“ｎａｍｅ”）のいずれであるかを判別する（ステップＳ２４，Ｓ２６，Ｓ３０）。
【００５５】
もし、該当する候補がＴＥＸＴであるならば（ステップＳ２４）、セル値決定法生成部１２６ａはセル値決定法をＴＥＸＴとして（ステップＳ２５）、処理Ｐ１を終了する。また、該当する候補がＣＨＩＬＤ(“名前”)であるならば（ステップＳ２６）、セル値決定法生成部１２６ａは当該ＣＨＩＬＤ(“名前”)で指定される名前の子要素があるか否かを判別する（ステップＳ２７）。もし、指定される名前の子要素があるならば、第１の変換法生成部１２６はセル値決定法をＣＨＩＬＤ(“名前”)として（ステップＳ２８）、処理Ｐ１を終了する。これに対し、指定される名前の子要素がないならば、第１の変換法生成部１２６は上記カスタマイズ情報ＶＡＬＳの次の候補を参照して（ステップＳ２８）、上記ステップＳ２２に戻る。
【００５６】
また、該当する候補がＡＴＴＲ(“名前”)であるならば（ステップＳ３０）、セル値決定法生成部１２６ａは当該ＡＴＴＲ(“名前”)で指定される名前の属性があるか否かを判別する（ステップＳ３１）。もし、指定される名前の属性があるならば、第１の変換法生成部１２６はセル値決定法をＡＴＴＲ(“名前”)として（ステップＳ３２）、処理Ｐ１を終了する。これに対し、指定される名前の属性がないならば、第１の変換法生成部１２６は上記カスタマイズ情報ＶＡＬＳの次の候補を参照して（ステップＳ２８）、上記ステップＳ２２に戻る。
【００５７】
また、該当する候補がＴＥＸＴ、ＣＨＩＬＤ(“名前”)及びＡＴＴＲ（“ｎａｍｅ”）のいずれでもないならば（ステップＳ２４，Ｓ２６，Ｓ３０）、セル値決定法生成部１２６ａは当該候補が“文字列”であると判別する。この場合、セル値決定法生成部１２６ａはセル値決定法を“文字列”として（ステップＳ３３）、処理Ｐ１を終了する。
【００５８】
第１の変換法生成部１２６は処理Ｐ１によりセル値決定法を決定すると（ステップＳ１０）、深さカウンタ１２１を１インクリメントして（ステップＳ６）、第１のタグ名判別部１２２に制御を渡す。
【００５９】
さて、第２のタグ名判別部１２３は、深さｉのノード群が全て同一のタグ名でもない場合（ステップＳ７）、対象／記述境界決定部１２４に制御を渡す。つまり、深さｉのノード群が、全て異なるタグ名でなく（ステップＳ２）、且つ全て同一のタグ名でもない場合（ステップＳ７）、対象／記述境界決定部１２４に制御が渡される。このとき深さカウンタ１２１は、変換法自動生成処理の対象となっているＸＭＬデータの階層構造内で同じ深さのノード群のタグ名が全て異なるか、或いは当該同じ深さのノード群のタグ名が全て同一となる最大深さに１を加算した深さｉを表す。
【００６０】
すると対象／記述境界決定部１２４は、深さｉを対象／記述境界として決定し、メモリ１３内に確保された変換法格納領域１３１のＢＯＲＤＥＲ領域１３１ｂに、ＢＯＲＤＥＲ（対象／記述境界を表すインデックス）＝ｉを格納する（ステップＳ１１）。このステップＳ１１において対象／記述境界決定部１２４は、インデックスｊをｉに設定する。インデックスｊは、記述層における変換法の配列ＲＵＬＥＳ［ｊ］の、変換法格納領域１３１内の格納位置を指定する。ＲＵＬＥＳ［ｊ］は、上記対象層における変換法の配列ＲＵＬＥＳ［ｉ］に相当する。対象／記述境界決定部１２４はステップＳ１１を実行すると、第２の変換法生成部１２７に制御を渡す。
【００６１】
すると第２の変換法生成部１２７は、深さｉの各ノードのパスについて、処理Ｐ２を次のように実行する（ステップＳ１２）。まず第２の変換法生成部１２７は、ＲＵＬＥＳ領域１３１ａに格納されている変換法の配列群（ＲＵＬＥＳ）を参照して、配列群の中に現在処理対象となっている深さｉのノード（つまりカレントノード）のパスが含まれているか否かを判別する（ステップＳ４１）。もし、含まれているならば、第２の変換法生成部１２７は深さｉの１つのノードについての処理Ｐ２を終了する。そして、深さｉの未処理のノードがあるならば、第２の変換法生成部１２７は当該未処理のノードについて処理Ｐ２を実行する。
【００６２】
一方、配列群の中に深さｉのカレントノードのパスが含まれていないならば（ステップＳ４１）、第２の変換法生成部１２７は、記述層に属する深さｉの変換法の配列ＲＵＬＥＳ［ｊ］におけるパスとしてカレントパスを決定する（ステップＳ４２）。また第２の変換法生成部１２７は、ＲＵＬＥＳ［ｊ］における見出し決定法をカレントノードのタグ名とする（ステップＳ４３）。ここで、ステップＳ１２の開始時点では、ｊ＝ｉ＝ＢＯＲＤＥＲである。決定されたパス及び見出し決定法は、インデックスｊ（ここではｊ＝ｉ＝ＢＯＲＤＥＲ）で指定されるＲＵＬＥＳ領域１３１ａの位置にＲＵＬＥＳ［ｊ］の要素として格納される。
【００６３】
次に第２の変換法生成部１２７は、カレントノードが子を持たないか否か、つまりカレントノードが末端ノードであるか否かを判別する（ステップＳ４４）。もし、カレントノードが末端ノードであるならば、第２の変換法生成部１２７は、第１の変換法生成部１２６内のセル値決定法生成部１２６ａを利用して、ＲＵＬＥＳ［ｊ］におけるセル値決定法を処理Ｐ１により決定する（ステップＳ４５）。この処理Ｐ１は、前記ステップＳ１０と同様に、図６のフローチャートの示す手順で行われる。決定されたセル値決定法は、インデックスｊで指定されるＲＵＬＥＳ領域１３１ａの位置にＲＵＬＥＳ［ｊ］の要素として格納される。第２の変換法生成部１２７は、ステップＳ４５を終了すると、次のＲＵＬＥＳ［ｊ］の格納位置を決定するためにインデックスｊを１インクリメントして（ステップＳ４６）、深さｉの１つのノードについての処理Ｐ２を終了する。
【００６４】
これに対し、カレントノードが末端ノードでないならば、つまりカレントノードが子ノードを持つならば（ステップＳ４４）、第２の変換法生成部１２７は、ＲＵＬＥＳ［ｊ］におけるセル値決定法をｎｕｌｌとする（ステップＳ４７）。次に第２の変換法生成部１２７は、インデックスｊを１インクリメントする（ステップＳ４８）。そして第２の変換法生成部１２７は、カレントノードの子ノードの各パスについて、上述の処理Ｐ２を再帰的に実行する（ステップＳ４９）。
【００６５】
このようにして、変換法格納領域１３１のＲＵＬＥＳ領域１３１ａのｉ＝０〜ｉ＝ＢＯＲＤＥＲ−１で指定される位置には、対象層における深さ０〜ＢＯＲＤＥＲ−１に対応するＲＵＬＥＳ［ｉ］が格納される。また、ＲＵＬＥＳ領域１３１ａのＢＯＲＤＥＲで指定される位置以降には、記述層におけるＲＵＬＥＳ［ｊ］（ｊ＝ＢＯＲＤＥＲ，ＢＯＲＤＥＲ＋１，…）が格納される。つまり変換法格納領域１３１には、指定されたＸＭＬデータを表データに変換するための変換法情報が格納される。
【００６６】
ユーザは、変換法格納領域１３１に格納されている、生成された変換法情報を部分的に修正（編集）したい場合、端末２０を操作して当該変換法情報を例えばファイル形式で計算機１０から当該端末２０に転送させる。端末２０に転送された変換法情報は当該端末２０の表示画面に表示される。ユーザは、端末２０に表示されている変換法情報を、例えばよりユーザにとって見やすく理解しやすい表形式とするために、当該端末２０を操作して修正する。この変換法情報は、｛パス、見出し決定法、セル値決定法｝から構成される配列の集合である。したがってユーザは、通常のデータ修正と同様に、変換法情報を極めて簡単に修正できる。この修正された変換法情報により、変換法格納領域１３１に格納されている変換法情報を更新することが可能である。
【００６７】
図８のＸＭＬデータ４０では、図９の階層構造４１から明らかなように、ルートノードから１つ下位の階層に、２つのノードが存在する。この２つのノードのタグ名は共に「地区」であり、当該ノード（要素）のテキスト（内容）は、それぞれ「北海道・東北」、「関東・中部」である。また、ルートノードから２つ下位の階層には、３つのノードが存在する。この３つのノードのタグ名は共に「都道府県」であり、当該ノード（要素）のテキストは、それぞれ「北海道」、「神奈川」、「静岡」である。また、ルートノードから３つ下位の階層には、７つのノードが存在する。この７つのノードのタグ名は共に「市町村」であり、当該ノード（要素）のテキストは、それぞれ「札幌市」、「旭川市」、「釧路市」、「横浜市」、「川崎市」、「浜松市」、「静岡市」である。
【００６８】
一方、ルートノードから４つ下位及び５つ下位の階層には、同じ深さの階層のタグ名が、部分木毎に全て同じセット（タグ名「人口」、「面積」、「産業」のセット、タグ名「米生産量」、「漁獲量」のセット」）が存在する。
【００６９】
よって、図９の階層構造４１のＸＭＬデータ４０は、ルートノードから３つ下位の階層が対象／記述境界４２となる。この場合、ルートノードから対象／記述境界４２までが対象層４３となり、対象／記述境界４２よりも下位の層が記述層４４となる。なお、ＸＭＬデータ４０に含まれている市町村の人口、面積等は、実際の数値を表していない点に注意する。
【００７０】
図９の階層構造４１の例では、対象層４３に関しては、上述の変換法自動生成処理により、ＲＵＬＥＳ［０］，ＲＵＬＥＳ［１］，ＲＵＬＥＳ［２］として、それぞれ｛Ｒｏｏｔ／地区，列見出し＝タグ名，セル値＝テキスト｝、｛Ｒｏｏｔ／地区／都道府県，列見出し＝タグ名，セル値＝テキスト｝、｛Ｒｏｏｔ／地区／都道府県／市町村，列見出し＝タグ名，セル値＝テキスト｝が生成される。
【００７１】
一方、記述層４４に関しては、タグ名が「人口」、「面積」の末端ノードについて、例えばＲＵＬＥＳ［３］，ＲＵＬＥＳ［４］として、それぞれ｛Ｒｏｏｔ／地区／都道府県／市町村／人口，列見出し＝タグ名，セル値＝テキスト｝、｛Ｒｏｏｔ／地区／都道府県／市町村／面積，列見出し＝タグ名，セル値＝テキスト｝が生成される。但し、カスタマイズ情報ＶＡＬＳの最初の候補がＴＥＸＴであるものとする。また、タグ名が「産業」のノード、つまりタグ名が「米生産量」、「漁獲量」の子ノードを持つノードについて、例えばＲＵＬＥＳ［５］として、｛Ｒｏｏｔ／地区／都道府県／市町村／産業，列見出し＝タグ名，セル値＝ｎｕｌｌ｝が生成される。また、タグ名が「米生産量」、「漁獲量」の末端ノードについて、例えばＲＵＬＥＳ［６］、ＲＵＬＥＳ［７］として、それぞれ｛Ｒｏｏｔ／地区／都道府県／市町村／産業／米生産量，列見出し＝タグ名，セル値＝テキスト｝、｛Ｒｏｏｔ／地区／都道府県／市町村／産業／漁獲量，列見出し＝タグ名，セル値＝テキスト｝が生成される。
【００７２】
ＸＭＬ−表変換モジュール１４は、ユーザの操作による端末２０からの指示により、これらのＲＵＬＥＳ［０］〜ＲＵＬＥＳ［７］を含む変換法情報に従って、当該変換法情報が対応付けられているＸＭＬデータを表形式データに変換する。この表形式データは、端末２０に転送されて、当該端末２０に表示される。図１０は、図９の階層構造４１を持つ図８のＸＭＬデータ４０からＲＵＬＥＳ［０］〜ＲＵＬＥＳ［７］を含む変換法情報に従って変換される表形式データを、表４５として画面表示する場合の表示画面例を示す。
【００７３】
図１０の表４５において、階層構造４１の対象層４３に属する各階層に対応する列見出し「地区」、「都道府県」、「市町村」の列のセルは、当該対象層４３の階層構造を反映した大分類〜小分類の行見出しを構成している。また表４５は、階層構造４１の記述層４４に属するタグ名が「産業」のノードと、当該ノードの子ノードである、タグ名がそれぞれ「米生産量」、「漁獲量」の子ノードに対応する列見出しを有する。これらの列見出しは、対応するノードの階層構造を反映した大分類〜小分類の列見出しを表している。
【００７４】
このように、図１０の表４５は、ＸＭＬデータ４０の階層構造４１を極力保っている。このためユーザは、ＸＭＬデータ４０からは理解するのが困難な、情報項目の構造間の対応関係を表４５から直感的に理解することができる。
【００７５】
上記実施形態では、対象／記述境界を決定するための第１のタグ名判別部１２２及び第２のタグ名判別部１２３の処理で、それぞれ、深さｉのノード群は「全て異なるタグ名か否か」「全て同一のタグ名か否か」が判別される。しかし、例えば「タグ名が異なるノードの割合が第１のレベル以上であるか否か」、「タグ名が同一であるノードの割合が第２のレベル以上であるか否か」が判別される構成であっても構わない。明らかなように、上記実施形態は、上記第１及び第２のレベルとして、それぞれ「タグ名が異なるノードの割合」及び「タグ名が同一であるノードの割合」を１００％とした場合に相当する。
【００７６】
また上記実施形態では、変換法自動生成モジュール１２がプログラムである場合を想定している。しかし、変換法自動生成モジュール１２を、図２に示す構成を有する装置（変換法自動生成装置）として実現することも可能である。
【００７７】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００７８】
【図１】本発明の一実施形態に係る計算機システムの構成を示すブロック図。
【図２】図１中の変換法自動生成モジュール１２の機能構成を示すブロック図。
【図３】ＸＭＬデータの階層構造の一例を示す図。
【図４】図３に示す階層構造を保ちながら、ＸＭＬデータを表で表現する仕組みを示す図。
【図５】同実施形態における変換法自動生成モジュール１２による変換法自動生成処理の手順を示すフローチャート
【図６】図５の変換法自動生成処理における処理Ｐ１の手順を示すフローチャート。
【図７】図５の変換法自動生成処理における処理Ｐ２の手順を示すフローチャート。
【図８】上記変換法自動生成処理の対象となるＸＭＬデータの一例を示す図。
【図９】図８に示すＸＭＬデータの階層構造を示す図。
【図１０】図９の階層構造を持つ図８のＸＭＬデータから変換法情報に従って変換される表形式データを表として画面表示する場合の表示画面例を示す図。
【符号の説明】
【００７９】
１０…計算機、１１…ＸＭＬデータベース、１２…変換法自動生成モジュール（変換法自動生成プログラム）、１３…メモリ、１４…ＸＭＬ−表変換モジュール（ＸＭＬ−表変換プログラム）、３１，４１…階層構造、３２，４２…対象／記述境界、３３，４３…対象層、３４，４４…記述層，４０…ＸＭＬデータ、３５，４５…表、１２１…深さカウンタ、１２２…第１のタグ名判別部、１２３…第２のタグ名判別部、１２４…対象／記述境界決定部、１２５…変換法生成部、１２６ａ…セル値決定法生成部。
【図１】
2007094971.tif 000003
【図２】
2007094971.tif 000004
【図３】
2007094971.tif 000005
【図４】
2007094971.tif 000006
【図５】
2007094971.tif 000007
【図６】
2007094971.tif 000008
【図７】
2007094971.tif 000009
【図８】
2007094971.tif 000010
【図９】
2007094971.tif 000011
【図１０】
2007094971.tif 000012