(57)【特許請求の範囲】
【請求項１】
ＸＭＬデータを、当該ＸＭＬデータの各ノードの識別情報とこれに対応する数値とからなるテーブルデータに変換するＸＭＬデータ変換装置であって、
前記ＸＭＬデータから各ノードの識別情報を抽出するノード名称抽出部と、
前記各ノードの種類に応じて、予め決められた種類のノードに対してのみビットを付与し、それ以外の種類のノードに対してはビットを付与しないビット付与部と、
前記各ノードを木構造で表した場合のノード深さを測定するノード深さ測定部と、
前記ビット付与部で付与されたビット付与の有無と、前記ノード深さ測定部で測定されたノード深さに基づいて、当該ノード深さの測定値をｎ（ｎは２以上の任意の自然数）倍し、かつ、ビットが付与されている場合は１を加えた数値を生成し、当該数値を前記各ノードの識別情報に対応する数値として出力するビット・深さ結合部とを備えたＸＭＬデータ変換装置。
【請求項２】
ＸＭＬデータを、当該ＸＭＬデータの各ノードの識別情報と、これに対応するノードの種類を示す値と、前記各ノードを木構造で表した場合のノード深さを示す数値とからなるテーブルデータに変換するＸＭＬデータ変換装置であって、
前記ＸＭＬデータから各ノードの識別情報を抽出するノード名称抽出部と、
前記各ノードの種類に応じて予め決められた種類のノードに対してのみビットを付与し、各ノードに対してビットが付与されているか否かを前記ノードの種類を表す値として出力するビット付与部と、
前記各ノードを木構造で表した場合のノード深さに対応した数値を出力するノード深さ測定部とを備えたＸＭＬデータ変換装置。
【請求項３】
ノードの種類は、空でない要素、空要素、属性、要素のテキスト、属性のテキストであることを特徴とする請求項１または請求項２記載のＸＭＬデータ変換装置。
【請求項４】
ノード深さ測定部は、各ノードの深さの代替として、各ノードの親ノードの登場順位を出力することを特徴とする請求項１から請求項３のうちのいずれか１項記載のＸＭＬデータ変換装置。
【請求項５】
ＸＭＬデータの各ノードの識別情報とこれに対応する数値とからなるテーブルデータからＸＭＬデータを復元するＸＭＬデータ復元装置であって、
前記各ノードに対応した数値から、ノードの種類をビット付与の有無で示す値と前記各ノードを木構造で表した場合のノード深さを示す値とを抽出するビット・深さ分割部と、
前記ビット・深さ分割部で抽出したノード深さを示す値に基づいて、ＸＭＬデータの木構造を復元する木構造復元部と、
前記ビット・深さ分割部で抽出したノードの種類をビット付与の有無で示す値に基づいて、前記木構造で示された各ノードの種類を復元するノード種類復元部と、
前記ノード種類復元部でその種類が復元された各ノードに対して前記識別情報を付与するノード名称付与部とを備えたＸＭＬデータ復元装置。
【請求項６】
ビット・深さ分割部は、各ノードの識別情報に対応した数値をｎ（ｎは２以上の任意の自然数）で割った余りをノードの種類を示すビット値、商を当該ノードの深さを示す値として抽出することを特徴とする請求項５記載のＸＭＬデータ復元装置。
【請求項７】
ＸＭＬデータの各ノードの識別情報とこれに対応するノードの種類を示す値と、前記各ノードを木構造で表した場合のノード深さを示す数値とからなるテーブルデータからＸＭＬデータを復元するＸＭＬデータ復元装置であって、
前記ノード深さを示す数値に基づいて、ＸＭＬデータの木構造を復元する木構造復元部と、
前記ノードの種類をビット付与の有無で示す値に基づいて、前記木構造で示された各ノードの種類を復元するノード種類復元部と、
前記ノード種類復元部でその種類が復元された各ノードに対して前記識別情報を付与するノード名称付与部とを備えたＸＭＬデータ復元装置。
【請求項８】
ノードの種類は、空でない要素、空要素、属性、要素のテキスト、属性のテキストであることを特徴とする請求項５から請求項７のうちのいずれか１項記載のＸＭＬデータ復元装置。
【請求項９】
木構造復元部は、各ノードの深さの代替として、各ノードの親ノードの登場順位から木構造を復元することを特徴とする請求項５から請求項８のうちのいずれか１項記載のＸＭＬデータ復元装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ：拡張可能なマーク付け言語）で記述された木構造を有するＸＭＬ文書のデータベースに関するもので、特にＸＭＬ文書を表形式のテーブルデータに変換するＸＭＬデータ変換装置及びこのようなテーブルデータからＸＭＬ文書に復元するＸＭＬデータ復元装置に関するものである。
【背景技術】
【０００２】
ＸＭＬ文書をテーブル形式に変換してデータベースに格納し、また格納したデータを高速に検索する仕組みは、従来から様々な手法がとられてきた。
【０００３】
代表的な手法としては、ＤＴＤ（Ｄｏｃｕｍｅｎｔ  Ｔｙｐｅ  Ｄｅｆｉｎｉｔｉｏｎ）やＸＭＬ  Ｓｃｈｅｍａ、ＲＥＬＡＸ  ＮＧ等、あるＸＭＬ文書の構造を定義しているスキーマから、テーブルへ変換するためのルールを作成し、それに基づいてノードの種類毎、あるいはノードの名称毎に複数のテーブルへ変換する方法がある。例えば、特許文献１では、スキーマを元にして同じ名称の要素毎にテーブルを作成し、テーブルには各要素の内容および属性値の項目とテーブル間のリンク関係が格納されている。
【０００４】
【特許文献１】特開２００４−１７８０８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記従来の手法の問題点として、第１の問題点は、変換にスキーマを必須とすることである。このため、スキーマを持つ妥当なＸＭＬ文書を変換することはできても、スキーマを必要としない検証済みＸＭＬ文書を変換することができないという課題があった。
また、第２の問題点は、テーブルが複数必要となることである。テーブルの数が多くなるにつれて、格納や検索の処理が煩雑になるという課題があった。
【０００６】
この発明は上記のような課題を解決するためになされたもので、スキーマを必要としない検証済みＸＭＬ文書を、元のＸＭＬ文書に復元できるような単一のテーブルに変換することのできるＸＭＬデータ変換装置及びＸＭＬデータ復元装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係るＸＭＬデータ変換装置は、ＸＭＬデータから各ノードの識別情報を抽出するノード名称抽出部と、ＸＭＬデータの各ノードの種類に応じて、予め決められた種類のノードに対してのみビットを付与し、それ以外の種類のノードに対してはビットを付与しないビット付与部と、各ノードを木構造で表した場合のノード深さを測定するノード深さ測定部と、ビット付与部で付与されたビット付与の有無と、ノード深さ測定部で測定されたノード深さに基づいて、ノード深さの測定値をｎ（ｎは２以上の任意の自然数）倍し、かつ、ビットが付与されている場合は１を加えた数値を生成し、その数値を各ノードの識別情報に対応する数値として出力するビット・深さ結合部とを備えたものである。
【発明の効果】
【０００８】
この発明のＸＭＬデータ変換装置は、ＸＭＬデータの各ノードの種類に応じたビット付与の有無と、ノード深さとに基づいて、各ノードの種類とノード深さとを示す数値を生成し、各ノードの識別情報に対応する数値として出力するようにしたので、テーブルデータを生成するためにスキーマを必要とせずにＸＭＬの構造を小さい数値で表現でき、また、元のＸＭＬデータに復元できるような単一のテーブルデータに変換することができる。
【発明を実施するための最良の形態】
【０００９】
実施の形態１．
本発明では、ＸＭＬ文書のノードが、ＸＭＬ文書において最も基本となる情報単位である「空でない要素」、内容を持たない空の要素である「空要素」、ＸＭＬ文書の中で要素に対して付加的な情報を付け加える「属性」、要素の値である「要素のテキスト」、属性の値である「属性のテキスト」の５種類から構成されるものとする。
【００１０】
一方、ＸＭＬ文書のノードとして、その文書がＸＭＬ文書であることを宣言する「ＸＭＬ宣言」、アプリケーションへの処理命令を記述する「処理命令」、ＸＭＬ文書要素として論理や意味構造を無視する文を記述する「ＣＤＡＴＡセクション」、ＸＭＬ文書要素として解釈されない文を記述する「コメント」、文字コードによる文字の参照を記述する「文字参照」、文字列やファイルを表すエンティティを記述する「エンティティ参照」は含まれないものとする。ここで、「ＸＭＬ宣言」、「処理命令」、「ＣＤＡＴＡセクション」、「コメント」、「文字参照」、「エンティティ参照」は、ＸＭＬ文書の中で主要なノードでないので、ＸＭＬ文書のデータベースにおいて考慮しなくても特に大きな問題はない。
【００１１】
また、ノード間の無視できる改行と空白（いわゆるｉｇｎｏｒａｂｌｅＷｈｉｔｅＳｐａｃｅ）をノードとして扱わず無視することとする。例えば、後述する図２のＸＭＬ文書において、<aaa>から<bbb/>まで、<bbb/>から<ccc ddd="eee">まで、</ccc>から</aaa>までにはそれぞれ改行や空白があるが、それらをノードとして扱わず無視することとする。
【００１２】
また、ＸＭＬ文書の代表的なＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）であるＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）では、「属性」を「要素」の子ノードとして扱わない。本発明では「属性」を「要素」の子ノードとして扱うが、特に大きな問題はない。
【００１３】
図１は、本発明の実施の形態１によるＸＭＬデータ変換装置及びＸＭＬデータ復元装置を示す構成図である。
図において、ＸＭＬデータ変換装置及びＸＭＬデータ復元装置は、ＸＭＬ文書格納部１０、テーブル格納部２０、変換部３０、復元部４０から構成されており、変換部３０がＸＭＬデータ変換装置に、また、復元部４０がＸＭＬデータ復元装置に対応している。
【００１４】
ＸＭＬ文書格納部１０は、変換部３０によってテーブル形式のデータに変換する元データであると共に、復元部４０によって復元されたＸＭＬ文書を格納するための格納部である。変換部３０は、ＸＭＬ文書格納部１０に格納されているＸＭＬ文書をテーブル形式のデータに変換してテーブル格納部２０に送出する機能部であり、ノード名称抽出部３１、ビット付与部３２、ノード深さ測定部３３、ビット・深さ結合部３４を備えている。
【００１５】
ノード名称抽出部３１は、ＸＭＬ文書格納部１０から取り出されたＸＭＬ文書からノードの識別情報としてノード名称を抽出する機能部である。ビット付与部３２は、ＸＭＬ文書から上述したノードの種類を表す情報である「空でない要素」「空要素」「属性」「要素のテキスト」「属性のテキスト」に対して、その種類を表すビットを付与する機能部である。即ち、「空でない要素」、「空要素」「属性」「要素のテキスト」「属性のテキスト」のうち、「属性」と「要素のテキスト」に対してビットをｏｎとし、それ以外はビットをｏｆｆとする。ノード深さ測定部３３は、ＸＭＬ文書の各ノードを木構造で表した場合の深さを測定する機能部である。ビット・深さ結合部３４は、ビット付与部３２で付与されたビットとノード深さ測定部３３で測定された深さを示す値とに基づいて、各ノードの種類とノード深さを示す数値を生成し、これをノード名称抽出部３１で抽出されたノード名称に対応させてテーブル形式のデータとして出力する機能部である。
【００１６】
復元部４０は、テーブル格納部２０に格納されているテーブル形式のデータからＸＭＬ文書を復元する機能部であり、ノード名称付与部４１、ノード種類復元部４２、木構造復元部４３、ビット・深さ分割部４４を備えている。これらノード名称付与部４１〜ビット・深さ分割部４４は、それぞれ、ノード名称抽出部３１〜ビット・深さ結合部３４における変換動作に対応した復元動作を行うものである。
【００１７】
ビット・深さ分割部４４は、テーブルデータにおける各ノードに対応した数値からノードの種類と木構造におけるノードの深さを示す値とを抽出する機能部である。木構造復元部４３は、ビット・深さ分割部４４で抽出したノード深さを示す値に基づいて、ＸＭＬ文書の木構造を復元する機能部である。ノード種類復元部４２は、ビット・深さ分割部４４で抽出したノード種類を示す値に基づいて、木構造で示された各ノードを、ノードの種類である「空でない要素」「空要素」「属性」「要素のテキスト」「属性のテキスト」として復元する機能部である。ノード名称付与部４１は、ノード種類復元部４２で復元された各ノードに対して、ノードの識別情報であるノード名称を付与しＸＭＬ文書としてＸＭＬ文書格納部１０に出力する機能部である。
【００１８】
次に、実施の形態１の動作について説明する。
先ず、ＸＭＬ文書からテーブルデータへ変換する方法について説明する。
【００１９】
最初に、変換部３０が、ＸＭＬ文書格納部１０から、テーブルに変換したいＸＭＬ文書を取り出す。
図２は、ＸＭＬ文書の一例を示す説明図である。
【００２０】
変換部３０では、ＸＭＬ文書を取り出した後、ＸＭＬ文書の各ノードに対して、ノード名称抽出部３１、ビット付与部３２、ノード深さ測定部３３がそれぞれ以下の３つの操作を行う。
【００２１】
（１）ノード名称抽出部３１が、ノードの名称を取得する。
（２）ビット付与部３２が、後にテーブルからＸＭＬ文書を復元できるようにするためのビット“ノード種類復元ビット”を付与する。具体的には、ビット付与部３２では、ノードの種類が「属性」もしくは「要素のテキスト」であった場合に、ノード種類復元ビットｏｎを付与する。ノードの種類が「空でない要素」「空要素」「属性のテキスト」であった場合に、ノード種類復元ビットｏｆｆを付与する。
（３）ノード深さ測定部３３が、ルートノードの深さを１としたときのノードの深さを測定する。従って、ルートノードの子ノードの深さは２、その子ノードの深さは３、というようになる。
【００２２】
また、（４）ビット・深さ結合部３６が、ビット付与部３２が付与した（２）のノード種類復元ビット値とノード深さ測定部３３が測定した（３）の深さを結合する。具体的には、ノード深さ測定部３３が測定した（３）の深さを２倍して、ビット付与部３２が付与した（２）のノード種類復元ビット値がｏｎであった場合に更に１を足す。
【００２３】
以上の操作の後に、変換部３０はノードが登場する順番に、ｎ番目のノードであればノード名称抽出部３１で抽出した（１）のノードの名称をテーブルのｎ行目の１列目、ビット・深さ結合部３６で結合した（４）の値をテーブルのｎ行目の２列目にそれぞれ格納する。従って、ノードの数がｎ個であるＸＭＬ文書は、ｎ行２列のテーブルに変換できることになる。
【００２４】
（１）〜（４）の具体的な操作を、図２に示すＸＭＬ文書を例に説明する。
図３は、図２に示すＸＭＬ文書の木構造を示す説明図である。
図４は、図２に示すＸＭＬ文書を変換したテーブルの説明図である。
【００２５】
先ず、aaaのノードでは、ノード名称抽出部３１がノードの名称aaaを抽出する。aaaのノードは「空でない要素」のため、ビット付与部３２がノード種類復元ビットｏｆｆを付与する。aaaのノードはルートノードで、ルートノードの深さを１としているので、ノード深さ測定部３３は深さ１を得る。ビット・深さ結合部３６は、深さ１を２倍して２を得る。以上の操作により、変換部３０はテーブルの１行目の１列目にaaaを、１行目の２列目に２を格納する。
【００２６】
次に、bbbのノードでは、ノード名称抽出部３１がノードの名称bbbを抽出する。bbbのノードは「空要素」のため、ビット付与部３２がノード種類復元ビットｏｆｆを付与する。bbbのノードの深さは２なので、ノード深さ測定部３３は深さ２を得る。ビット・深さ結合部３６は、深さ２を２倍して４を得る。以上の操作により、変換部３０はテーブルの２行目の１列目にbbbを、２行目の２列目に４を格納する。
【００２７】
cccのノードでは、ノード名称抽出部３１がノードの名称cccを抽出する。cccのノードは「空でない要素」のため、ビット付与部３２がノード種類復元ビットｏｆｆを付与する。cccのノードの深さは２なので、ノード深さ測定部３３は深さ２を得る。ビット・深さ結合部３６は、深さ２を２倍して４を得る。以上の操作により、変換部３０はテーブルの３行目の１列目にcccを、３行目の２列目に４を格納する。
【００２８】
dddのノードでは、ノード名称抽出部３１がノードの名称dddを抽出する。dddのノードは「属性」のため、ビット付与部３２がノード種類復元ビットｏｎを付与する。「属性」は「要素」の子ノードという約束から、dddのノードの深さは３なので、ノード深さ測定部３３は深さ３を得る。ビット・深さ結合部３６は、深さ３を２倍して１を足し７を得る。以上の操作により、変換部３０はテーブルの４行目の１列目にdddを、４行目の２列目に７を格納する。
【００２９】
eeeのノードでは、ノード名称抽出部３１がノードの名称eeeを抽出する。eeeのノードは「属性のテキスト」のため、ビット付与部３２がノード種類復元ビットｏｆｆを付与する。eeeのノードの深さは４なので、ノード深さ測定部３３は深さ４を得る。ビット・深さ結合部３６は、深さ４を２倍して８を得る。以上の操作により、変換部３０はテーブルの５行目の１列目にeeeを、５行目の２列目に８を格納する。
【００３０】
fffのノードでは、ノード名称抽出部３１がノードの名称fffを抽出する。fffのノードは「要素のテキスト」のため、ビット付与部３２がノード種類復元ビットｏｎを付与する。fffのノードの深さは３なので、ノード深さ測定部３３は深さ３を得る。ビット・深さ結合部３６は、深さ３を２倍して１を足し７を得る。以上の操作により、変換部３０はテーブルの６行目の１列目にfffを、６行目の２列目に７を格納する。
以上（１）〜（４）の操作により、ＸＭＬ文書が変換されたテーブルは最終的に図４のようになる。
【００３１】
テーブルに値が格納された後に、変換部３０がテーブル格納部２０へ、ＸＭＬ文書を変換したテーブルを格納する。
【００３２】
以上の操作により、「空でない要素」「空要素」「属性」「要素のテキスト」「属性のテキスト」のノードからなる検証済みの任意のＸＭＬ文書を、単一の２列のテーブルに変換することができる。
【００３３】
次に、上述の２列のテーブルから元のＸＭＬ文書へ復元する方法について説明する。
最初に、復元部４０がテーブル格納部２０から、ＸＭＬ文書に復元したいテーブルを取り出す。そして、復元したいテーブルを取り出した後、ビット・深さ分割部４４は、テーブルの２列目の値をノード種類復元ビットとノードの深さに分割する。具体的には、テーブルのｎ行目の２列目の値を２で割った余りがｎ番目に付与されるビット、商がｎ番目のノードの深さとなる。
【００３４】
ビット・深さ分割部４４の操作を、図４のテーブルを例に説明する。
１行目の２列目の値２を２で割ると余りが０、商が１なので、１番目のノードにはノード種類復元ビットｏｆｆが付与されていて、１番目のノードの深さは１である。
２行目の２列目の値４を２で割ると余りが０、商が２なので、２番目のノードにはノード種類復元ビットｏｆｆが付与されていて、２番目のノードの深さは２である。
３行目の２列目の値４を２で割ると余りが０、商が２なので、３番目のノードにはノード種類復元ビットｏｆｆが付与されていて、３番目のノードの深さは２である。
４行目の２列目の値７を２で割ると余りが１、商が３なので、４番目のノードにはノード種類復元ビットｏｎが付与されていて、４番目のノードの深さは３である。
５行目の２列目の値８を２で割ると余りが０、商が４なので、５番目のノードにはノード種類復元ビットｏｆｆが付与されていて、５番目のノードの深さは４である。
６行目の２列目の値７を２で割ると余りが１、商が３なので、６番目のノードにはノード種類復元ビットｏｎが付与されていて、６番目のノードの深さは３である。
【００３５】
ビット・深さ分割の後に、木構造復元部４３が、ビット・深さ分割部４４で得た深さの情報からＸＭＬ文書の木構造を復元する。ここで、自分のノードの親ノードが分かれば、順番に木構造を復元できる。自分のノードの親ノードを探すルールは以下である：「あるノードの親ノードは、そのノードより１つ浅いノードで、自分のノードより前に登場する最も近いノードである。」
【００３６】
木構造復元部４３の操作を、図４に示すテーブルを例に説明する。
１番目はルートノードなので親ノードはない。
２番目のノードの親ノードは１番目である。
３番目のノードの親ノードは１番目である。
４番目のノードの親ノードは３番目である。
５番目のノードの親ノードは４番目である。
６番目のノードの親ノードは３番目である。
以上の操作により、２列のテーブルから復元できるＸＭＬ文書の木構造は図５のようになる。ここで、丸付き数字が図４のテーブルの１行目〜６行目のデータに対応している。また、黒丸数字は、ノード種類復元ビットがｏｎであることを示している。
【００３７】
木構造復元の後に、ノード種類復元部４２が、ノード種類復元ビットｏｎ/ｏｆｆとノードの木構造の情報からノードの種類を復元する。
本発明では、以下の制限によりノードの種類を復元することができる。
・「属性」は必ず子ノードを持ち、それは「属性のテキスト」である。
・「要素のテキスト」は子ノードを持たない。
以上の制限により、（１）ビットがｏｎの「属性」と「要素のテキスト」は、子ノードを持つかどうかで識別することができる。（２）ビットがｏｆｆの「要素」と「属性のテキスト」は、親ノードが属性かどうかで識別することができる。（３）更に、「空でない要素」と「空要素」は、子ノードを持つかどうかで識別することができる。
【００３８】
図６は、復元処理を示すフローチャートである。
即ち、ノード種類復元部４２は、ビットがｏｎ（ステップＳＴ６１）で、子ノードを持つ（ステップＳＴ６２）場合、ノードの種類は「属性」、ビットがｏｎ（ステップＳＴ６１）で、子ノードを持たない（ステップＳＴ６２）場合は「要素のテキスト」と判定する。また、ビットがｏｆｆ（ステップＳＴ６１）で、親ノードが属性でなく（ステップＳＴ６３）、子ノードを持たない（ステップＳＴ６４）場合は「空要素」、ビットがｏｆｆ（ステップＳＴ６１）で、親ノードが属性でなく（ステップＳＴ６３）、子ノードを持つ（ステップＳＴ６４）場合は「空でない要素」、ビットがｏｆｆ（ステップＳＴ６１）で、親ノードが属性である（ステップＳＴ６３）場合は「属性のテキスト」と判定する。
【００３９】
以下、ノード種類復元部４２の具体的な動作を、図４、図５を例に説明する。
１番目のノードでは、ステップＳＴ６１の条件分岐でＮｏ、ステップＳＴ６３の条件分岐でＮｏ、ステップＳＴ６４の条件分岐でＹｅｓとなり、１番目のノードは「空でない要素」である。
２番目のノードでは、ステップＳＴ６１の条件分岐でＮｏ、ステップＳＴ６３の条件分岐でＮｏ、ステップＳＴ６４の条件分岐でＮｏとなり、２番目のノードは「空要素」である。
【００４０】
３番目のノードでは、ステップＳＴ６１の条件分岐でＮｏ、ステップＳＴ６３の条件分岐でＮｏ、ステップＳＴ６４の条件分岐でＮｏとなり、３番目のノードは「空でない要素」である。
４番目のノードでは、ステップＳＴ６１の条件分岐でＹｅｓ、ステップＳＴ６２の条件分岐でＹｅｓとなり、４番目のノードは「属性」である。
５番目のノードでは、ステップＳＴ６１の条件分岐でＮｏ、ステップＳＴ６３の条件分岐でＹｅｓとなり、５番目のノードは「属性のテキスト」である。
６番目のノードでは、ステップＳＴ６１の条件分岐でＹｅｓ、ステップＳＴ６２の条件分岐でＮｏとなり、６番目のノードは「要素のテキスト」である。
【００４１】
ノードの種類を復元した後に、ノード名称付与部４１が、ｎ番目のノードに対し、テーブルのｎ行目の１列目に格納されているノードの名称を付与する。
ノード名称付与部４１の動作を、図４のテーブルを例に説明する。
テーブルの１行目の１列目の値がaaaであるから、１番目のノードの名称はaaaである。
以下、２〜６行目についても同様にノードの名称を得ることができる。
【００４２】
以上のノード名称付与部４１〜ビット・深さ分割部４４の操作によって得られた情報で、ノードの木構造、各ノードの種類、各ノードの名称がそろったので、ＸＭＬ文書として復元することができる。
最後に、復元部４０は、復元されたＸＭＬ文書をＸＭＬ文書格納部１０へ格納する。
【００４３】
以上の操作により、２列のテーブルから「空でない要素」「空要素」「属性」「要素のテキスト」「属性のテキスト」のノードからなる検証済みのＸＭＬ文書を復元することができる。
【００４４】
尚、上記実施の形態１において、ビット・深さ結合部３４は、深さの測定値を２倍するようにしたが、２倍に限定されるものではなく、倍数は２以上の任意の自然数であればよい。但し、倍数を小さくすることによって２列目の数値が小さくなり、情報量を少なくすることができる。
【００４５】
以上説明したように、実施の形態１のＸＭＬデータ変換装置によれば、ＸＭＬデータを、ＸＭＬデータの各ノードの識別情報とこれに対応する数値とからなるテーブルデータに変換するＸＭＬデータ変換装置であって、ＸＭＬデータから各ノードの識別情報を抽出するノード名称抽出部と、各ノードの種類に応じて、予め決められた種類のノードに対してのみビットを付与し、それ以外の種類のノードに対してはビットを付与しないビット付与部と、各ノードを木構造で表した場合のノード深さを測定するノード深さ測定部と、ビット付与部で付与されたビット付与の有無と、ノード深さ測定部で測定されたノード深さに基づいて、ノード深さの測定値をｎ（ｎは２以上の任意の自然数）倍し、かつ、ビットが付与されている場合は１を加えた数値を生成し、この数値を各ノードの識別情報に対応する数値として出力するビット・深さ結合部とを備えたので、テーブルデータを生成するためにスキーマを必要とせずにＸＭＬの構造を小さい数値で表現でき、また、元のＸＭＬデータに復元できるような単一のテーブルデータに変換することができる。
【００４６】
また、実施の形態１のＸＭＬデータ変換装置によれば、ビット・深さ結合部は、ノード深さの測定値をｎ（ｎは２以上の任意の自然数）倍し、かつ、ビットが付与されている場合は１を加えた値を出力するようにしたので、簡単な処理で元のＸＭＬデータに復元できるテーブルデータを変換することができる。
【００４７】
また、実施の形態１のＸＭＬデータ変換装置によれば、ノードの種類を、空でない要素、空要素、属性、要素のテキスト、属性のテキストとしたので、ＸＭＬデータで最も基本となる情報単位でテーブルデータに変換することができる。
【００４８】
また、実施の形態１のＸＭＬデータ変換装置では、２列のテーブルの１列目がＸＭＬ文書のノードの名称、２列目がＸＭＬ文書のノードの構造と、名称と構造を完全に分離できているので、ＸＭＬ文書を操作し易い。また、ノードの種類とノード深さを合成して２列目で示しているため、テーブルとしての情報量を小さくすることができる。尚、テーブルにおける１列目と２列目とは逆にしてもよい。
【００４９】
また、数値でＸＭＬ文書の構造を保持できるので、ＸＭＬ文書の操作に必要となるメモリが少なくてすむ。更に、単一のテーブルに格納できているので、高速な検索が可能である。
【００５０】
また、ＸＭＬ文書では空でない要素を開始タグと終了タグで２回記述する必要があるが、テーブルに格納してしまえば１回の記述ですむ。従って、空要素を除く要素の分だけ、ＸＭＬ文書そのものの圧縮効果が期待できる。
【００５１】
また、実施の形態１のＸＭＬデータ復元装置によれば、ＸＭＬデータの各ノードの識別情報とこれに対応する数値とからなるテーブルデータからＸＭＬデータを復元するＸＭＬデータ復元装置であって、各ノードに対応した数値から、ノードの種類をビット付与の有無で示す値と各ノードを木構造で表した場合のノード深さを示す値とを抽出するビット・深さ分割部と、ビット・深さ分割部で抽出したノード深さを示す値に基づいて、ＸＭＬデータの木構造を復元する木構造復元部と、ビット・深さ分割部で抽出したノードの種類をビット付与の有無で示す値に基づいて、木構造で示された各ノードの種類を復元するノード種類復元部と、ノード種類復元部でその種類が復元された各ノードに対して識別情報を付与するノード名称付与部とを備えたので、各ノードの識別情報とこれに対応する数値とからなるテーブルデータからＸＭＬデータを復元することができる。
【００５２】
また、実施の形態１のＸＭＬデータ復元装置によれば、ビット・深さ分割部は、各ノードの識別情報に対応した数値をｎ（ｎは２以上の任意の自然数）で割った余りをノードの種類を示すビット値、商をそのノードの深さを示す値として抽出するようにしたので、簡単な処理でテーブルデータから元のＸＭＬデータに復元することができる。
【００５３】
また、実施の形態１のＸＭＬデータ復元装置によれば、ノードの種類を、空でない要素、空要素、属性、要素のテキスト、属性のテキストとしたので、ＸＭＬデータで最も基本となる情報単位でＸＭＬデータに復元することができる。
【００５４】
実施の形態２．
実施の形態１では、ビット付与部３２は「属性のテキスト」にノード種類復元ビットｏｆｆを付与していた。しかし、ビット付与部３２は「属性のテキスト」にノード種類復元ビットｏｎを付与してもよい。即ち、実施の形態２では、図４のテーブルの５番目の数値は９となり、また、図５の木構造の５番目は黒丸数字となる。この場合、ノード種類復元部４２は、次のような処理を行うことにより、元のＸＭＬ文書に復元される。
【００５５】
図７は、実施の形態２によるノード種類復元部４２の復元処理を示すフローチャートである。
即ち、ノード種類復元部４２は、ビットがｏｎ（ステップＳＴ７１）で、子ノードを持つ（ステップＳＴ７２）場合、ノードの種類は「属性」、ビットがｏｎ（ステップＳＴ７１）で、子ノードを持たず（ステップＳＴ７２）、親ノードが属性である（ステップＳＴ７３）場合は「属性のテキスト」、ビットがｏｎ（ステップＳＴ７１）で、子ノードを持たず（ステップＳＴ７２）、親ノードが属性でない（ステップＳＴ７３）場合は「要素のテキスト」と判定する。また、ビットがｏｆｆ（ステップＳＴ７１）で、子ノードを持つ（ステップＳＴ７４）場合は「空でない要素」、ビットがｏｆｆ（ステップＳＴ７１）で、子ノードを持たない（ステップＳＴ７４）場合は「空要素」と判定する。
【００５６】
以下、ノード種類復元部４２の動作を、上述した実施の形態２における図４、図５の場合を例に説明する。
１番目のノードでは、ステップＳＴ７１の条件分岐でＮｏ、ステップＳＴ７４の条件分岐でＹｅｓとなり、１番目のノードは「空でない要素」である。
２番目のノードでは、ステップＳＴ７１の条件分岐でＮｏ、ステップＳＴ７４の条件分岐でＮｏとなり、２番目のノードは「空要素」である。
【００５７】
３番目のノードでは、ステップＳＴ７１の条件分岐でＮｏ、ステップＳＴ７４の条件分岐でＹｅｓとなり、３番目のノードは「空でない要素」である。
４番目のノードでは、ステップＳＴ７１の条件分岐でＹｅｓ、ステップＳＴ７２の条件分岐でＹｅｓとなり、４番目のノードは「属性」である。
５番目のノードでは、ステップＳＴ７１の条件分岐でＹｅｓ、ステップＳＴ７２の条件分岐でＮｏ、ステップＳＴ７３の条件分岐でＹｅｓとなり、５番目のノードは「属性のテキスト」である。
６番目のノードでは、ステップＳＴ７１の条件分岐でＹｅｓ、ステップＳＴ７２の条件分岐でＮｏ、ステップＳＴ７３の条件分岐でＮｏとなり、６番目のノードは「要素のテキスト」である。
【００５８】
尚、以上説明したビット付与部３２とノード種類復元部４２以外の動作は実施の形態１と同様であるため、ここでの説明は省略する。
【００５９】
以上のように、実施の形態２のＸＭＬデータ変換装置およびＸＭＬデータ復元装置によれば、ビット付与部は「属性のテキスト」にノード種類復元ビットｏｎを付与し、ノード種類復元部は、このビットｏｎに基づいてノードの種類を復元するようにしたので、この実施の形態２においても、実施の形態１と同様の効果が期待できる。
【００６０】
実施の形態３．
実施の形態１では、ＸＭＬ文書からテーブルへの変換時に、ビット付与部３２で「属性のテキスト」でノード種類復元ビットをすべてｏｆｆにしていた。また、実施の形態２では、ＸＭＬ文書からテーブルへの変換時に、ビット付与部３２で「属性のテキスト」でノード種類復元ビットをすべてｏｎにしていた。ところが、ビット付与部３２で「属性のテキスト」でノード種類復元ビットのｏｎとｏｆｆが混在してもよい。即ち、実施の形態３では、図４のテーブルの５番目の数値は８または９となり、また、図５の木構造の５番目は白丸数字または黒丸数字となる。この場合、ノード種類復元部４２は、次のような処理を行うことにより、元のＸＭＬ文書に復元される。
【００６１】
図８は、実施の形態３によるノード種類復元部４２の復元処理を示すフローチャートである。
即ち、ノード種類復元部４２は、ビットがｏｎ（ステップＳＴ８１）で、子ノードを持つ（ステップＳＴ８２）場合、ノードの種類は「属性」、ビットがｏｎ（ステップＳＴ８１）で、子ノードを持たず（ステップＳＴ８２）、親ノードが属性である（ステップＳＴ８３）場合は「属性のテキスト」、ビットがｏｎ（ステップＳＴ８１）で、子ノードを持たず（ステップＳＴ８２）、親ノードが属性でない（ステップＳＴ８３）場合は「要素のテキスト」と判定する。これらのステップＳＴ８１〜ステップＳＴ８３の動作は実施の形態２のステップＳＴ７１〜ステップＳＴ７３の動作と同様である。
【００６２】
また、ビットがｏｆｆ（ステップＳＴ８１）で、親ノードが属性でなく（ステップＳＴ８４）、子ノードを持たない（ステップＳＴ８５）場合は「空要素」、ビットがｏｆｆ（ステップＳＴ８１）で、親ノードが属性でなく（ステップＳＴ８４）、子ノードを持つ（ステップＳＴ８５）場合は「空でない要素」、ビットがｏｆｆ（ステップＳＴ８１）で、親ノードが属性である（ステップＳＴ８４）場合は「属性のテキスト」と判定する。即ち、これらステップＳＴ８１〜ステップＳＴ８５の動作は、実施の形態１のステップＳＴ６１〜ステップＳＴ６４の動作と同様である。
【００６３】
以下、ノード種類復元部４２の動作を、上述した実施の形態３における図４、図５の場合を例に説明する。
１番目のノードでは、ステップＳＴ８１の条件分岐でＮｏ、ステップＳＴ８４の条件分岐でＮｏ、ステップＳＴ８５の条件分岐でＹｅｓとなり、１番目のノードは「空でない要素」である。
２番目のノードでは、ステップＳＴ８１の条件分岐でＮｏ、ステップＳＴ８４の条件分岐でＮｏ、ステップＳＴ８５の条件分岐でＮｏとなり、２番目のノードは「空要素」である。
３番目のノードでは、ステップＳＴ８１の条件分岐でＮｏ、ステップＳＴ８４の条件分岐でＮｏ、ステップＳＴ８５の条件分岐でＮｏとなり、３番目のノードは「空でない要素」である。
【００６４】
４番目のノードでは、ステップＳＴ８１の条件分岐でＹｅｓ、ステップＳＴ８２の条件分岐でＹｅｓとなり、４番目のノードは「属性」である。
５番目のノードでは、ビットがｏｎであった場合は、ステップＳＴ８１の条件分岐でＹｅｓ、ステップＳＴ８２の条件分岐でＮｏ、ステップＳＴ８３の条件分岐でＹｅｓとなり、５番目のノードは「属性のテキスト」である。また、ビットがｏｆｆであった場合、ステップＳＴ８１の条件分岐でＮｏ、ステップＳＴ８４の条件分岐でＹｅｓとなり、「属性のテキスト」と判定される。
６番目のノードでは、ステップＳＴ８１の条件分岐でＹｅｓ、ステップＳＴ８２の条件分岐でＮｏ、ステップＳＴ８３の条件分岐でＮｏとなり、６番目のノードは「要素のテキスト」である。
【００６５】
尚、以上説明したビット付与部３２とノード種類復元部４２以外の動作は実施の形態１と同様であるため、ここでの説明は省略する。
【００６６】
以上のように、実施の形態３のＸＭＬデータ変換装置およびＸＭＬデータ復元装置によれば、ビット付与部において、「属性のテキスト」でノード種類復元ビットのｏｎとｏｆｆを混在させ、ノード種類復元部では、これらのビット値に基づいてノード種類を復元するようにしたので、この実施の形態３においても、実施の形態１と同様の効果が期待できる。
【００６７】
尚、上記実施の形態１、２において、ビット付与部３２でのノード種類復元ビットｏｎ／ｏｆｆの付与の仕方を完全に逆にすることができる。また、実施の形態３において、「属性のテキスト」を除いたノードに対し、ビット付与部３２でのノード種類復元ビットｏｎ／ｏｆｆの付与の仕方を完全に逆にすることもできる。
【００６８】
実施の形態１においては、ビット付与部３２は「属性」・「要素のテキスト」のノードに対してノード種類復元ビットｏｆｆを付与し、「空でない要素」・「空要素」・「属性のテキスト」のノードに対してノード種類復元ビットｏｎを付与することもできる。この場合、図６のフローチャートの条件分岐ステップＳＴ６１において、ＹｅｓとＮｏが入れ替わる。
【００６９】
実施の形態２においては、ビット付与部３２は「属性」・「要素のテキスト」・「属性のテキスト」のノードに対してノード種類復元ビットｏｆｆを付与し、「空でない要素」・「空要素」のノードに対してノード種類復元ビットｏｎを付与することもできる。この場合、図７のフローチャートの条件分岐ステップＳＴ７１において、ＹｅｓとＮｏが入れ替わる。
【００７０】
実施の形態３においては、ビット付与部３２は「属性」・「要素のテキスト」のノードに対してノード種類復元ビットｏｆｆを付与し、「空でない要素」・「空要素」のノードに対してノード種類復元ビットｏｎを付与することもできる。「属性のテキスト」のノードに対してはノード種類復元ビットｏｎを付与してもよいし、ノード種類復元ビットｏｆｆを付与してもよい。この場合、図８のフローチャートの条件分岐ステップＳＴ８１において、ＹｅｓとＮｏが入れ替わる。
【００７１】
以上のようなノード種類復元ビットの付与であっても、実施の形態１と同様の効果が期待できる。
【００７２】
実施の形態４．
実施の形態１〜３において、ノード深さ測定部３３は、各ノードの深さの代わりに、各ノードの親ノードの登場順位を得てもよい。但し、自分のノードがルートノードで親ノードがない場合０を得る。また、この場合、自分のノードの親ノードが分かれば木構造復元部４３で図５に示すような木構造を復元できる。 
【００７３】
実施の形態４におけるノード深さ測定部３３の動作を、図２に示すＸＭＬ文書を例に説明する。
aaaのノードでは、aaaが親ノードなので、ノード深さ測定部３３は０を得る。
bbbのノードでは、親ノードaaaの登場順位が１番目なので、ノード深さ測定部３３は１を得る。
cccのノードでは、親ノードaaaの登場順位が１番目なので、ノード深さ測定部３３は１を得る。
dddのノードでは、親ノードcccの登場順位が３番目なので、ノード深さ測定部３３は３を得る。
eeeのノードでは、親ノードdddの登場順位が４番目なので、ノード深さ測定部３３は４を得る
fffのノードでは、親ノードcccの登場順位が３番目なので、ノード深さ測定部３３は３を得る。
【００７４】
また、木構造復元部４３は、これらの値を各ノードの深さの代替として、各ノードの親ノードの登場順位から木構造を復元する。
【００７５】
以上のように、実施の形態４のＸＭＬデータ変換装置によれば、ノード深さ測定部は、各ノードの深さの代替として、各ノードの親ノードの登場順位を出力するようにし、また、ＸＭＬデータ復元装置によれば、木構造復元部は、各ノードの深さの代替として、各ノードの親ノードの登場順位から木構造を復元するようにしたので、実施の形態１と同様の効果が期待できる。
【００７６】
実施の形態５．
上記実施の形態１〜４では、ビット・深さ結合部３４によってノードの種類とノード深さを結合してテーブルの２列目の数値を得ていたが、このような処理を行わず、ビット付与部３２のビット値と、ノード深さの数値を３列のテーブルの値として用いるようにしてもよく、これを実施の形態５として説明する。
【００７７】
ここで、ＸＭＬデータ変換装置およびＸＭＬデータ復元装置の構成は、図１において、ビット・深さ結合部３４とビット・深さ分割部４４がない以外は同様であるため、図１を援用して説明する。
【００７８】
図９は、実施の形態５のＸＭＬデータ変換装置によって作成されるテーブルの説明図である。
これは、図２に示したＸＭＬ文書を変換部３０によってテーブルデータに変換したもので、実施の形態１における図４のテーブルデータに対応するものである。ここで、１列目はノードの名称、２列目はビット付与部３２によって付与されるビットのｏｎ／ｏｆｆを示し、３列目はノード深さ測定部３３によって測定された各ノードの深さを示している。尚、図９において、４行目と６行目の「＊」がビットのｏｎを示している。
【００７９】
また、復元部４０の動作としては、木構造復元部４３が、図９に示したテーブルデータの３列目の数値によって木構造を復元し、ノード種類復元部４２は、２列目のビットのｏｎ／ｏｆｆによってノードの種類を復元する。尚、この場合のノードの種類を復元する動作は、実施の形態１と同様に行う。
【００８０】
以上のように、実施の形態５のＸＭＬデータ変換装置によれば、ＸＭＬデータを、ＸＭＬデータの各ノードの識別情報と、これに対応するノードの種類を示す値と、各ノードを木構造で表した場合のノード深さを示す数値とからなるテーブルデータに変換するＸＭＬデータ変換装置であって、ＸＭＬデータから各ノードの識別情報を抽出するノード名称抽出部と、各ノードの種類に応じて予め決められた種類のノードに対してのみビットを付与し、各ノードに対してビットが付与されているか否かを表す値として出力するビット付与部と、各ノードを木構造で表した場合のノード深さに対応した数値を出力するノード深さ測定部とを備えたので、テーブルデータを生成するためにスキーマを必要とせず、また、元のＸＭＬデータに復元できるような単一のテーブルデータに変換することができると共に、変換処理を簡素化することができる。
【００８１】
また、実施の形態５のＸＭＬデータ復元装置によれば、ＸＭＬデータの各ノードの識別情報とこれに対応するノードの種類を示す値と、各ノードを木構造で表した場合のノード深さを示す数値とからなるテーブルデータからＸＭＬデータを復元するＸＭＬデータ復元装置であって、ノード深さを示す数値に基づいて、ＸＭＬデータの木構造を復元する木構造復元部と、ノードの種類をビット付与の有無で示す値に基づいて、木構造で示された各ノードの種類を復元するノード種類復元部と、ノード種類復元部でその種類が復元された各ノードに対して識別情報を付与するノード名称付与部とを備えたので、各ノードの識別情報とこれに対応する数値とからなるテーブルデータからＸＭＬデータを復元することができると共に、復元処理を簡素化することができる。
【図面の簡単な説明】
【００８２】
【図１】この発明の実施の形態１によるＸＭＬデータ変換装置及びＸＭＬデータ復元装置を示す構成図である。
【図２】ＸＭＬ文書の一例を示す説明図である。
【図３】図２に示すＸＭＬ文書の木構造を示す説明図である。
【図４】図２に示すＸＭＬ文書を変換したテーブルの説明図である。
【図５】図４のテーブルから復元した木構造を示す説明図である。
【図６】実施の形態１によるノード種類を決定するための動作を示すフローチャートである。
【図７】実施の形態２によるノード種類を決定するための動作を示すフローチャートである。
【図８】実施の形態３によるノード種類を決定するための動作を示すフローチャートである。
【図９】実施の形態５におけるテーブルの説明図である。
【符号の説明】
【００８３】
１０  ＸＭＬ文書格納部、２０  テーブル格納部、３０  変換部、３１  ノード名称抽出部、３２  ビット付与部、３３  ノード深さ測定部、３４  ビット・深さ結合部、４０  復元部、４１  ノード名称付与部、４２  ノード種類復元部、４３  木構造復元部、４４  ビット・深さ分割部。
【図１】
0004675748.tif 000002
【図２】
0004675748.tif 000003
【図３】
0004675748.tif 000004
【図４】
0004675748.tif 000005
【図５】
0004675748.tif 000006
【図６】
0004675748.tif 000007
【図７】
0004675748.tif 000008
【図８】
0004675748.tif 000009
【図９】
0004675748.tif 000010