JP3888621B2 - 文書処理システム、文書処理方法及びプログラム - Google Patents

文書処理システム、文書処理方法及びプログラム Download PDF

Info

Publication number
JP3888621B2
JP3888621B2 JP2002045087A JP2002045087A JP3888621B2 JP 3888621 B2 JP3888621 B2 JP 3888621B2 JP 2002045087 A JP2002045087 A JP 2002045087A JP 2002045087 A JP2002045087 A JP 2002045087A JP 3888621 B2 JP3888621 B2 JP 3888621B2
Authority
JP
Japan
Prior art keywords
document
automaton
structural type
dtd
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2002045087A
Other languages
English (en)
Other versions
JP2003256264A (ja
Inventor
直彦 浦本
宏 丸山
健人 田村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2002045087A priority Critical patent/JP3888621B2/ja
Priority to US10/370,196 priority patent/US7275208B2/en
Publication of JP2003256264A publication Critical patent/JP2003256264A/ja
Application granted granted Critical
Publication of JP3888621B2 publication Critical patent/JP3888621B2/ja
Priority to US11/841,621 priority patent/US20080082570A1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/221Parsing markup language streams
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、XMLなどの構造化言語で記述された文書の処理方法に関し、特にDTDなどの構造型定義が複数用意されている場合に、処理対象の文書がいずれの構造型定義に適合するか判断する手法に関する。
【0002】
【従来の技術】
ネットワークによる情報通信において、XML形式を使ってデータ等をやりとりするシステムが一般的になりつつある。企業間でビジネスデータ等をXML文書でやりとりする場合、一般に、XML文書の書式は単一ではなく複数存在する。例えば、リース契約のためのシステムでは、見積依頼、契約書、依頼事項照会などの書式が考えられる。
【0003】
ところで、XMLでは通常、DTD(Document Type Definition)を用いて書式を指定する。具体的には、書式それぞれに対して、見積.dtd、契約書.dtdなどのDTDファイルを用意する(技術的には複数の書式を1つのDTDで記述することができるが、現実的にはそれぞれの書式毎にDTDを分けている場合が多い)。
そして、XML文書が適合するDTDを同定することにより、当該XML文書の書式を認定することが必要となる場合がある。例えば、やりとりされたXML文書に対して文書の内容に応じた処理を行おうとする場合、具体的には書式に応じて電子署名のための鍵を使い分ける場合などである。
この場合、処理対象であるXML文書に明示的にDTDが指定してあれば、そのXML文書がどのDTDに適合するかは自明である。しかし、明示的な指定がない場合には、当該XML文書を実際にDTDで検証する処理が必要となる。
【0004】
また、XML文書にDTDが指定されていない場合がある。例えば、近年、ウェブサービス(Web Services)によるシステム構築が脚光を浴びているが、このウェブサービスではXML文書のやりとりに、SOAP(Simple Object Access Protocol)が用いられる。SOAP仕様は、XML文書をくるむ封筒の役目をする。すなわちXML文書は、SOAPによるSOAP EnvelopeにXML文書を「包んで」やりとりされる。そして、SOAPは、構造型定義(スキーマ)としてDTDではなくXML Schemaを用いているので、SOAP Envelopeに入れられたXML文書が所定のDTDに適合している場合でも、DOCTYPE宣言で当該XML文書のDTDを指定することができない。
また、電子署名が施されたXML文書においても同様の構造により、当該XML文書のDTDを指定することができない。
【0005】
【発明が解決しようとする課題】
上述したように、XML文書のDTDを同定することが必要な場合、処理対象であるXML文書において明示的にDTDが指定されていないならば、当該XML文書のDTDを同定するために、当該XML文書を実際にDTDで検証する処理が必要となる。
また、SOAPや電子署名による加工が施されたXML文書では、当該XML文書のDTDをDOCTYPE宣言で指定することができないため、当該XML文書のDTDを同定するために、やはり当該XML文書を実際にDTDで検証する処理が必要となる。この場合、当該XML文書のDTDをSOAP header等に記述することにより、加工が施された状態でXML文書のDTDを認定できるようにすることは可能であるが、DTDを指定するための標準的な方法は存在しない。
【0006】
以上のように、処理対象であるXML文書の書式を認定するためにDTDで検証する処理を必要とする場合があるが、処理対象であるXML文書の書式が多数ある場合、全てのDTDにてXML文書を検証する作業は繁雑であり手間を要する。
なお、かかる問題は、DTD以外の構造型定義(例えば上記のXML Schema)でも同様に生じ得る。
【0007】
そこで、本発明は、ある構造型定義の集合が与えられているという前提で、受け取ったXML文書がその中のどの構造型定義に適合するかを求める処理を高速に行うことを目的とする。
また、既存のシステム構成やXMLプロセッサの実装に影響を与えることなく、かかる処理を行うシステムを実現することを他の目的とする。
【0008】
【課題を解決するための手段】
上記の目的を達成するため、本発明は、次のように構成された文書処理システムとして実現される。すなわち、この文書処理システムは、XMLなどの構造化言語で記述された文書が複数の構造型定義(例えばDTD)のうちのいずれに適合するかを判別するための判別規則を、各構造型定義の固有の要素に基づいて生成する判別規則生成部と、この判別規則生成部にて生成された判別規則に基づいて、処理対象である文書がいずれの構造型定義に適合するかを判別する判別部とを備えることを特徴とする。
より詳細には、この判別規則生成部は、生成した判別規則を用いて、所定の要素の出現を条件として対応する構造型定義を特定するルールベースを生成し、判別部は、処理対象である文書から得られたイベント列を、このルールベースに照合して、この文書が適合する構造型定義を特定する。
【0009】
本発明による他の文書処理システムは、処理対象であるXML文書を入力する入力部と、この入力部にて入力されたXML文書を解析するXMLパーザと、このXMLパーザによる解析結果に基づいて、処理対象のXML文書が適合すべきDTD(Document Type Definition)の集合のうち、いずれかのDTDに固有の要素が処理対象のXML文書に含まれているかどうかに基づいて、このXML文書が適合するDTDを判別するDTD判別部とを備えることを特徴とする。
【0010】
また、本発明によるさらに他の文書処理システムは、XMLなどの構造化言語で記述された文書が適合すべき構造型定義(例えばDTD)の集合に対応する非決定性オートマトンを生成する非決定性オートマトン生成部と、この非決定性オートマトンを決定性オートマトンに変換する決定性オートマトン生成部と、この決定性オートマトンに基づいて、処理対象である文書が前記構造型定義の集合のうちのいずれに適合するかを判別する判別部とを備えることを特徴とする。
【0011】
この文書処理システムでは、生成されるオートマトンに、構造型定義の集合に含まれる各構造型定義のいずれに対応する部分かを識別するための特定情報が付与される。すなわち、非決定性オートマトン生成部は、構造型定義の集合に含まれる各構造型定義に対応する非決定性オートマトンを合成して構造型定義の集合に対応する非決定性オートマトンを生成し、かつ構造型定義の集合に対応する非決定性オートマトンにおける各構造型定義に対応する部分に対応する構造型定義を特定する特定情報を付与し、決定性オートマトン生成部は、生成した決定性オートマトンに対して、非決定性オートマトンに付与されている特定情報を更新して付与し、判別部は、処理対象である文書に基づいて決定性オートマトンをたどり、たどった部分に対して付与されている特定情報に基づいて、処理対象である文書が適合する構造型定義を判別する。
【0012】
ここで、特定情報としては、構造化言語の数に相当する数のビットを持ったビットベクトルを用いることができる。この場合、ビットベクトル中の各ビットを各構造化言語にそれぞれ対応付けておけば、オートマトンの所定の部分に付与されているビットベクトルを参照することにより、対応する構造化言語を認識することができる。
また、この特定情報は、非決定性オートマトン及び決定性オートマトンの状態遷移に対して、または状態に対して付与することができる。
【0013】
また、上記の目的を達成する他の本発明は、コンピュータを用いてXMLなどの構造化言語で記述された文書を処理する次のような文書処理方法として実現される。すなわち、この文書処理方法は、処理対象である文書がDTDなどの構造型定義の集合に含まれる構造型定義のうちのいずれに適合するかを判別するための判別規則を、各構造型定義の固有の要素に基づいて生成するステップと、生成された判別規則に基づいて、処理対象である文書がいずれの構造型定義に適合するかを判別するステップとを含むことを特徴とする。
ここで、詳しくは、この判別規則を生成するステップは、各構造型定義を構成する要素列を抽出するステップと、抽出された要素列のうちで、ただ1つの構造型定義にのみ出現する要素列を判別規則として選択するステップとを含む。
【0014】
本発明の他の文書処理方法は、XML文書を入力して解析するステップと、この解析結果に基づいて、処理対象であるXML文書が適合すべきDTD(Document Type Definition)の集合のうち、いずれかのDTDに固有の要素が処理対象のXML文書に含まれているかどうかを調べ、このXML文書が適合するDTDを判別するステップとを含むことを特徴とする。
【0015】
さらにまた、本発明の他の文書処理方法は、文書が適合すべき構造型定義の集合をメモリから読み出し、当該構造型定義の集合に含まれる各構造型定義に対応する第1の非決定性オートマトンを生成する第1のステップと、この第1の非決定性オートマトンを合成して構造型定義の集合全体に対応する第2の非決定性オートマトンを生成する第2のステップと、この第2の非決定性オートマトンを決定性オートマトンに変換する第3のステップと、この決定性オートマトンに基づいて、処理対象である文書が構造型定義の集合のうちのいずれに適合するかを判別する第4のステップとを含むことを特徴とする。
ここで好ましくは、オートマトンを生成した際に、構造型定義の集合に含まれる各構造型定義のいずれに対応する部分かを識別するための特定情報が付与される。すなわち、第1のステップは、第1の非決定性オートマトンのそれぞれに対応する構造型定義を特定する特定情報を付与するステップを含み、第2のステップは、第2の非決定性オートマトンにおける各構造型定義に対応する部分に、特定情報を付与するステップを含み、第3のステップは、生成した決定性オートマトンに対して、非決定性オートマトンに付与されている特定情報を更新して付与するステップを含み、第4のステップは、処理対象である文書に基づいて決定性オートマトンをたどり、たどった部分に対して付与されている特定情報に基づいて、文書が適合する構造型定義を判別するステップを含む。
【0016】
また、本発明は、コンピュータを用いて上述した文書処理システムを実現し、または、文書処理方法における各ステップに対応する処理をコンピュータに実行させるプログラムとして実現することができる。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供される。
【0017】
【発明の実施の形態】
以下、添付図面に示す第1、第2の実施の形態に基づいて、この発明を詳細に説明する。なお、以下の実施の形態の説明では、XML文書の構造型定義(スキーマ)がDTDである場合について説明するが、他の構造型定義に対しても同様の手法を適用することが可能である。
【0018】
[第1の実施の形態]
第1の実施の形態では、取り扱われるXML文書が該当し得るDTDの集合を予め走査しておき、各DTDが他のDTDから弁別される弁別規則を生成する。そして、この弁別規則を、XML文書が適合するDTDを判別する判別規則として用いることにより、XML文書が適合するDTDを効率よく同定する。
【0019】
図1は、第1の実施の形態によるXML文書判定システムを実現するのに好適なコンピュータ装置のハードウェア構成の例を模式的に示した図である。
図1に示すコンピュータ装置は、演算手段であるCPU(Central Processing Unit:中央処理装置)101と、M/B(マザーボード)チップセット102及びCPUバスを介してCPU101に接続されたメインメモリ103と、同じくM/Bチップセット102及びAGP(Accelerated Graphics Port)を介してCPU101に接続されたビデオカード104と、PCI(Peripheral Component Interconnect)バスを介してM/Bチップセット102に接続されたハードディスク105及びネットワークインターフェイス106と、さらにこのPCIバスからブリッジ回路107及びISA(Industry Standard Architecture)バスなどの低速なバスを介してM/Bチップセット102に接続されたフロッピーディスクドライブ108及びキーボード/マウス109とを備える。また、図1には記載していないが、このコンピュータ装置は、後述するようにCPU101の動作性能(動作クロック)を制御する手段として、クロック発信器及びそのコントローラを備える。
なお、図1は本実施の形態を実現するコンピュータ装置のハードウェア構成を例示するに過ぎず、本実施の形態を適用可能であれば、他の種々の構成を取ることができる。例えば、ビデオカード104を設ける代わりに、ビデオメモリのみを搭載し、CPU101にてイメージデータを処理する構成としても良いし、音声による入出力を行うためのサウンド機構を設けたり、ATA(AT Attachment)などのインターフェイスを介してCD−ROM(Compact Disc Read Only Memory)やDVD−ROM(Digital Versatile Disc Read Only Memory)のドライブを設けたりしても良い。
【0020】
図2は、第1の実施の形態によるXML文書判定システムの構成を説明するブロック図である。
図2を参照すると、本実施の形態のXML文書判定システムは、複数のDTDの集合を走査してXML文書がどのDTDに適合するかを判別するための判別規則を生成する判別規則生成部10と、判別規則生成部10にて生成された判別規則の集合からルールベース(判別規則ベース)を生成し格納する判別規則ベース格納部20と、取り扱われるXML文書が適合するべきDTDの集合を格納したDTD格納部30と、処理対象のXML文書(入力文書)を解析するXMLパーザ40と、判別規則ベースの判別規則と照合しながらXMLパーザ40にて解析されたXML文書が適合するDTDを判定するDTD判別部50とを備える。なお、特に図示しないが、XML文書判定システムは、ネットワークや所定の入力デバイスを介して、XMLパーザ40にて解析される処理対象のXML文書(入力文書を入力してメインメモリ103等に格納する入力部を備える。
【0021】
図2に示したシステム構成において、判別規則生成部10、XMLパーザ40及びDTD判別部50は、図1に示したプログラム制御されたCPU101にて実現されるソフトウェアブロックである。CPU101を制御してこれらの機能を実現するプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供され、メインメモリ103に格納される。
また、判別規則ベース格納部20及びDTD格納部30は、メインメモリ103にて実現される。なお、メインメモリ103に保持されるデータは、必要に応じてハードディスク105などの記憶装置に退避させることができる。
【0022】
本実施の形態による処理は、判別規則生成部10による判別規則の生成処理と、XMLパーザ40及びDTD判別部50による当該判別規則を用いたXML文書の判定処理とに大きく分かれる。したがって、図2に示したシステムは、判別規則生成部10、XMLパーザ40及びDTD判別部50を単一のコンピュータ装置において実現しても良いし、判別規則生成部10とXMLパーザ40及びDTD判別部50とを別個のコンピュータ装置にて実現しても良い。後者の場合、判別規則生成部10として動作するコンピュータ装置からXMLパーザ40及びDTD判別部50として動作するコンピュータ装置へ、ネットワークや磁気ディスクなどの記録媒体を介して、判別規則ベースが受け渡されることとなる。また、判別規則ベース格納部20及びDTD格納部30は、それぞれのコンピュータ装置に設けられることとなる。
【0023】
次に、図2に示したXML文書判定システムの機能について詳細に説明する。本実施の形態によるXML文書判定システムへの入力はDTD情報を持たないXML文書であり、出力は適合するDTDである。XML文書が複数のDTDに適合する場合、該当する複数のDTDを返す。所定のXML文書が所定のDTDであるDn.dtdに適合するとは、当該XML文書においてDn.dtdが指定されているとして検証した結果、妥当(valid)であることとを意味する。
本実施の形態によるXML文書のDTDの判別手法は、所定のDTDの中で必須要素として定義されている要素(列)が他のDTDに出現しない場合(すなわち固有の要素(列)を有している場合)、所定のXML文書中に当該要素が出現していることを確認した段階で、当該XML文書が適合するDTDを一意に決定できるという考え方に基づいている。
すなわち、DTDの集合から、あるDTDにしか存在しない(必須の)要素あるいは要素列を見つけ、判別のための規則集合を構築することによって、XML文書が適合すべきDTDを高速に判別することができる。
【0024】
以上の考え方に基づいて、まず、判別規則生成部10が判別規則を生成する。
図3は、判別規則生成部10の動作を説明するフローチャートである。
判別規則生成部10は、取り扱われるXML文書が適合し得るDTDの集合をDTD格納部30から読み出して処理対象とし、図3に示すように、まず要素数を示すパラメータnを初期化し(ステップ301、302)、当該DTDの集合から、要素n(初期的にはn=1)個からなる要素列(規則と称す)を取り出し、規則とDTD名とを対応付けるインデックスを作る(ステップ303、304)。
次に、判別規則生成部10は、得られた要素n個からなる規則の中から、ただ1つのDTDだけに出現する排他的な規則、すなわち作成されたインデックスにおいて単一のDTDのみが対応付けられている規則を取り出し、対応するDTDの判別規則として設定する(ステップ305)。
【0025】
次に、全てのDTDに対して規則が設定されたかどうかをチェックし、規則が未設定のDTDがあるならば、ステップ302へ戻る(ステップ306)。そして、パラメータnの値を1加算してステップ303以降の処理を繰り返す。
一方、全てのDTDに対して規則が設定されたならば、次に判別規則生成部10は、設定された規則の絞り込みを行う(ステップ307)。
【0026】
規則の絞り込みでは、設定された規則の中から冗長性を除き、最適な判別規則を選択する。ただし、選択される判別規則は、1つのDTDについて1つとは限らない。本実施の形態では、次の3つの方針に従って規則の絞り込みを行う。
(1)XML文書は、document orderにしたがって、すなわち文書の先頭から末尾に向かって走査され解析される。そこで、所定のDTDについて設定された規則のうちで、当該DTDにおいて先に出現する要素に関する規則を選択し、後に出現する要素に関する規則を除去する。
(2)XML文書の要素型宣言では可変個の要素の出現を許す(*、+、?など)。この規則に合致するかどうかをテストする場合の処理コストが大きいため、要素が可変個ではない規則がすでにある場合には、このような規則を除去する。(3)所定の規則が別の規則の一部になっている場合、一方の規則に合致するならば他方の規則にも必ず合致するので、規則が合致するかどうかをテストする場合の処理コストをより小さくするため、規則を構成する要素が短いものを選択し、そうでないものを除去する。
【0027】
以上のようにして判別規則を生成した後、判別規則生成部10は、生成した判別規則を判別規則ベースにまとめ、判別規則ベース格納部20に格納する。
本実施の形態で用いられる判別規則ベースは、if then規則からなるルール集合とフラグ集合からなる。すなわち、所定の要素の出現を条件として対応するDTDを特定するルールベースである。ルールは、if(テスト)then(アクション)の形式をしている。テスト部分には、「ある要素が出現した」というテストと「flag == true/false」という形式の表現からなる論理式が記述される。そしてさらに、判別規則ベースにおいては、次のようにして判別規則が整理される。
(1)要素が1個しかない判別規則(例えば要素A)では
「if(要素Aが出現)then Di」
という形式の規則を判別規則ベースに登録する。ここで、Diは、当該判別規則に合致するDTDを示す符号である。
(2)要素が複数ある判別規則では、最後の要素以外は、要素の出現に対し、フラグをセットするような規則を作る。例えば要素列B,Cの場合、
「if(要素Bが出現)then flag1 = true」
「if(要素Cが出現 && flag1 = true)then Dj」
という2つの規則を作る。ここで、Djは、当該判別規則に合致するDTDを示す符号である。
(3)*、?、+などの可変個の要素を許す記号付きの規則は、当該記号を除去した形で登録する。
【0028】
次に、上記の判別規則ベースを用いた、XMLパーザ40及びDTD判別部50によるXML文書の判定処理について説明する。
図4は、本実施の形態におけるXML文書の判定処理の流れを説明する図である。
XML文書の判定処理は、XMLパーザ40によるXML文書の解析処理と、DTD判別部50による判別処理とからなる。初期的に、ネットワーク等を介して入力された処理対象であるXML文書(入力文書)は、図1に示したメインメモリ103に格納され、XMLパーザ40及びDTD判別部50として動作するCPU101によるアクセスが可能となっているものとする。
【0029】
図4に示すように、まず、XMLパーザ40は、処理対象であるXML文書をメインメモリ103から読み出し、解析する。XMLパーザ40は、XML文書を先頭から走査し、要素や属性の出現をイベントとして抽出する。抽出されたイベント列は、DTD判別部50に渡される。なお、XMLパーザ40としては、例えばSAXパーザを用いることができる。
次に、DTD判別部50は、判別規則ベース格納部20に格納されている判別規則ベースを用いて、XMLパーザ40から受け取ったイベント列を調べる。具体的には、まず判別規則ベースの全てのフラグをfalseにセットする。次に、処理中のイベント列に関して、要素が出現したならば、判別規則ベース中の各規則のテスト部分をチェックし、テストに合格すればアクションを実行する。そして、アクション部にDTD名が書かれていたならば、当該DTD名を出力して処理を終了する。
【0030】
以上の処理の後、DTD判別部50から出力されたDTD名を持つDTDに基づいて、validatingXMLプロセッサが処理対象であるXML文書を検証する。この検証により、当該XML文書が当該DTDに適合するかどうかが最終的に確認される。
validatingXMLプロセッサによるXML文書の検証の処理は、従来の検証と同様であるが、上述したXMLパーザ40及びDTD判別部50による判定処理によって検証すべきDTDが絞り込まれているため、全体の処理コストが大幅に減少する。
なお、validatingXMLプロセッサは、当該XML文書を使用するアプリケーションに設けても良いし、本実施の形態によるXML文書判定システムの構成要素として設けることもできる。本実施の形態に設ける場合、システムの出力は、適合するDTDではなく、処理対象であるXML文書が判別されたDTDに適合するかどうかの検証結果となる。
【0031】
次に、具体的なDTD及びXML文書の例を用いて、本実施の形態による処理を説明する。
図5に示すD1、D2、D3、D4の4つのDTDが、やりとりされるXML文書が適合し得るDTDの集合として用意されているものとする。
ここで、図6に示すXML文書ex1.xmlが適合するDTDを判定する場合を考える。この場合、XML文書ex1.xmlには要素Eが現れており、要素EはD2にしか出現しないことから、要素Eの出現が確認できた段階でXML文書ex1.xmlはD2に適合しているはずである(少なくとも他のDTDには適合しない)ということがわかる。
次に、図7に示すXML文書ex2.xmlが適合するDTDを判定する場合を考える。この場合、このXML文書に出現する要素の中で、ある1つのDTDにしか存在しない要素は存在しない。しかし、2要素からなる列B,Dの出現は、D3にしか出現しない組み合わせである。したがって、この要素列B,Dの出現が確認できた段階でXML文書ex2.xmlはD3に適合しているはずである(少なくとも他のDTDには適合しない)ということがわかる。
【0032】
以上の判定を実現すべく、まず、判別規則生成部10が図5に示した4つのDTDの集合から判別規則を抽出し、判別規則ベースを生成する。
図3に示したフローチャートに従い、まず図5に示したD1、D2、D3、D4の各DTDに含まれる要素型宣言に基づいて、要素1個からなる要素列(規則)を取り出し、図8に示すインデックスが生成される。そして、ただ1つのDTDだけに出現する規則(インデックスの右側(DTD名)に単一のDTDしか出現していないもの)を取り出し、対応するDTDの判別規則として設定する。図9は、図8のインデックスから得られる判別規則を示す。
【0033】
図9の判別規則において、規則が設定されていないDTD(D1、D3)が存在するので、図3のステップ302に戻り、要素2個からなる規則について同様の処理を行う。これにより、図10に示すインデックスが生成される。そして、ただ1つのDTDだけに出現する規則を取り出し、対応するDTDの判別規則として設定する。図11は、図10のインデックスから得られる判別規則を図9に反映させた図である。図11の状態で、全てのDTDに対して規則が設定されたので、次に、規則の絞り込みを行う。
【0034】
図11に示した判別規則によれば、D2、D3、D4の判別規則に対して絞り込みが行われるが、ここでは例としてD4の判別規則の絞り込みについて具体的に説明する。
図11に示されたD4に対する判別規則は
Rule−D4={(F),(H),(F,H),(H,G?)}
である。このうち、図5に示したD4の定義によれば、要素Fより要素Hの方が必ず先に走査される。そして、どちらも必須要素であるため、所定のXML文書がD4に適合するならば,必ず要素Fが存在することとなる。したがって、方針(1)により、要素Hに関する規則を除去である。
次に、D4には要素個数が固定の規則(F)が存在するので、方針(2)に基づき、可変個の要素(H,G?)の出現を含む規則を除去する。
さらに、残る2つの規則(F),(F,H)は、(F)が(F,H)の一部になっているため、方針(3)に基づき、要素が長い方の規則(F,H)を除去する。
同様の処理をD2、D3の判別規則に対しても行い、図11に示された判別規則は、図12のように絞り込まれる。
この後、判別規則生成部10は、図12の判別規則から判別規則ベースを生成し、判別規則ベース格納部20に格納する。図13は、図12の判別規則から生成された、D1〜D4の4つのDTDに関する判別規則ベースを示す図である。
【0035】
次に、生成された判別規則ベースを用いて、DTD判別部50がXML文書のDTDを判別する。
初期的に、XMLパーザ40が処理対象であるXML文書を解析し、得られたイベント列をDTD判別部50に渡す。DTD判別部50は、XMLパーザ40から受け取ったXML文書のイベント列と、判別規則ベース格納部20に格納されている判別規則ベースとを照合して、当該XML文書が適合するDTDを判別する。ここでは例として、図7に示したXML文書が処理対象として入力されたとする。XMLパーザ40は、このXML文書を解析し、
<A>の出現
<B>の出現
<D>の出現
と言うイベントを抽出し、DTD判別部50に渡す(ただし、要素の出現以外のイベントは省略している)。DTD判別部50は、各イベントに対し、適用できる規則があるかをテストする。この場合、<B>の出現によって
If(要素Bが出現)then flag2 = true
という規則が発火し、アクションであるflag=trueを実行する。さらに、<D>要素が出現したというイベントに対して、
If(要素Dが出現)
if(flag1 == true)then D1
if(flag2 == true)then D3
が発火し、D3が最終的に選択される。以上の手順では、一般的なプロダクションシステムと異なり、要素名に対応する規則を使っているので規則の競合は起こらない。
【0036】
[第2の実施の形態]
第2の実施の形態では、取り扱われるXML文書が該当し得るDTDの各要素型宣言に相当するオートマトンを生成する。そして、このオートマトンを用いてXML文書が適合するDTDを判別することにより、XML文書が適合するDTDを効率よく同定する。
【0037】
本実施の形態は、第1の実施の形態と同様のハードウェア構成を持つコンピュータ装置で実現される。
図14は、第2の実施の形態によるXML文書判定システムの構成を説明するブロック図である。
図14を参照すると、本実施の形態のXML文書判定システムは、取り扱われるXML文書が適合するべきDTDの集合を格納したDTD格納部1410と、当該DTDの集合に基づき同じ要素名に対するm個の要素型宣言(いわゆる正則表現とみなすことができる)から対応する非決定性オートマトン(Non deterministic Finite state Automaton:以下、NFA)を生成するNFA生成部1420と、生成されたNFAを決定性オートマトン(Deterministic Finite state Automaton:以下、DFA)に変換するDFA生成部1430と、処理対象のXML文書(入力文書)を解析するXMLパーザ1440と、DFA生成部1430にて生成されたDFAを用いてXMLパーザ1440にて解析されたXML文書が適合するDTDの判別を行うXML検証部1450とを備える。なお、特に図示しないが、XML文書判定システムは、ネットワークや所定の入力デバイスを介して、XMLパーザ1440にて解析される処理対象のXML文書(入力文書を入力してメインメモリ103等に格納する入力部を備える。
【0038】
図14に示したシステム構成において、NFA生成部1420、DFA生成部1430、XMLパーザ1440及びXML検証部1450は、図1のプログラム制御されたCPU101にて実現されるソフトウェアブロックである。CPU101を制御してこれらの機能を実現するプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供され、メインメモリ103に格納される。また、DTD格納部1410は、メインメモリ103にて実現される。なお、メインメモリ103に保持されるデータは、必要に応じてハードディスク105などの記憶装置に退避させることができる。
【0039】
本実施の形態においても、NFA生成部1420によるNFAの生成処理と、DFA生成部1430によるDFAの生成処理と、XMLパーザ1440及びXML検証部1450によるDTDの判別(検証)処理とは独立した処理であるので、各構成要素を単一のコンピュータ装置で実現しても、複数のコンピュータ装置で実現しても良い。例えば、NFA生成部1420及びDFA生成部1430を1つのコンピュータ装置で実現し、XMLパーザ1440及びXML検証部1450を他のコンピュータ装置で実現した場合、NFA生成部1420及びDFA生成部1430として動作するコンピュータ装置からXMLパーザ1440及びXML検証部1450として動作するコンピュータ装置へ、ネットワークや磁気ディスクなどの記録媒体を介して、DFAが受け渡されることとなる。また、DTD格納部1410は、それぞれのコンピュータ装置に設けられることとなる。
【0040】
次に、図14に示したXML文書判定システムの機能について詳細に説明する。
本実施の形態によるXML文書判定システムへの入力はDTD情報を持たないXML文書であり、出力は当該XML文書が本実施の形態にて判別されたDTDに適合するかどうかの検証結果である。
初期的に、DTD格納部1410に、図15に示すD5、D6、D7という3つのDTDが格納されているものとする。各DTDは、図15に示すように、要素Aに対する要素型宣言を定義している。
【0041】
まず、NFA生成部1420は、図15に示した3つのDTDにそれぞれ対応するNFAを生成する。NFAの生成法は公知の手法を用いることができるため、ここでは説明を省略する。図16は、図15のD5、D6、D7に対応するNFAを示す図である。
次に、NFA生成部1420は、生成された各NFAにおける各遷移規則δ(q,a),a≠εに対し、長さm(mはDTDの数)、すなわちm個のビット(要素)からなるビットベクトルを付与する。また、i(1≦i≦m)番目のDTDに関して、i番目のビットに値1をセット(オン)し、残りのビットに値0をセット(オフ)する。例えば、D5(図15の1番目のDTD)において、遷移規則δ(q1,B)=q2は、状態1で記号Bを読んだときに状態2に遷移する規則であるが、この規則には(1,0,0)というビットベクトルが付与される。
さらに、NFA生成部1420は、生成したm個のNFAを合成して和オートマトン(A1|A2|...|An、AiはNFA)を生成する。各DTDに対する正則表現をR1,R2,・・・,Rnとすると、生成される和オートマトンはR1|R2|・・・|Rnと等価である。上の3つのDTDに対しては、((B,C,D)|(B,C,E)|(G*,B,D))なるNFAを生成することになる。すなわち、和オートマトンは、DTD格納部1410に格納されているDTDの集合に対応したNFAと言える。和オートマトンは、各NFAの先頭にε遷移で遷移する新たな初期状態と、各NFAの終了状態からε遷移で遷移する新たな終了状態とを生成することによって生成される。図17は、図16に示した3つのNFAの和オートマトンを示す図である。図17を参照すると、図16の各NFAにおいて付与されたビットベクトルが、和オートマトンの対応位置に付与されている。
以上のようにして生成された和オートマトン(NFA)は、メインメモリ103の所定の領域に格納される。
【0042】
次に、DFA生成部1430は、メインメモリ103からNFA生成部1420にて生成された和オートマトン(NFA)を読み出し、DFAに変換する。NFAからDFAへの変換は、公知の手法、例えば部分構成法を用いることができる。ただし、NFAからDFAへの変換の際、新しく生成される遷移規則に対して、必要なビットベクトルを計算して付与する。
図18は、部分構成法を用いてDFAを生成する場合における本実施の形態により拡張されたアルゴリズムを示す図である。部分構成法は、所定の状態から到達できる状態集合を1つの状態とみなすことにより、DFAを構成する方法である。図中の下線を付した部分が、本実施の形態による拡張部分、すなわち、生成されるDFAの状態にビットベクトルを付与する動作である。なお、図18において、Tは状態集合(例{1,2,3})である。DTran[T,a]は、状態(集合)Tから入力記号aによって遷移する遷移規則である。Dstatesは、状態集合を入れておくスタックである。ε-closure(q)は、NFAの状態からε遷移だけで到達できるNFAの状態集合である。ε-closure(T)は、Tに含まれるNFAの所定の状態sからε遷移だけで到達できるNFAの状態集合である。move(T,a)は、Tに含まれるNFAの所定の状態sから入力記号aによって遷移するNFAの状態集合である。
【0043】
図17のNFA及び図18を参照してアルゴリズムの概略を説明する。
図17のNFAは、次のように定義される。
状態集合S={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}(qiをiと略記)
記号集合Σ={B,C,D,E,F,G}
遷移規則集合{u|u=δ(q,a),}
初期状態 q0
終了状態{q9}
図18のアルゴリズムを参照すると、
まず開始状態q0からε遷移だけで到達できる状態は、0,1,4,10,11,13である。すなわち、
ε-closure(q0)={0,1,4,10,11,13}
であるから、{0,1,4,10,11,13}をスタックDstatusに入れる。これを新しい状態Tとする。
【0044】
次に、Dstatus中の印が付いていない状態T({0,1,4,10,11,13}しかないので、これを選ぶ)に印を付けて、Σの要素である記号ごとに処理を行う。
例えば、記号Bを考えると、move(T,B)={2,5,14}である。記号Bが入力されると、1から2、4から5、14から15への遷移があるためである。さらに、
ε-closure(move(T,B))=ε-closure({2,5,14})={2,5,14}
であるので(各状態からのε遷移がないので)、
U:={2,5,14}
となり、
DTran[{1,4,10,11,13},B]={2,5,14}
となる。そして、{1,4,10,11,13}をQ0という状態、{2,5,14}をQ1という状態であるとすると、
DTran[Q0,B]=Q1
という新しい遷移規則が生成される。
【0045】
本実施の形態では、この新しい遷移規則が生成される際に、記号Bが入力されて遷移するUの各状態に対し、新しい遷移規則のビットベクトルを生成して付与する。この新しい遷移規則のビットベクトルは、当該Uの各状態における遷移規則に付与されているビットベクトルの論理和を取ったものである。すなわち、U={2,5,14}であるので、
δ(1,B)=2
δ(4,B)=5
δ(13,B)=14
となる3つの遷移規則に付与されたビットベクトルの論理和(OR)を取る。ビットベクトルは、それぞれ、(1,0,0)、(0,1,0)、(0,0,1)なので、新しい遷移規則DTran[Q0,B]=Q1に対するビットベクトルは、(1,1,1)となる。
以上により、記号Bに対する処理において、ビットベクトル付きのDFAに関する遷移規則が得られる。すなわち、
DTran[Q0,B]=Q1,(1,1,1)
【0046】
次に、記号Cを処理するが、move(T,B)が定義できないため、スキップする。記号D、記号Eについても同様である。記号Gに対しては、
move(T,G)={12}
であり、
ε-closure({12})={11,12,13}
である。これに対応するビットベクトルは(0,0,1)である。よって、{11,12,13}を新しい状態Q2とすると、
DTran[Q0,G]=Q2,(0,0,1)
となる。
以下、同様の処理を繰り返すことにより、ビットベクトル付きのDFAが得られる。図19は、図18のアルゴリズムに従って図17のNFAから生成されたDFAを示す図である。
【0047】
一方、XMLパーザ1440は、処理対象であるXML文書をメインメモリ103から読み出し、解析する。XMLパーザ1440は、XML文書を先頭から走査し、要素や属性の出現をイベントとして抽出する。抽出されたイベント列は、XML検証部1450に渡される。
次に、XML検証部1450は、上記のようにして得られたDFAを用いて、処理対象であるXML文書が適合するDTDを判別する。したがって、第2の実施の形態におけるDTD判定部1410に相当するが、本実施の形態では、DTDから生成されたDFAを用いて判別を行うため、DFAの終了状態まで処理が到達すれば、XML文書が当該DTDに適合することが保証される。すなわち、XML文書を当該DTDで検証する処理を兼ねることとなる。
【0048】
図20は、XML検証部1450によるDTDの判別処理を説明するフローチャートである。
図20を参照すると、XML検証部1450は、まず状態sを初期状態Q0とし(ステップ2001)、初期状態Q0から順に次の一連の処理を行う(ステップ2002)。
まず、所定の要素(ここでは要素Eとする)が入力されるときの遷移規則(δ(s,E)=s')が存在するならば、状態sから状態s’に遷移する(ステップ2003、2004)。そのような遷移規則が存在しないならば、どのDTDにも適合しないと判断して処理を終了する。
次に、遷移規則に付与されたビットベクトルのビットのうち1つのみが1であるならば、1が立っているビット位置に対応したDTDを適合し得るDTDとして選択する(ステップ2005、2006)。そして、状態s’を改めて状態sとし、ステップ2002に戻る(ステップ2007)。状態sが終了状態であれば、処理を終了する(ステップ2002)。なお、状態sが終了状態か否かの判断は、例えば各状態に終了状態か否かを識別するフラグを設定しておくことによって行う。
【0049】
例えば、入力XML文書が図7に示したXML文書である場合、要素A、B、Dの順で要素の出現が入力され、上記の手順に従って処理が繰り返される。図19のDFAに従えば、状態は0→1→7と遷移し、終了状態に至る。
ここで、DFAを用いたDTDの判別処理は、XML文書が適合すべきDTDが一意に決定したところで処理をやめることもできる。例えば、図19のDFAにおいて、状態0から状態5へ遷移したならば、当該XML文書が適合すべきDTDは図15のD7に限定されるので、ここで処理をやめても良い。この場合、本実施の形態のXML文書判定システムは、第1の実施の形態と同様に判定されたDTDの種類を出力し、当該XML文書を処理するアプリケーションに渡す。
なお、この場合、状態5のあとで要素Gまたは要素B以外の要素が入力された場合や、要素Bが入力されて状態6に遷移した後で要素D以外の要素が入力された場合は、D7が適合しないこととなるので、当該XML文書を処理するアプリケーションなどにより、当該XML文書がD7に適合することを検証することが必要となる。XML検証部1450においてDFAの終了状態までDTDの判定を行う場合には、適合するDTDが判別されたことによって、処理対象のXML文書が判別されたDTDに対して妥当(valid)であることも保証されるので、アプリケーションなどにおいて、検証を行う必要はない。
【0050】
[第2の実施の形態の変形]
上述した第2の実施の形態は、NFA及びDFAにおいて状態遷移に対してビットベクトルを付与しているため、実装が複雑となり、コンピュータ装置による実際の処理が低速になりやすい。そこで、ビットベクトルを状態遷移ではなく状態に付与することを考える。
このようにすれば、NFA及びDFAでは状態遷移の数よりも状態の数の方が必ず少ないので、処理に必要とするハードウェア資源が少なくてすむ。また、状態にビットベクトルを付与する方が、コンピュータ装置におけるオートマトンの一般的な実現方法との親和性が良いため、実装が容易となる。
【0051】
この変形例において、本実施の形態のNFA生成部1420は、DTD格納部1410に格納されているDTDのそれぞれに対応するNFAを生成する。そして、各状態に対して、長さm(mはDTDの数)のビットベクトルを付与する。また、各状態に終了状態か否かを識別するための終了可能フラグを付与する。図21は、図15に示した3つのDTD(D5、D6、D7)に関して、このようにして生成したNFAを示す図である。図示の例では、終了可能フラグが[1]である状態が終了状態である。
次に、NFA生成部1420は、生成したNFAの和オートマトン(NFA)を生成する。ただし、この和オートマトンは、DTDごとに生成した各NFAの先頭にε遷移で遷移する新たな初期状態を持つ点では図17に示した和オートマトンと同様であるが、終了状態をε遷移を用いて1つにまとめることはしない。図22は、図21に示した3つのNFAの和オートマトンを示す図である。図22に示すように、図21の各NFAに対応する3つの終了状態が存在する。
【0052】
次に、DFA生成部1430は、NFA生成部1420にて生成された和オートマトンをDFAに変換する。
まず、2つの操作ε-closureWB(q)、ε-closureWB(T) を定義する。
ε-closureWB(q)(qはNFA中の所定の状態)は、
・状態集合ε-closure(q)
・ε-closure(q)の各状態に付与してあるビットベクトルの論理和
・ε-closure(q)の各状態に付与してある終了可能フラグの論理和
という3つの要素から構成される情報とする。
ε-closureWB(T)(Tは状態集合)は、T中の各状態qに対し、ε-closureWB(q)を求め、その結果である各要素の和を求めた結果とする。
図23は、部分構成法を用いてDFAを生成する場合における上記の操作を反映させて拡張したアルゴリズムを示す図である。
図24は、以上の操作を反映させて、図22の和オートマトンから生成されたDFAを示す図である。
【0053】
次に、XML検証部1450は、上記のようにして得られたDFAを用いて、処理対象であるXML文書が適合するDTDを判別する。
図25は、XML検証部1450によるDTDの判別処理を説明するフローチャートである。
図25を参照すると、XML検証部1450は、まず状態sを初期状態Q0とし(ステップ2501)、初期状態Q0から順に次の一連の処理を行う(ステップ2502)。
まず、着目中の状態sに付与されているビットベクトルのビットのうち1つのみが1であるならば、1が立っているビット位置に対応したDTDを適合し得るDTDとして選択する(ステップ2503、2504)。
次に、所定の要素(ここでは要素Eとする)が入力されるときの遷移規則(δ(s,E)=s')が存在するならば、状態sから状態s’に遷移する(ステップ2505、2506)。そのような遷移規則が存在しないならば、どのDTDにも適合しないと判断して処理を終了する。
状態sから状態s’に遷移したならば、当該状態s’を改めて状態sとし、ステップ2502に戻る(ステップ2507)。状態sが終了状態であれば、当該状態sに付与されているビットベクトルにおいて1が立っているビット位置に対応したDTDを適合し得るDTDとして選択し、処理を終了する(ステップ2502、2508)。
【0054】
DTDの数をmとした場合、第1の実施の形態におけるインデックスを作るのに要する時間は、O(m*k)程度である。ここで、O(m*k)とは、m*kの定数倍以内の時間で計算できることを意味する。また、kは、要素1つからなる規則の抽出、要素2つからなる規則の抽出というように図3に示したフローチャートの処理を繰り返す回数である。各DTDに固有の要素が多く存在すれば、それだけインデックスを生成する手間が少なくなり処理に要する時間も短くなる。インデックスから判別規則を作るのに要する時間も、O(n)程度である。
一方、第2の実施の形態は、NFA及びDFAを作成するために、より多くの手間を要する。一般に、NFAを生成するには、正則表現rの長さに比例する時間O(|r|)を要する。したがって、例えば、各DTDの正規表現の平均長さがlとすると、NFAを生成するのに要する時間は、O(n*l)程度である。一般的には、lの値はkの値よりも大きいと考えられるので、XML文書が適合すべきDTDの判別を行う前の準備(判別規則またはDFAを生成する処理)の段階では、第1の実施の形態の方が効率がよい。
また、実際にXML文書が適合すべきDTDを判別する段階では、第2の実施の形態では状態遷移表(DFA)をメモリに保存して用いるため、使用するメモリ空間のコストが第1の実施の形態に比べて大きくなる。
【0055】
しかしながら、第1の実施の形態は、処理対象であるXML文書が所定のDTDに適合する可能性があるかどうかを判別するに過ぎず、当該XML文書が判別されたDTDに本当に適合するかどうかは、validatingXMLプロセッサなどを用いて実際に検証してみなければならない。
これに対し、第2の実施の形態は、DFAの終了状態まで達した時点で、処理対象であるXML文書が判別されたDTDに適合することが保証される。
【0056】
したがって、実際のコンピュータ装置への実装には、これらの利害を鑑みて所望の手法を選択すればよい。
なお、いずれの実施の形態においても、アプリケーションによるXML文書の処理を実行する前段階で動作するものである。したがって、既存のシステム構成やXMLプロセッサの変更を要することなく、各実施の形態における構成要素を追加することで実現される。
【0057】
なお、上述した各実施の形態では、要素の出現およびその並びを判別の基準としているが、属性定義についても同様の手法が適用可能である。ただし、属性では並び順に意味がないため、属性の出現、および固定された属性値が判別規則となり得る。
また、上記の実施の形態では、所定のXML文書が所定のDTDに適合するかどうかを調べる上で、適合し得るDTDを判別する場合について説明したが、DTD以外の他の構造型定義(例えばXML Schema)や、XML以外の他の構造化言語(例えばHTML)において、所定の文書が所定の構造型定義に適合するかどうかを判別する場合にも利用することができるのは言うまでもない。
【0058】
【発明の効果】
以上説明したように、本発明によれば、ある構造型定義の集合が与えられているという前提で、受け取ったXML文書がその中のどの構造型定義に適合するかを求める必要がある場合に、かかる処理を高速に行うことが可能となる。
また、本発明によれば、既存のシステム構成やXMLプロセッサの実装に影響を与えることなく、かかる処理を行うシステムを実現することが可能となる。
【図面の簡単な説明】
【図1】 第1の実施の形態によるXML文書判定システムを実現するのに好適なコンピュータ装置のハードウェア構成の例を模式的に示す図である。
【図2】 第1の実施の形態によるXML文書判定システムの構成を説明する図である。
【図3】 第1の実施の形態における判別規則生成部の動作を説明するフローチャートである。
【図4】 第1の実施の形態におけるXML文書の判定処理の流れを説明する図である。
【図5】 DTDの例を示す図である。
【図6】 処理対象であるXML文書の例を示す図である。
【図7】 処理対象であるXML文書の他の例を示す図である。
【図8】 図5のDTDに関して要素1個からなる規則によるインデックスを示す図である。
【図9】 図8のインデックスから得られる判別規則を示す図である。
【図10】 図8のインデックスに対して要素2個からなる規則を加えたインデックスを示す図である。
【図11】 図10のインデックスから得られる判別規則を図9に反映させた図である。
【図12】 図11の判別規則に対して絞り込みを行った状態を示す図である。
【図13】 図12の判別規則から生成された、D1〜D4の4つのDTDに関する判別規則ベースを示す図である。
【図14】 第2の実施の形態によるXML文書判定システムの構成を説明するブロック図である。
【図15】 DTDの例を示す図である。
【図16】 図15のD5、D6、D7に対応するNFAを示す図である。
【図17】 図16に示した3つのNFAの和オートマトンを示す図である。
【図18】 部分構成法を用いてDFAを生成する場合における本実施の形態により拡張されたアルゴリズムを示す図である。
【図19】 図18のアルゴリズムに従って図17のNFAから生成されたDFAを示す図である。
【図20】 第2の実施の形態のXML検証部によるDTDの判別処理を説明するフローチャートである。
【図21】 図15のDTDに関して生成されたNFAを示す図である。
【図22】 図21に示したNFAの和オートマトンを示す図である。
【図23】 部分構成法を用いてDFAを生成する場合における本実施の形態により拡張されたアルゴリズムを示す図である。
【図24】 図23のアルゴリズムを反映させて図22の和オートマトンから生成されたDFAを示す図である。
【図25】 第2の実施の形態の変形例におけるXML検証部によるDTDの判別処理を説明するフローチャートである。
【符号の説明】
10…判別規則生成部、20…判別規則ベース格納部、30…DTD格納部、40…XMLパーザ、50…DTD判別部、101…CPU(中央処理装置)、102…M/B(マザーボード)チップセット、103…メインメモリ、105…ハードディスク、1410…DTD格納部、1420…NFA生成部、1430…DFA生成部、1450…XML検証部

Claims (18)

  1. 構造化言語で記述された文書が複数の構造型定義のうちのいずれに適合するかを判別するための判別規則を、各構造型定義の固有の要素に基づいて生成する判別規則生成部と、
    前記判別規則生成部にて生成された判別規則に基づいて、処理対象である文書がいずれの前記構造型定義に適合するかを判別する判別部と
    を備えることを特徴とする文書処理システム。
  2. 前記判別規則生成部は、前記判別規則を用いて、所定の要素の出現を条件として対応する構造型定義を特定するルールベースを生成し、
    前記判別部は、前記処理対象である文書から得られたイベント列を、前記判別規則生成部にて生成されたルールベースに照合して当該文書が適合する構造型定義を特定することを特徴とする請求項1に記載の文書処理システム。
  3. 処理対象であるXML文書を入力する入力部と、
    前記入力部にて入力された前記XML文書を解析するXMLパーザと、
    前記XMLパーザによる解析結果に基づいて、前記XML文書が適合すべきDTD(Document Type Definition)の集合のうち、いずれかのDTDに固有の要素が当該XML文書に含まれているかどうかに基づいて、当該XML文書が適合するDTDを判別するDTD判別部と
    を備えることを特徴とする文書処理システム。
  4. 構造化言語で記述された文書が適合すべき構造型定義の集合に対応する非決定性オートマトンを生成する非決定性オートマトン生成部と、
    前記非決定性オートマトン生成部にて生成された前記非決定性オートマトンを決定性オートマトンに変換する決定性オートマトン生成部と、
    前記決定性オートマトン生成部にて生成された前記決定性オートマトンに基づいて、処理対象である文書が前記構造型定義の集合のうちのいずれに適合するかを判別する判別部と
    を備えることを特徴とする文書処理システム。
  5. 前記非決定性オートマトン生成部は、前記構造型定義の集合に含まれる各構造型定義に対応する非決定性オートマトンを合成して前記構造型定義の集合に対応する非決定性オートマトンを生成し、かつ当該構造型定義の集合に対応する非決定性オートマトンにおける各構造型定義に対応する部分に対応する構造型定義を特定する特定情報を付与し、
    前記決定性オートマトン生成部は、生成した前記決定性オートマトンに対して、前記非決定性オートマトンに付与されている前記特定情報を更新して付与し、前記判別部は、処理対象である文書に基づいて前記決定性オートマトンをたどり、たどった部分に対して付与されている前記特定情報に基づいて、当該文書が適合する構造型定義を判別することを特徴とする請求項4に記載の文書処理システム。
  6. 前記特定情報は、前記非決定性オートマトン及び前記決定性オートマトンの状態遷移に対して付与されることを特徴とする請求項5に記載の文書処理システム。
  7. 前記特定情報は、前記非決定性オートマトン及び前記決定性オートマトンの状態に対して付与されることを特徴とする請求項5に記載の文書処理システム。
  8. コンピュータを用いて構造化言語で記述された文書を処理する文書処理方法において、
    前記文書が適合すべき構造型定義の集合をメモリから読み出し、処理対象である文書が当該構造型定義の集合に含まれる構造型定義のうちのいずれに適合するかを判別するための判別規則を、各構造型定義の固有の要素に基づいて生成し、当該メモリに格納するステップと、
    前記メモリから前記判別規則を読み出し、当該判別規則に基づいて、処理対象である文書がいずれの前記構造型定義に適合するかを判別するステップと
    を含むことを特徴とする文書処理方法。
  9. 前記判別規則を生成するステップは、
    前記各構造型定義を構成する要素列を抽出するステップと、
    抽出された前記要素列のうちで、ただ1つの構造型定義にのみ出現する要素列を判別規則として選択するステップと
    を含むことを特徴とする請求項8に記載の文書処理方法。
  10. コンピュータを用いてXML文書を処理する文書処理方法において、
    XML文書を入力して解析し、解析結果をメモリに格納するステップと、
    前記メモリから前記解析結果を読み出し、当該解析結果に基づいて、前記XML文書が適合すべきDTD(Document Type Definition)の集合のうち、いずれかのDTDに固有の要素が当該XML文書に含まれているかどうかを調べ、当該XML文書が適合するDTDを判別するステップと
    を含むことを特徴とする文書処理方法。
  11. コンピュータを用いて構造化言語で記述された文書を処理する文書処理方法において、
    前記文書が適合すべき構造型定義の集合をメモリから読み出し、当該構造型定義の集合に含まれる各構造型定義に対応する第1の非決定性オートマトンを生成し、当該メモリに格納する第1のステップと、
    前記メモリから第1の非決定性オートマトンを読み出して合成し、前記構造型定義の集合全体に対応する第2の非決定性オートマトンを生成し、当該メモリに格納する第2のステップと、
    前記メモリから第2の非決定性オートマトンを読み出して決定性オートマトンに変換し、当該メモリに格納する第3のステップと、
    前記メモリから前記決定性オートマトンを読み出し、当該決定性オートマトンに基づいて、処理対象である文書が前記構造型定義の集合のうちのいずれに適合するかを判別する第4のステップと
    を含むことを特徴とする文書処理方法。
  12. 前記第1のステップは、前記第1の非決定性オートマトンのそれぞれに対応する構造型定義を特定する特定情報を付与するステップを含み、
    前記第2のステップは、前記第2の非決定性オートマトンにおける各構造型定義に対応する部分に、前記特定情報を付与するステップを含み、
    前記第3のステップは、生成した前記決定性オートマトンに対して、前記非決定性オートマトンに付与されている前記特定情報を更新して付与するステップを含み、
    前記第4のステップは、処理対象である文書に基づいて前記決定性オートマトンをたどり、たどった部分に対して付与されている前記特定情報に基づいて、当該文書が適合する構造型定義を判別するステップを含むことを特徴とする請求項11に記載の文書処理方法。
  13. コンピュータを制御して、構造化言語で記述された文書を処理するプログラムであって、
    前記文書が適合すべき構造型定義の集合をメモリから読み出し、処理対象である文書が当該構造型定義の集合に含まれる構造型定義のうちのいずれに適合するかを判別するための判別規則を、各構造型定義の固有の要素に基づいて生成し、当該メモリに格納する判別規則生成手段と、
    前記メモリから前記判別規則を読み出し、当該判別規則に基づいて、処理対象である文書がいずれの前記構造型定義に適合するかを判別する判別手段として
    前記コンピュータを機能させることを特徴とするプログラム。
  14. コンピュータを制御して、構造化言語で記述された文書を処理するプログラムであって、
    XML文書を入力して解析し、解析結果をメモリに格納するXMLパーザと、前記メモリから前記解析結果を読み出し、当該解析結果に基づいて、前記XML文書が適合すべきDTD(Document Type Definition)の集合のうち、いずれかのDTDに固有の要素が当該XML文書に含まれているかどうかを調べ、当該XML文書が適合するDTDを判別するDTD判別手段として
    前記コンピュータを機能させることを特徴とするプログラム。
  15. コンピュータを制御して、構造化言語で記述された文書を処理するプログラムであって、
    前記文書が適合すべき構造型定義の集合をメモリから読み出し、当該構造型定義の集合に対応する非決定性オートマトンを生成し、当該メモリに格納する非決定性オートマトン生成手段と、
    前記メモリから前記非決定性オートマトンを読み出し、当該非決定性オートマトンを決定性オートマトンに変換し、当該メモリに格納する決定性オートマトン生成手段と、
    前記メモリから前記決定性オートマトンを読み出し、当該決定性オートマトンに基づいて、処理対象である文書が前記構造型定義の集合のうちのいずれに適合するかを判別する判別手段として
    前記コンピュータを機能させることを特徴とするプログラム。
  16. コンピュータを制御して構造化言語で記述された文書を処理するプログラムを、当該コンピュータが読み取り可能に記録した記録媒体であって、
    前記プログラムは、
    前記文書が適合すべき構造型定義の集合をメモリから読み出し、処理対象である文書が当該構造型定義の集合に含まれる構造型定義のうちのいずれに適合するかを判別するための判別規則を、各構造型定義の固有の要素に基づいて生成し、当該メモリに格納する判別規則生成手段と、
    前記メモリから前記判別規則を読み出し、当該判別規則に基づいて、処理対象である文書がいずれの前記構造型定義に適合するかを判別する判別手段として
    前記コンピュータを機能させることを特徴とする記録媒体。
  17. コンピュータを制御して構造化言語で記述された文書を処理するプログラムを、当該コンピュータが読み取り可能に記録した記録媒体であって、
    前記プログラムは、
    XML文書を入力して解析し、解析結果をメモリに格納するXMLパーザと、前記メモリから前記解析結果を読み出し、当該解析結果に基づいて、前記XML文書が適合すべきDTD(Document Type Definition)の集合のうち、いずれかのDTDに固有の要素が当該XML文書に含まれているかどうかを調べ、当該XML文書が適合するDTDを判別するDTD判別手段として
    前記コンピュータを機能させることを特徴とする記録媒体。
  18. コンピュータを制御して構造化言語で記述された文書を処理するプログラムを、当該コンピュータが読み取り可能に記録した記録媒体であって、
    前記プログラムは、
    前記文書が適合すべき構造型定義の集合をメモリから読み出し、当該構造型定義の集合に対応する非決定性オートマトンを生成し、当該メモリに格納する非決定性オートマトン生成手段と、
    前記メモリから前記非決定性オートマトンを読み出し、当該非決定性オートマトンを決定性オートマトンに変換し、当該メモリに格納する決定性オートマトン生成手段と、
    前記メモリから前記決定性オートマトンを読み出し、当該決定性オートマトンに基づいて、処理対象である文書が前記構造型定義の集合のうちのいずれに適合するかを判別する判別手段として
    前記コンピュータを機能させることを特徴とする記録媒体。
JP2002045087A 2002-02-21 2002-02-21 文書処理システム、文書処理方法及びプログラム Expired - Fee Related JP3888621B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2002045087A JP3888621B2 (ja) 2002-02-21 2002-02-21 文書処理システム、文書処理方法及びプログラム
US10/370,196 US7275208B2 (en) 2002-02-21 2003-02-20 XML document processing for ascertaining match of a structure type definition
US11/841,621 US20080082570A1 (en) 2002-02-21 2007-08-20 Document Processing System, Method And Program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002045087A JP3888621B2 (ja) 2002-02-21 2002-02-21 文書処理システム、文書処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2003256264A JP2003256264A (ja) 2003-09-10
JP3888621B2 true JP3888621B2 (ja) 2007-03-07

Family

ID=28659203

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002045087A Expired - Fee Related JP3888621B2 (ja) 2002-02-21 2002-02-21 文書処理システム、文書処理方法及びプログラム

Country Status (2)

Country Link
US (2) US7275208B2 (ja)
JP (1) JP3888621B2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3888621B2 (ja) * 2002-02-21 2007-03-07 インターナショナル・ビジネス・マシーンズ・コーポレーション 文書処理システム、文書処理方法及びプログラム
WO2004072797A2 (en) * 2003-02-07 2004-08-26 Safenet, Inc. System and method for determining the start of a match of a regular expression
US7627817B2 (en) * 2003-02-21 2009-12-01 Motionpoint Corporation Analyzing web site for translation
JP3982623B2 (ja) * 2003-03-25 2007-09-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、データベース検索システム及びプログラム
US7380205B2 (en) * 2003-10-28 2008-05-27 Sap Ag Maintenance of XML documents
US20050223316A1 (en) * 2004-04-01 2005-10-06 Sun Microsystems, Inc. Compiled document type definition verifier
US20060174114A1 (en) * 2005-01-24 2006-08-03 Rosbury Steven L Method for exchanging contract information between negotiating parties
US20070005593A1 (en) * 2005-06-30 2007-01-04 Microsoft Corporation Attribute-based data retrieval and association
US7596745B2 (en) * 2005-11-14 2009-09-29 Sun Microsystems, Inc. Programmable hardware finite state machine for facilitating tokenization of an XML document
US8181220B2 (en) * 2005-12-19 2012-05-15 Adobe Systems Incorporated Method and apparatus for digital rights management policies
JP4236055B2 (ja) * 2005-12-27 2009-03-11 インターナショナル・ビジネス・マシーンズ・コーポレーション 構造化文書処理装置、方法、プログラム
US8516362B2 (en) * 2010-09-14 2013-08-20 Usablenet Inc. Methods for extending a document transformation server to process multiple documents from multiple sites and devices thereof
WO2014010068A1 (ja) * 2012-07-12 2014-01-16 富士通株式会社 プログラム、文書変換装置および文書変換方法
US9691034B2 (en) * 2013-05-14 2017-06-27 The Trustees Of Princeton University Machine-learning accelerator (MLA) integrated circuit for extracting features from signals and performing inference computations
US10229104B2 (en) * 2013-08-01 2019-03-12 Sonicwall Inc. Efficient DFA generation for non-matching characters and character classes in regular expressions
US11475212B2 (en) * 2017-04-06 2022-10-18 Otsuka Pharmaceutical Development & Commercialization, Inc. Systems and methods for generating and modifying documents describing scientific research
US11782983B1 (en) * 2020-11-27 2023-10-10 Amazon Technologies, Inc. Expanded character encoding to enhance regular expression filter capabilities

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6963920B1 (en) * 1993-11-19 2005-11-08 Rose Blush Software Llc Intellectual asset protocol for defining data exchange rules and formats for universal intellectual asset documents, and systems, methods, and computer program products related to same
JPH0969101A (ja) * 1995-08-31 1997-03-11 Hitachi Ltd 構造化文書生成方法および装置
US6006242A (en) * 1996-04-05 1999-12-21 Bankers Systems, Inc. Apparatus and method for dynamically creating a document
US5933841A (en) * 1996-05-17 1999-08-03 Ameritech Corporation Structured document browser
US6108676A (en) * 1996-10-28 2000-08-22 Fuji Xerox Co., Ltd. Document processing apparatus, document type determining method, and hierarchical regular expression determining method
WO1998037655A1 (en) * 1996-12-20 1998-08-27 Financial Services Technology Consortium Method and system for processing electronic documents
JP3859313B2 (ja) * 1997-08-05 2006-12-20 富士通株式会社 タグ文書の圧縮装置および復元装置,圧縮方法および復元方法,圧縮/復元装置および圧縮/復元方法並びに圧縮,復元もしくは圧縮/復元プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2000029902A (ja) * 1998-07-15 2000-01-28 Nec Corp 構造化文書分類装置およびこの構造化文書分類装置をコンピュータで実現するプログラムを記録した記録媒体、並びに、構造化文書検索システムおよびこの構造化文書検索システムをコンピュータで実現するプログラムを記録した記録媒体
US6569207B1 (en) * 1998-10-05 2003-05-27 International Business Machines Corporation Converting schemas to component models
WO2000077609A1 (en) * 1999-06-14 2000-12-21 The Thomson Corporation System for converting data to a markup language
US7225181B2 (en) * 2000-02-04 2007-05-29 Fujitsu Limited Document searching apparatus, method thereof, and record medium thereof
US20010014899A1 (en) * 2000-02-04 2001-08-16 Yasuyuki Fujikawa Structural documentation system
JP4091726B2 (ja) * 2000-02-23 2008-05-28 インターナショナル・ビジネス・マシーンズ・コーポレーション 構造化文書の表示規則の生成方法、システムおよびプログラムが記録された媒体ならびに構造化文書およびその文書型定義の変更方法、システムおよびプログラムが記録された媒体
US6606620B1 (en) * 2000-07-24 2003-08-12 International Business Machines Corporation Method and system for classifying semi-structured documents
US20020143818A1 (en) * 2001-03-30 2002-10-03 Roberts Elizabeth A. System for generating a structured document
US7028223B1 (en) * 2001-08-13 2006-04-11 Parasoft Corporation System and method for testing of web services
US20030050931A1 (en) * 2001-08-28 2003-03-13 Gregory Harman System, method and computer program product for page rendering utilizing transcoding
US20030074636A1 (en) * 2001-10-15 2003-04-17 Ensoftek, Inc. Enabling easy generation of XML documents from XML specifications
US20040205656A1 (en) * 2002-01-30 2004-10-14 Benefitnation Document rules data structure and method of document publication therefrom
JP3888621B2 (ja) * 2002-02-21 2007-03-07 インターナショナル・ビジネス・マシーンズ・コーポレーション 文書処理システム、文書処理方法及びプログラム

Also Published As

Publication number Publication date
US20030229852A1 (en) 2003-12-11
JP2003256264A (ja) 2003-09-10
US20080082570A1 (en) 2008-04-03
US7275208B2 (en) 2007-09-25

Similar Documents

Publication Publication Date Title
JP3888621B2 (ja) 文書処理システム、文書処理方法及びプログラム
US7508985B2 (en) Pattern-matching system
JP4755427B2 (ja) データベース・アクセス・システム、データベース・アクセス方法
WO2009116646A1 (ja) マルチバイト処理向け文字列照合用有限オートマトン生成システム
US8543528B2 (en) Exploitation of transition rule sharing based on short state tags to improve the storage efficiency
JP2019053729A (ja) スマートコントラクトのテスト方法及びテスト装置
JP2003084987A (ja) Xml文書の妥当性を検証するためのオートマトンの生成方法、xml文書の妥当性検証方法、xml文書の妥当性を検証するためのオートマトンの生成システム、xml文書の妥当性検証システムおよびプログラム
US6138272A (en) GDMO translator, method of GDMO translation, and recording medium containing program for GDMO translator
US20060093241A1 (en) Document management apparatus and document management method, and storage medium storing program
JP5540887B2 (ja) 設計検証プログラム、設計検証方法および設計検証装置
US20050010581A1 (en) Method for identifying composite data types with regular expressions
US20040168064A1 (en) System of generating procedure for digital signature and encryption to XML
US6516306B1 (en) Model checking of message flow diagrams
US20230072988A1 (en) System and a method for automatic generation of smart contracts across blockchain platforms
CN111444161A (zh) 数据处理方法、装置、电子设备及存储介质
JP5142132B2 (ja) 設計プロセスの順序の決定を支援する技術
JP4387324B2 (ja) プロパティ変換装置
US7765502B1 (en) ASIC functional specification parser
US7222118B2 (en) Computer program product for accessing database, recording medium recording database access program therein, and database access method
JP5253115B2 (ja) プログラム変換装置、プログラム分析装置、プログラム変換方法、プログラム分析方法、およびプログラム
JP4708685B2 (ja) Cliコマンド投入方法/プログラム/プログラム記録媒体/装置、データ記録媒体
Lavorato et al. LL (k) optimization of a network protocol parser generator.
JP7101750B2 (ja) 試験支援装置、試験支援方法及び試験支援プログラム
JP4313698B2 (ja) 電子文書処理装置、電子文書処理方法および電子文書処理プログラム
JP4448048B2 (ja) 構造解析プログラム

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20061114

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20061116

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061124

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091208

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101208

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101208

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111208

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees