説明

XMLデータ処理装置、XMLデータ処理方法及びXMLデータ処理プログラム

【課題】XMLデータを整形することにより処理時間短縮が可能である、XMLデータ処理装置、その方法及びそのプログラムを提供する。
【解決手段】演算手段と記憶手段を少なくとも備えた計算機を用いて、XMLデータ処理の処理を行うXMLデータ処理装置が、XMLデータを解析する。XMLデータの取り得る構造を記述したXMLフォーマットシートが登録された際に、XMLフォーマット構成に関するバイナリデータを生成する。生成したバイナリデータを記憶する。XMLデータ受信の際に、XMLデータ構成に関するバイナリデータを生成する。受信したXMLデータをどのXMLフォーマットでチェックするか決定するための識別情報を、受信したXMLデータ内より取り出す。取り出した前記識別情報をキーとして前記XMLフォーマット構成に関するバイナリデータを取り出し、前記XMLデータ構成に関するバイナリデータと比較する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、XML(eXtensible Markup Language)データを高速に処理するXMLデータ処理装置、XMLデータ処理方法及びXMLデータ処理プログラムに関する。
【背景技術】
【0002】
XMLは、コンピュータ間で交換可能なデータ記述方式を提供する言語であり、タグと呼ばれる特定の文字記号列を用いて情報を構造化するという特徴を活かし、一般に広く普及している。
【0003】
このXML文書の持つ構造を正しく記述しているか否かを解析するために、字句解析・構文解析を行うパーシング処理が知られている。
【0004】
また、XMLデータを操作するAPI(Application Program Interface)としてDOM(Document Object Model)とSAX(Simple API for XML)が知られている。
【0005】
DOMは、XML文章全体をメモリ上に読み込ませ、ツリー構造を組み立てることにより文書を扱う。これに対しSAXは、XML文書全体を先頭から順次読み込み、XML文書の中で処理対象となる部分を見つけた場合に処理を行う。
【0006】
また、XML文書のパーシングにおいては、XMLスキーマ等の、フォーマットを定義したスキーマに対し、XML文書のフォーマットが正しいかどうかの妥当性検証を行う。
【0007】
このパーシング処理を実行する際、CPU(Central Processing Unit)による処理時間の多くは、制御ワード、特定文字、および他の重要なデータを探すための文書の読み込みに費やされる。
【0008】
この点に関連した技術であり、パーシング処理の処理時間短縮を目的とする技術として、特許文献1では、専用プロセッサ、及び結合ハードウェアを用いたパーシング処理の高速化を提案している。
【特許文献1】特表2006−505043号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
しかしながら、特許文献1に記載の発明は、専用プロセッサを有するハードウェアを用いることにより、ハードウェアの処理の並列化を図ることにより実現されるパーシング処理の高速化技術である。よって、実現のためには専用プロセッサを用意しなければならない。
【0010】
そこで、本発明は、専用のプロセッサを用いることなく、文字列比較処理時間を短縮し更なる高速化を図ることが可能な、XMLデータ処理装置、XMLデータ処理方法及びXMLデータ処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明の第1の観点によれば、装置として演算手段と記憶手段を少なくとも備えた計算機を用いて、XMLデータの処理を行うXMLデータ処理装置であって、前記XMLデータ処理装置が、XMLデータを解析する手段を備え、前記XMLデータを解析する手段が、XMLデータの取り得る構造を記述したXMLフォーマットシートが登録された際に、XMLフォーマット構成に関するバイナリデータを生成する第1の生成手段と、前記第1の生成手段において生成したバイナリデータを記憶する記憶手段と、前記記録手段において記録したXMLフォーマット構成に関するバイナリデータを用いて、XMLデータの解析を行う解析手段と、を備えることを特徴とするXMLデータ処理装置が提供される。
【0012】
本発明の第2の観点によれば、方法として演算ステップと記憶ステップを少なくとも行う計算機を用いて、XMLデータの処理を行うXMLデータ処理方法であって、前記XMLデータ処理方法が、XMLデータを解析するステップを備え、前記XMLデータを解析するステップが、XMLデータの取り得る構造を記述したXMLフォーマットシートが登録された際に、XMLフォーマット構成に関するバイナリデータを生成する第1の生成ステップと、前記第1の生成ステップにおいて生成したバイナリデータを記憶する記憶ステップと、前記記録ステップにおいて記録したXMLフォーマット構成に関するバイナリデータを用いて、XMLデータの解析を行う解析ステップと、を備えることを特徴とするXMLデータ処理方法が提供される。
【0013】
本発明の第3の観点によれば、プログラムとして演算機能と記憶機能を少なくとも備えた計算機に、XMLデータの処理を行わせるためのXMLデータ処理プログラムであって、前記XMLデータ処理プログラムが、XMLデータを解析する機能をコンピュータに実現させ、前記XMLデータを解析する機能が、XMLデータの取り得る構造を記述したXMLフォーマットシートが登録された際に、XMLフォーマット構成に関するバイナリデータを生成する第1の生成機能と、前記第1の生成機能において生成したバイナリデータを記憶する記憶機能と、前記記録機能において記録したXMLフォーマット構成に関するバイナリデータを用いて、XMLデータの解析を行う解析機能と、を更にコンピュータに実現させることを特徴とするXMLデータ処理プログラムが提供される。
【発明の効果】
【0014】
本発明によれば、XMLフォーマット構成に関するバイナリデータを用いて、XMLデータの解析を行うことにより、文字列比較処理時間を短縮し更なる高速化を図ることが可能となる。
【発明を実施するための最良の形態】
【0015】
次に、本発明の実施形態について、適宜図面を参照しながら詳細に説明する。
【0016】
[構成の説明]
まず、図1を用いて本発明の実施形態の構成を説明する。図1は、本発明の実施形態であるXMLデータ処理装置の構成を説明するブロック図である。本XMLデータ処理装置は少なくとも、解析部100及び検索・抽出部200を有する計算機である。また、本XMLデータ処理装置は、図示しないCPU(Central Processing Unit)及び図示しないメモリを少なくとも有する。また、必要に応じ図示しない記憶装置を有することが望ましい。記憶装置としては、例えばハードディスク記録装置が挙げられる。
【0017】
解析部100は、字句解析、XMLメッセージの整形、及び構文解析を行う。詳細は後述する。
【0018】
検索部200は、解析部100で字句解析、構文解析されたメッセージから、所望のXMLデータの検索及び抽出処理を行う。
【0019】
図2は、図1に記載されている解析部100の、内部機能を説明するブロック図である。解析部100は、メッセージ整形部110、字句解析部120、構文解析部130、XMLフォーマットシート140及びバイナリデータ管理部150を有する。
【0020】
メッセージ整形部110は、構文解析部130における構文解析の高速化のために、受信したXMLメッセージを解析し、階層タグ名毎にハッシュ計算し、階層番号を付加した、固定長の一意のデータへと整形する。また、受信データをどのXMLフォーマットでチェックするか決定するための情報である、「識別情報」をバイナリデータ管理部に送信する。XMLメッセージの例及び整形に関する詳細は後述する。
【0021】
字句解析部120は、受信したXMLメッセージがXML規則で定められた文法に従って記述されているか否かをチェックする機能を有する部分である。字句解析部120は、XMLメッセージに文法的な誤りがある場合、NGメッセージを応答する。
【0022】
構文解析部130は、メッセージ整形部110により整形されたデータとXMLフォーマットシートをバイナリ化したデータを用い、XMLデータとの関係性をチェックする機能を有する部分である。
【0023】
XMLフォーマットシート140は、XMLデータの取り得る構造を記述したものであり、XMLデータ毎にシステム側から登録される。フォーマットシートとしては、一般的にXMLスキーマ(XML Schema)が用いられる。XMLスキーマの例については後述する。フォーマットシートを用いて受信XMLメッセージをチェックすることにより、XMLメッセージの妥当性を確認する。
【0024】
バイナリデータ管理部150は、XMLフォーマットシート140を解析し、階層タグ名毎にハッシュ計算する。また、バイナリデータ管理部150は、階層番号と、タグ間の親子関係を表すネクストアドレスを付加した、固定長の一意のデータへと整形したバイナリデータを生成・管理する。バイナリデータ管理部150は、XMLフォーマットシート登録生成処理を行い、メッセージ整形処理110より受信した識別情報によって要求されたバイナリデータを、構文解析部130に送信する。
【0025】
[動作の説明]
次に、本実施形態の動作を、XMLスキーマやXMLメッセージの例を示しつつ説明する。
【0026】
図3は、XMLスキーマの例を示す図である。本XMLスキーマ例は、schema要素とelement要素を有している。スキーマ中の各要素はxsd:という接頭辞を持つ。この接頭辞はschema要素中の宣言「xmlns:xsd=”http://www.w3.org/2001/XMLSchema”」によってXMLスキーマの名前空間と関連付けられている。また、element要素により、各要素を宣言する。
【0027】
図4は、図3のXMLスキーマ例より構築したXMLスキーマグループを示す図である。XMLスキーマから、階層タグ名をノードとするXMLスキーマツリーを生成し、ツリーの各ノードを階層化し、親子関係を基にグループ化する。本XMLスキーマ例では、以下の4つのグループに分解できる。
【0028】
グループ1−1は、最上位ノードAから成るグループである。
【0029】
グループ2−1は、ノードAを親とする、ノードB、C、Dから成るグループである。
【0030】
グループ3−1は、ノードBを親とする、ノードA、Bから成るグループである。
【0031】
グループ3−2は、ノードDを親とする、ノードEから成るグループである。
【0032】
図5は、図4のXMLスキーマグループより構築した、XMLスキーマのハッシュデータを示す図である。図4で生成したグループ毎に、階層番号(level)、ハッシュデータ(Hash data)、ネクストアドレス(next)を要素とするテーブルとし、高速メモリに配置する。ここで、高速メモリの例としては、CAM(Content Addressable Memory)のような、メモリ内のデータと入力データとの比較を1クロックサイクルで完了出来るように設計されている記憶アレイ等が例示出来る。
【0033】
階層番号はスキーマツリーの深さを表す。すなわち最上位ノードAから成るグループ1−1(図4)を1(図5)とし、子グループには1ずつ加算する。
【0034】
ハッシュデータは、任意の文字列である階層タグ名をハッシュ関数で固定長のバイナリデータとしたものである。
【0035】
なお、ハッシュ値の衝突(シノニム)が発生する場合は、シノニムの解決を考慮する必要がある。衝突(シノニム)が発生した場合の対策方法としては、例えば、チェーン法とオープンアドレス法がある。チェーン法は同じハッシュ値を持つデータをポインタを利用してリストでつなぐ方法である。オープンアドレス法は、元のハッシュ値+1で再ハッシュを行う方法である。これらの対策方法を実施出来る機能を本発明の実施形態に実装してもよい。
【0036】
ネクストアドレスは、子グループの先頭アドレスとなる。図5の例によると、グループ1−1(図4)のネクストアドレスは、グループ2−1(図4)の先頭アドレスである「3(図5)」となる。
【0037】
図6は、XMLメッセージの例を示す図である。「A xmlns:xsi」の行で本XMLメッセージに対応するXMLスキーマファイルが、「aaa.xsd」であることを表している。以降の行は、XMLメッセージの階層構造を表している。
【0038】
図7は、図6のXMLメッセージ例より構築したXMLメッセージツリーを示す図である。XMLメッセージは、階層タグ名をツリーを構成するノードとしてモデル化できる。本XMLメッセージ例では、図7に示すようにツリーは2本のパスに分解できる。
【0039】
図8は、図7に示すXMLメッセージツリーより構築したXMLメッセージのハッシュデータを示す図である。各々のパスの各ノード名をハッシュ関数により固定ビット長のハッシュ値に変換し、パスごとに固有のビット列を生成する。また、ハッシュ値の衝突(シノニム)が発生する場合は、シノニムの解決を考慮する必要がある。
【0040】
図9は、図2に記載されている構文解析部130で行われる、XMLメッセージの構文解析処理を示す図である。XMLスキーマのハッシュデータとXMLメッセージのハッシュデータの比較処理を、XMLメッセージのハッシュデータ数の分だけ行う。
【0041】
具体的には、XMLメッセージのハッシュデータを図9中の(1)から(5)の順に取り出し、XMLスキーマのハッシュデータの先頭からと比較する。各々のテーブルの階層番号(level)が等しく、かつハッシュデータが等しい場合、XMLスキーマテーブルの比較ポイントをネクストアドレス(next)に移動し、XMLメッセージテーブルの比較ポイントを1つインクリメントする。一方、levelとHash dataの少なくともどちらかが一致しない場合は、XMLスキーマテーブルの次エントリと比較する。これを繰り返し、XMLメッセージテーブルの最終ノード(last)が「Yes」かつXMLスキーマテーブルのネクストアドレスが「NG」以外の場合、このパスに関しては比較OKと判断し、次のパスの比較を行う。
【0042】
XMLスキーマテーブルのHash dataに「default」が設定されている場合は、XMLメッセージのハッシュデータに関わらず一致とみなす。ネクストアドレスが「NG」の場合は、比較NGと判断し、NGメッセージを送信元アドレスに送信する。
【0043】
全ての比較処理で一致データが見つかった場合、XMLメッセージの妥当性が証明されたと判断する。
【0044】
ここまで、本発明の実施形態について説明してきたが、この実施形態によれば、XMLスキーマの各パスを事前にハッシュによりバイナリ化し高速メモリに格納し、XMLメッセージを受信時にメッセージパスをハッシュによりバイナリ化し、両者を比較することで、XMLデータの事前解析を高速化することが出来る。また、上述した実施形態を、本発明の趣旨から逸脱しない範囲内で、変更することが可能であることは、当業者にとって理解の範囲内である。
【0045】
なお、本発明の実施形態であるXMLデータ処理装置は、ハードウェア、ソフトウェア又はこれらの組合せにより実現することができる。
【図面の簡単な説明】
【0046】
【図1】本発明の実施形態の基本的構成を表すブロック図である。
【図2】図1に記載されている解析部100の機能を説明するブロック図である。
【図3】XMLスキーマの例を示す図である。
【図4】図3のXMLスキーマより構築したXMLスキーマグループの図である。
【図5】図4のXMLスキーマグループより構築したXMLスキーマのハッシュデータの図である。
【図6】XMLメッセージの例を示す図である。
【図7】図6のXMLメッセージより構築したXMLメッセージツリーの図である。
【図8】図7のXMLメッセージツリーより構築したXMLメッセージのハッシュデータの図である。
【図9】XMLメッセージの構文解析イメージ図である。
【符号の説明】
【0047】
100 解析部
110 メッセージ整形部
120 字句解析部
130 構文解析部
140 XMLフォーマットシート
150 バイナリデータ管理部
200 検索/抽出部

【特許請求の範囲】
【請求項1】
演算手段と記憶手段を少なくとも備えた計算機を用いて、XMLデータの処理を行うXMLデータ処理装置であって、
前記XMLデータ処理装置が、XMLデータを解析する手段を備え、
前記XMLデータを解析する手段が、XMLデータの取り得る構造を記述したXMLフォーマットシートが登録された際に、XMLフォーマット構成に関するバイナリデータを生成する第1の生成手段と、
前記第1の生成手段において生成したバイナリデータを記憶する記憶手段と、
前記記録手段において記録したXMLフォーマット構成に関するバイナリデータを用いて、XMLデータの解析を行う解析手段と、
を備えることを特徴とするXMLデータ処理装置。
【請求項2】
前記XMLデータを解析する手段が、
XMLデータ受信の際に、XMLデータ構成に関するバイナリデータを生成する第2の生成手段と、
受信したXMLデータをどのXMLフォーマットでチェックするか決定するための識別情報を、受信したXMLデータ内より取り出す識別情報取り出し手段と、
取り出した前記識別情報をキーとして前記XMLフォーマット構成に関するバイナリデータを取り出し、前記XMLデータ構成に関するバイナリデータと比較する比較手段と、
を更に備えることを特徴とする請求項1に記載のXMLデータ処理装置。
【請求項3】
前記第1の生成手段におけるXMLフォーマット構成に関するバイナリデータの生成は、XMLフォーマットシートを解析し、階層タグ名毎にハッシュ計算し、階層番号とタグ間の親子関係を表すネクストアドレスを付加した、固定長の一意のデータへと整形することにより行われることを特徴とする請求項1又は2に記載のXMLデータ処理装置。
【請求項4】
前記第2の生成手段におけるXMLデータ構成に関するバイナリデータの生成は、受信したXMLメッセージを解析し、階層タグ名毎にハッシュ計算し、階層番号を付加した、固定長の一意のデータへと整形することにより行われることを特徴とする請求項1乃至3の何れか1項に記載のXMLデータ処理装置。
【請求項5】
演算ステップと記憶ステップを少なくとも行う計算機を用いて、XMLデータの処理を行うXMLデータ処理方法であって、
前記XMLデータ処理方法が、XMLデータを解析するステップを備え、
前記XMLデータを解析するステップが、XMLデータの取り得る構造を記述したXMLフォーマットシートが登録された際に、XMLフォーマット構成に関するバイナリデータを生成する第1の生成ステップと、
前記第1の生成ステップにおいて生成したバイナリデータを記憶する記憶ステップと、
前記記録ステップにおいて記録したXMLフォーマット構成に関するバイナリデータを用いて、XMLデータの解析を行う解析ステップと、
を備えることを特徴とするXMLデータ処理方法。
【請求項6】
前記XMLデータを解析するステップが、
XMLデータ受信の際に、XMLデータ構成に関するバイナリデータを生成する第2の生成ステップと、
受信したXMLデータをどのXMLフォーマットでチェックするか決定するための識別情報を、受信したXMLデータ内より取り出す識別情報取り出しステップと、
取り出した前記識別情報をキーとして前記XMLフォーマット構成に関するバイナリデータを取り出し、前記XMLデータ構成に関するバイナリデータと比較する比較ステップと、
を更に備えることを特徴とする請求項5に記載のXMLデータ処理方法。
【請求項7】
前記第1の生成ステップにおけるXMLフォーマット構成に関するバイナリデータの生成は、XMLフォーマットシートを解析し、階層タグ名毎にハッシュ計算し、階層番号とタグ間の親子関係を表すネクストアドレスを付加した、固定長の一意のデータへと整形することにより行われることを特徴とする請求項5又は6に記載のXMLデータ処理方法。
【請求項8】
前記第2の生成ステップにおけるXMLデータ構成に関するバイナリデータの生成は、受信したXMLメッセージを解析し、階層タグ名毎にハッシュ計算し、階層番号を付加した、固定長の一意のデータへと整形することにより行われることを特徴とする請求項5乃至7の何れか1項に記載のXMLデータ処理方法。
【請求項9】
演算機能と記憶機能を少なくとも備えた計算機に、XMLデータの処理を行わせるためのXMLデータ処理プログラムであって、
前記XMLデータ処理プログラムが、XMLデータを解析する機能をコンピュータに実現させ、
前記XMLデータを解析する機能が、XMLデータの取り得る構造を記述したXMLフォーマットシートが登録された際に、XMLフォーマット構成に関するバイナリデータを生成する第1の生成機能と、
前記第1の生成機能において生成したバイナリデータを記憶する記憶機能と、
前記記録機能において記録したXMLフォーマット構成に関するバイナリデータを用いて、XMLデータの解析を行う解析機能と、
を更にコンピュータに実現させることを特徴とするXMLデータ処理プログラム。
【請求項10】
前記XMLデータを解析する機能が、
XMLデータ受信の際に、XMLデータ構成に関するバイナリデータを生成する第2の生成機能と、
受信したXMLデータをどのXMLフォーマットでチェックするか決定するための識別情報を、受信したXMLデータ内より取り出す識別情報取り出し機能と、
取り出した前記識別情報をキーとして前記XMLフォーマット構成に関するバイナリデータを取り出し、前記XMLデータ構成に関するバイナリデータと比較する比較機能と、
を更にコンピュータに実現させることを特徴とする請求項9に記載のXMLデータ処理プログラム。
【請求項11】
前記第1の生成機能におけるXMLフォーマット構成に関するバイナリデータの生成は、XMLフォーマットシートを解析し、階層タグ名毎にハッシュ計算し、階層番号とタグ間の親子関係を表すネクストアドレスを付加した、固定長の一意のデータへと整形することにより行われることを特徴とする請求項9又は10に記載のXMLデータ処理プログラム。
【請求項12】
前記第2の生成機能におけるXMLデータ構成に関するバイナリデータの生成は、受信したXMLメッセージを解析し、階層タグ名毎にハッシュ計算し、階層番号を付加した、固定長の一意のデータへと整形することにより行われることを特徴とする請求項9乃至11の何れか1項に記載のXMLデータ処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2009−163690(P2009−163690A)
【公開日】平成21年7月23日(2009.7.23)
【国際特許分類】
【出願番号】特願2008−3311(P2008−3311)
【出願日】平成20年1月10日(2008.1.10)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】