(57)【特許請求の範囲】
【請求項１】
構造化言語で記述された文書が複数の構造型定義のうちのいずれに適合するかを判別するための判別規則を、各構造型定義の固有の要素に基づいて生成する判別規則生成部と、
前記判別規則生成部にて生成された判別規則に基づいて、処理対象である文書がいずれの前記構造型定義に適合するかを判別する判別部と
を備えることを特徴とする文書処理システム。
【請求項２】
前記判別規則生成部は、前記判別規則を用いて、所定の要素の出現を条件として対応する構造型定義を特定するルールベースを生成し、
前記判別部は、前記処理対象である文書から得られたイベント列を、前記判別規則生成部にて生成されたルールベースに照合して当該文書が適合する構造型定義を特定することを特徴とする請求項１に記載の文書処理システム。
【請求項３】
処理対象であるＸＭＬ文書を入力する入力部と、
前記入力部にて入力された前記ＸＭＬ文書を解析するＸＭＬパーザと、
前記ＸＭＬパーザによる解析結果に基づいて、前記ＸＭＬ文書が適合すべきＤＴＤ（Document Type Definition）の集合のうち、いずれかのＤＴＤに固有の要素が当該ＸＭＬ文書に含まれているかどうかに基づいて、当該ＸＭＬ文書が適合するＤＴＤを判別するＤＴＤ判別部と
を備えることを特徴とする文書処理システム。
【請求項４】
構造化言語で記述された文書が適合すべき構造型定義の集合に対応する非決定性オートマトンを生成する非決定性オートマトン生成部と、
前記非決定性オートマトン生成部にて生成された前記非決定性オートマトンを決定性オートマトンに変換する決定性オートマトン生成部と、
前記決定性オートマトン生成部にて生成された前記決定性オートマトンに基づいて、処理対象である文書が前記構造型定義の集合のうちのいずれに適合するかを判別する判別部と
を備えることを特徴とする文書処理システム。
【請求項５】
前記非決定性オートマトン生成部は、前記構造型定義の集合に含まれる各構造型定義に対応する非決定性オートマトンを合成して前記構造型定義の集合に対応する非決定性オートマトンを生成し、かつ当該構造型定義の集合に対応する非決定性オートマトンにおける各構造型定義に対応する部分に対応する構造型定義を特定する特定情報を付与し、
前記決定性オートマトン生成部は、生成した前記決定性オートマトンに対して、前記非決定性オートマトンに付与されている前記特定情報を更新して付与し、前記判別部は、処理対象である文書に基づいて前記決定性オートマトンをたどり、たどった部分に対して付与されている前記特定情報に基づいて、当該文書が適合する構造型定義を判別することを特徴とする請求項４に記載の文書処理システム。
【請求項６】
前記特定情報は、前記非決定性オートマトン及び前記決定性オートマトンの状態遷移に対して付与されることを特徴とする請求項５に記載の文書処理システム。
【請求項７】
前記特定情報は、前記非決定性オートマトン及び前記決定性オートマトンの状態に対して付与されることを特徴とする請求項５に記載の文書処理システム。
【請求項８】
コンピュータを用いて構造化言語で記述された文書を処理する文書処理方法において、
前記文書が適合すべき構造型定義の集合をメモリから読み出し、処理対象である文書が当該構造型定義の集合に含まれる構造型定義のうちのいずれに適合するかを判別するための判別規則を、各構造型定義の固有の要素に基づいて生成し、当該メモリに格納するステップと、
前記メモリから前記判別規則を読み出し、当該判別規則に基づいて、処理対象である文書がいずれの前記構造型定義に適合するかを判別するステップと
を含むことを特徴とする文書処理方法。
【請求項９】
前記判別規則を生成するステップは、
前記各構造型定義を構成する要素列を抽出するステップと、
抽出された前記要素列のうちで、ただ１つの構造型定義にのみ出現する要素列を判別規則として選択するステップと
を含むことを特徴とする請求項８に記載の文書処理方法。
【請求項１０】
コンピュータを用いてＸＭＬ文書を処理する文書処理方法において、
ＸＭＬ文書を入力して解析し、解析結果をメモリに格納するステップと、
前記メモリから前記解析結果を読み出し、当該解析結果に基づいて、前記ＸＭＬ文書が適合すべきＤＴＤ（Document Type Definition）の集合のうち、いずれかのＤＴＤに固有の要素が当該ＸＭＬ文書に含まれているかどうかを調べ、当該ＸＭＬ文書が適合するＤＴＤを判別するステップと
を含むことを特徴とする文書処理方法。
【請求項１１】
コンピュータを用いて構造化言語で記述された文書を処理する文書処理方法において、
前記文書が適合すべき構造型定義の集合をメモリから読み出し、当該構造型定義の集合に含まれる各構造型定義に対応する第１の非決定性オートマトンを生成し、当該メモリに格納する第１のステップと、
前記メモリから第１の非決定性オートマトンを読み出して合成し、前記構造型定義の集合全体に対応する第２の非決定性オートマトンを生成し、当該メモリに格納する第２のステップと、
前記メモリから第２の非決定性オートマトンを読み出して決定性オートマトンに変換し、当該メモリに格納する第３のステップと、
前記メモリから前記決定性オートマトンを読み出し、当該決定性オートマトンに基づいて、処理対象である文書が前記構造型定義の集合のうちのいずれに適合するかを判別する第４のステップと
を含むことを特徴とする文書処理方法。
【請求項１２】
前記第１のステップは、前記第１の非決定性オートマトンのそれぞれに対応する構造型定義を特定する特定情報を付与するステップを含み、
前記第２のステップは、前記第２の非決定性オートマトンにおける各構造型定義に対応する部分に、前記特定情報を付与するステップを含み、
前記第３のステップは、生成した前記決定性オートマトンに対して、前記非決定性オートマトンに付与されている前記特定情報を更新して付与するステップを含み、
前記第４のステップは、処理対象である文書に基づいて前記決定性オートマトンをたどり、たどった部分に対して付与されている前記特定情報に基づいて、当該文書が適合する構造型定義を判別するステップを含むことを特徴とする請求項１１に記載の文書処理方法。
【請求項１３】
コンピュータを制御して、構造化言語で記述された文書を処理するプログラムであって、
前記文書が適合すべき構造型定義の集合をメモリから読み出し、処理対象である文書が当該構造型定義の集合に含まれる構造型定義のうちのいずれに適合するかを判別するための判別規則を、各構造型定義の固有の要素に基づいて生成し、当該メモリに格納する判別規則生成手段と、
前記メモリから前記判別規則を読み出し、当該判別規則に基づいて、処理対象である文書がいずれの前記構造型定義に適合するかを判別する判別手段として
前記コンピュータを機能させることを特徴とするプログラム。
【請求項１４】
コンピュータを制御して、構造化言語で記述された文書を処理するプログラムであって、
ＸＭＬ文書を入力して解析し、解析結果をメモリに格納するＸＭＬパーザと、前記メモリから前記解析結果を読み出し、当該解析結果に基づいて、前記ＸＭＬ文書が適合すべきＤＴＤ（Document Type Definition）の集合のうち、いずれかのＤＴＤに固有の要素が当該ＸＭＬ文書に含まれているかどうかを調べ、当該ＸＭＬ文書が適合するＤＴＤを判別するＤＴＤ判別手段として
前記コンピュータを機能させることを特徴とするプログラム。
【請求項１５】
コンピュータを制御して、構造化言語で記述された文書を処理するプログラムであって、
前記文書が適合すべき構造型定義の集合をメモリから読み出し、当該構造型定義の集合に対応する非決定性オートマトンを生成し、当該メモリに格納する非決定性オートマトン生成手段と、
前記メモリから前記非決定性オートマトンを読み出し、当該非決定性オートマトンを決定性オートマトンに変換し、当該メモリに格納する決定性オートマトン生成手段と、
前記メモリから前記決定性オートマトンを読み出し、当該決定性オートマトンに基づいて、処理対象である文書が前記構造型定義の集合のうちのいずれに適合するかを判別する判別手段として
前記コンピュータを機能させることを特徴とするプログラム。
【請求項１６】
コンピュータを制御して構造化言語で記述された文書を処理するプログラムを、当該コンピュータが読み取り可能に記録した記録媒体であって、
前記プログラムは、
前記文書が適合すべき構造型定義の集合をメモリから読み出し、処理対象である文書が当該構造型定義の集合に含まれる構造型定義のうちのいずれに適合するかを判別するための判別規則を、各構造型定義の固有の要素に基づいて生成し、当該メモリに格納する判別規則生成手段と、
前記メモリから前記判別規則を読み出し、当該判別規則に基づいて、処理対象である文書がいずれの前記構造型定義に適合するかを判別する判別手段として
前記コンピュータを機能させることを特徴とする記録媒体。
【請求項１７】
コンピュータを制御して構造化言語で記述された文書を処理するプログラムを、当該コンピュータが読み取り可能に記録した記録媒体であって、
前記プログラムは、
ＸＭＬ文書を入力して解析し、解析結果をメモリに格納するＸＭＬパーザと、前記メモリから前記解析結果を読み出し、当該解析結果に基づいて、前記ＸＭＬ文書が適合すべきＤＴＤ（Document Type Definition）の集合のうち、いずれかのＤＴＤに固有の要素が当該ＸＭＬ文書に含まれているかどうかを調べ、当該ＸＭＬ文書が適合するＤＴＤを判別するＤＴＤ判別手段として
前記コンピュータを機能させることを特徴とする記録媒体。
【請求項１８】
コンピュータを制御して構造化言語で記述された文書を処理するプログラムを、当該コンピュータが読み取り可能に記録した記録媒体であって、
前記プログラムは、
前記文書が適合すべき構造型定義の集合をメモリから読み出し、当該構造型定義の集合に対応する非決定性オートマトンを生成し、当該メモリに格納する非決定性オートマトン生成手段と、
前記メモリから前記非決定性オートマトンを読み出し、当該非決定性オートマトンを決定性オートマトンに変換し、当該メモリに格納する決定性オートマトン生成手段と、
前記メモリから前記決定性オートマトンを読み出し、当該決定性オートマトンに基づいて、処理対象である文書が前記構造型定義の集合のうちのいずれに適合するかを判別する判別手段として
前記コンピュータを機能させることを特徴とする記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＸＭＬなどの構造化言語で記述された文書の処理方法に関し、特にＤＴＤなどの構造型定義が複数用意されている場合に、処理対象の文書がいずれの構造型定義に適合するか判断する手法に関する。
【０００２】
【従来の技術】
ネットワークによる情報通信において、ＸＭＬ形式を使ってデータ等をやりとりするシステムが一般的になりつつある。企業間でビジネスデータ等をＸＭＬ文書でやりとりする場合、一般に、ＸＭＬ文書の書式は単一ではなく複数存在する。例えば、リース契約のためのシステムでは、見積依頼、契約書、依頼事項照会などの書式が考えられる。
【０００３】
ところで、ＸＭＬでは通常、ＤＴＤ（Document Type Definition）を用いて書式を指定する。具体的には、書式それぞれに対して、見積.dtd、契約書.dtdなどのＤＴＤファイルを用意する（技術的には複数の書式を１つのＤＴＤで記述することができるが、現実的にはそれぞれの書式毎にＤＴＤを分けている場合が多い）。
そして、ＸＭＬ文書が適合するＤＴＤを同定することにより、当該ＸＭＬ文書の書式を認定することが必要となる場合がある。例えば、やりとりされたＸＭＬ文書に対して文書の内容に応じた処理を行おうとする場合、具体的には書式に応じて電子署名のための鍵を使い分ける場合などである。
この場合、処理対象であるＸＭＬ文書に明示的にＤＴＤが指定してあれば、そのＸＭＬ文書がどのＤＴＤに適合するかは自明である。しかし、明示的な指定がない場合には、当該ＸＭＬ文書を実際にＤＴＤで検証する処理が必要となる。
【０００４】
また、ＸＭＬ文書にＤＴＤが指定されていない場合がある。例えば、近年、ウェブサービス（Web Services）によるシステム構築が脚光を浴びているが、このウェブサービスではＸＭＬ文書のやりとりに、ＳＯＡＰ（Simple Object Access Protocol）が用いられる。ＳＯＡＰ仕様は、ＸＭＬ文書をくるむ封筒の役目をする。すなわちＸＭＬ文書は、ＳＯＡＰによるSOAP EnvelopeにＸＭＬ文書を「包んで」やりとりされる。そして、ＳＯＡＰは、構造型定義（スキーマ）としてＤＴＤではなくXML Schemaを用いているので、SOAP Envelopeに入れられたＸＭＬ文書が所定のＤＴＤに適合している場合でも、ＤＯＣＴＹＰＥ宣言で当該ＸＭＬ文書のＤＴＤを指定することができない。
また、電子署名が施されたＸＭＬ文書においても同様の構造により、当該ＸＭＬ文書のＤＴＤを指定することができない。
【０００５】
【発明が解決しようとする課題】
上述したように、ＸＭＬ文書のＤＴＤを同定することが必要な場合、処理対象であるＸＭＬ文書において明示的にＤＴＤが指定されていないならば、当該ＸＭＬ文書のＤＴＤを同定するために、当該ＸＭＬ文書を実際にＤＴＤで検証する処理が必要となる。
また、ＳＯＡＰや電子署名による加工が施されたＸＭＬ文書では、当該ＸＭＬ文書のＤＴＤをＤＯＣＴＹＰＥ宣言で指定することができないため、当該ＸＭＬ文書のＤＴＤを同定するために、やはり当該ＸＭＬ文書を実際にＤＴＤで検証する処理が必要となる。この場合、当該ＸＭＬ文書のＤＴＤをSOAP header等に記述することにより、加工が施された状態でＸＭＬ文書のＤＴＤを認定できるようにすることは可能であるが、ＤＴＤを指定するための標準的な方法は存在しない。
【０００６】
以上のように、処理対象であるＸＭＬ文書の書式を認定するためにＤＴＤで検証する処理を必要とする場合があるが、処理対象であるＸＭＬ文書の書式が多数ある場合、全てのＤＴＤにてＸＭＬ文書を検証する作業は繁雑であり手間を要する。
なお、かかる問題は、ＤＴＤ以外の構造型定義（例えば上記のXML Schema）でも同様に生じ得る。
【０００７】
そこで、本発明は、ある構造型定義の集合が与えられているという前提で、受け取ったＸＭＬ文書がその中のどの構造型定義に適合するかを求める処理を高速に行うことを目的とする。
また、既存のシステム構成やＸＭＬプロセッサの実装に影響を与えることなく、かかる処理を行うシステムを実現することを他の目的とする。
【０００８】
【課題を解決するための手段】
上記の目的を達成するため、本発明は、次のように構成された文書処理システムとして実現される。すなわち、この文書処理システムは、ＸＭＬなどの構造化言語で記述された文書が複数の構造型定義（例えばＤＴＤ）のうちのいずれに適合するかを判別するための判別規則を、各構造型定義の固有の要素に基づいて生成する判別規則生成部と、この判別規則生成部にて生成された判別規則に基づいて、処理対象である文書がいずれの構造型定義に適合するかを判別する判別部とを備えることを特徴とする。
より詳細には、この判別規則生成部は、生成した判別規則を用いて、所定の要素の出現を条件として対応する構造型定義を特定するルールベースを生成し、判別部は、処理対象である文書から得られたイベント列を、このルールベースに照合して、この文書が適合する構造型定義を特定する。
【０００９】
本発明による他の文書処理システムは、処理対象であるＸＭＬ文書を入力する入力部と、この入力部にて入力されたＸＭＬ文書を解析するＸＭＬパーザと、このＸＭＬパーザによる解析結果に基づいて、処理対象のＸＭＬ文書が適合すべきＤＴＤ（Document Type Definition）の集合のうち、いずれかのＤＴＤに固有の要素が処理対象のＸＭＬ文書に含まれているかどうかに基づいて、このＸＭＬ文書が適合するＤＴＤを判別するＤＴＤ判別部とを備えることを特徴とする。
【００１０】
また、本発明によるさらに他の文書処理システムは、ＸＭＬなどの構造化言語で記述された文書が適合すべき構造型定義（例えばＤＴＤ）の集合に対応する非決定性オートマトンを生成する非決定性オートマトン生成部と、この非決定性オートマトンを決定性オートマトンに変換する決定性オートマトン生成部と、この決定性オートマトンに基づいて、処理対象である文書が前記構造型定義の集合のうちのいずれに適合するかを判別する判別部とを備えることを特徴とする。
【００１１】
この文書処理システムでは、生成されるオートマトンに、構造型定義の集合に含まれる各構造型定義のいずれに対応する部分かを識別するための特定情報が付与される。すなわち、非決定性オートマトン生成部は、構造型定義の集合に含まれる各構造型定義に対応する非決定性オートマトンを合成して構造型定義の集合に対応する非決定性オートマトンを生成し、かつ構造型定義の集合に対応する非決定性オートマトンにおける各構造型定義に対応する部分に対応する構造型定義を特定する特定情報を付与し、決定性オートマトン生成部は、生成した決定性オートマトンに対して、非決定性オートマトンに付与されている特定情報を更新して付与し、判別部は、処理対象である文書に基づいて決定性オートマトンをたどり、たどった部分に対して付与されている特定情報に基づいて、処理対象である文書が適合する構造型定義を判別する。
【００１２】
ここで、特定情報としては、構造化言語の数に相当する数のビットを持ったビットベクトルを用いることができる。この場合、ビットベクトル中の各ビットを各構造化言語にそれぞれ対応付けておけば、オートマトンの所定の部分に付与されているビットベクトルを参照することにより、対応する構造化言語を認識することができる。
また、この特定情報は、非決定性オートマトン及び決定性オートマトンの状態遷移に対して、または状態に対して付与することができる。
【００１３】
また、上記の目的を達成する他の本発明は、コンピュータを用いてＸＭＬなどの構造化言語で記述された文書を処理する次のような文書処理方法として実現される。すなわち、この文書処理方法は、処理対象である文書がＤＴＤなどの構造型定義の集合に含まれる構造型定義のうちのいずれに適合するかを判別するための判別規則を、各構造型定義の固有の要素に基づいて生成するステップと、生成された判別規則に基づいて、処理対象である文書がいずれの構造型定義に適合するかを判別するステップとを含むことを特徴とする。
ここで、詳しくは、この判別規則を生成するステップは、各構造型定義を構成する要素列を抽出するステップと、抽出された要素列のうちで、ただ１つの構造型定義にのみ出現する要素列を判別規則として選択するステップとを含む。
【００１４】
本発明の他の文書処理方法は、ＸＭＬ文書を入力して解析するステップと、この解析結果に基づいて、処理対象であるＸＭＬ文書が適合すべきＤＴＤ（Document Type Definition）の集合のうち、いずれかのＤＴＤに固有の要素が処理対象のＸＭＬ文書に含まれているかどうかを調べ、このＸＭＬ文書が適合するＤＴＤを判別するステップとを含むことを特徴とする。
【００１５】
さらにまた、本発明の他の文書処理方法は、文書が適合すべき構造型定義の集合をメモリから読み出し、当該構造型定義の集合に含まれる各構造型定義に対応する第１の非決定性オートマトンを生成する第１のステップと、この第１の非決定性オートマトンを合成して構造型定義の集合全体に対応する第２の非決定性オートマトンを生成する第２のステップと、この第２の非決定性オートマトンを決定性オートマトンに変換する第３のステップと、この決定性オートマトンに基づいて、処理対象である文書が構造型定義の集合のうちのいずれに適合するかを判別する第４のステップとを含むことを特徴とする。
ここで好ましくは、オートマトンを生成した際に、構造型定義の集合に含まれる各構造型定義のいずれに対応する部分かを識別するための特定情報が付与される。すなわち、第１のステップは、第１の非決定性オートマトンのそれぞれに対応する構造型定義を特定する特定情報を付与するステップを含み、第２のステップは、第２の非決定性オートマトンにおける各構造型定義に対応する部分に、特定情報を付与するステップを含み、第３のステップは、生成した決定性オートマトンに対して、非決定性オートマトンに付与されている特定情報を更新して付与するステップを含み、第４のステップは、処理対象である文書に基づいて決定性オートマトンをたどり、たどった部分に対して付与されている特定情報に基づいて、文書が適合する構造型定義を判別するステップを含む。
【００１６】
また、本発明は、コンピュータを用いて上述した文書処理システムを実現し、または、文書処理方法における各ステップに対応する処理をコンピュータに実行させるプログラムとして実現することができる。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供される。
【００１７】
【発明の実施の形態】
以下、添付図面に示す第１、第２の実施の形態に基づいて、この発明を詳細に説明する。なお、以下の実施の形態の説明では、ＸＭＬ文書の構造型定義（スキーマ）がＤＴＤである場合について説明するが、他の構造型定義に対しても同様の手法を適用することが可能である。
【００１８】
［第１の実施の形態］
第１の実施の形態では、取り扱われるＸＭＬ文書が該当し得るＤＴＤの集合を予め走査しておき、各ＤＴＤが他のＤＴＤから弁別される弁別規則を生成する。そして、この弁別規則を、ＸＭＬ文書が適合するＤＴＤを判別する判別規則として用いることにより、ＸＭＬ文書が適合するＤＴＤを効率よく同定する。
【００１９】
図１は、第１の実施の形態によるＸＭＬ文書判定システムを実現するのに好適なコンピュータ装置のハードウェア構成の例を模式的に示した図である。
図１に示すコンピュータ装置は、演算手段であるＣＰＵ（Central Processing Unit：中央処理装置）１０１と、Ｍ／Ｂ（マザーボード）チップセット１０２及びＣＰＵバスを介してＣＰＵ１０１に接続されたメインメモリ１０３と、同じくＭ／Ｂチップセット１０２及びＡＧＰ（Accelerated Graphics Port）を介してＣＰＵ１０１に接続されたビデオカード１０４と、ＰＣＩ（Peripheral Component Interconnect）バスを介してＭ／Ｂチップセット１０２に接続されたハードディスク１０５及びネットワークインターフェイス１０６と、さらにこのＰＣＩバスからブリッジ回路１０７及びＩＳＡ（Industry Standard Architecture）バスなどの低速なバスを介してＭ／Ｂチップセット１０２に接続されたフロッピーディスクドライブ１０８及びキーボード／マウス１０９とを備える。また、図１には記載していないが、このコンピュータ装置は、後述するようにＣＰＵ１０１の動作性能（動作クロック）を制御する手段として、クロック発信器及びそのコントローラを備える。
なお、図１は本実施の形態を実現するコンピュータ装置のハードウェア構成を例示するに過ぎず、本実施の形態を適用可能であれば、他の種々の構成を取ることができる。例えば、ビデオカード１０４を設ける代わりに、ビデオメモリのみを搭載し、ＣＰＵ１０１にてイメージデータを処理する構成としても良いし、音声による入出力を行うためのサウンド機構を設けたり、ＡＴＡ（AT Attachment）などのインターフェイスを介してＣＤ−ＲＯＭ（Compact Disc Read Only Memory）やＤＶＤ−ＲＯＭ（Digital Versatile Disc Read Only Memory）のドライブを設けたりしても良い。
【００２０】
図２は、第１の実施の形態によるＸＭＬ文書判定システムの構成を説明するブロック図である。
図２を参照すると、本実施の形態のＸＭＬ文書判定システムは、複数のＤＴＤの集合を走査してＸＭＬ文書がどのＤＴＤに適合するかを判別するための判別規則を生成する判別規則生成部１０と、判別規則生成部１０にて生成された判別規則の集合からルールベース（判別規則ベース）を生成し格納する判別規則ベース格納部２０と、取り扱われるＸＭＬ文書が適合するべきＤＴＤの集合を格納したＤＴＤ格納部３０と、処理対象のＸＭＬ文書（入力文書）を解析するＸＭＬパーザ４０と、判別規則ベースの判別規則と照合しながらＸＭＬパーザ４０にて解析されたＸＭＬ文書が適合するＤＴＤを判定するＤＴＤ判別部５０とを備える。なお、特に図示しないが、ＸＭＬ文書判定システムは、ネットワークや所定の入力デバイスを介して、ＸＭＬパーザ４０にて解析される処理対象のＸＭＬ文書（入力文書を入力してメインメモリ１０３等に格納する入力部を備える。
【００２１】
図２に示したシステム構成において、判別規則生成部１０、ＸＭＬパーザ４０及びＤＴＤ判別部５０は、図１に示したプログラム制御されたＣＰＵ１０１にて実現されるソフトウェアブロックである。ＣＰＵ１０１を制御してこれらの機能を実現するプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供され、メインメモリ１０３に格納される。
また、判別規則ベース格納部２０及びＤＴＤ格納部３０は、メインメモリ１０３にて実現される。なお、メインメモリ１０３に保持されるデータは、必要に応じてハードディスク１０５などの記憶装置に退避させることができる。
【００２２】
本実施の形態による処理は、判別規則生成部１０による判別規則の生成処理と、ＸＭＬパーザ４０及びＤＴＤ判別部５０による当該判別規則を用いたＸＭＬ文書の判定処理とに大きく分かれる。したがって、図２に示したシステムは、判別規則生成部１０、ＸＭＬパーザ４０及びＤＴＤ判別部５０を単一のコンピュータ装置において実現しても良いし、判別規則生成部１０とＸＭＬパーザ４０及びＤＴＤ判別部５０とを別個のコンピュータ装置にて実現しても良い。後者の場合、判別規則生成部１０として動作するコンピュータ装置からＸＭＬパーザ４０及びＤＴＤ判別部５０として動作するコンピュータ装置へ、ネットワークや磁気ディスクなどの記録媒体を介して、判別規則ベースが受け渡されることとなる。また、判別規則ベース格納部２０及びＤＴＤ格納部３０は、それぞれのコンピュータ装置に設けられることとなる。
【００２３】
次に、図２に示したＸＭＬ文書判定システムの機能について詳細に説明する。本実施の形態によるＸＭＬ文書判定システムへの入力はＤＴＤ情報を持たないＸＭＬ文書であり、出力は適合するＤＴＤである。ＸＭＬ文書が複数のＤＴＤに適合する場合、該当する複数のＤＴＤを返す。所定のＸＭＬ文書が所定のＤＴＤであるDn.dtdに適合するとは、当該ＸＭＬ文書においてDn.dtdが指定されているとして検証した結果、妥当（valid）であることとを意味する。
本実施の形態によるＸＭＬ文書のＤＴＤの判別手法は、所定のＤＴＤの中で必須要素として定義されている要素（列）が他のＤＴＤに出現しない場合（すなわち固有の要素（列）を有している場合）、所定のＸＭＬ文書中に当該要素が出現していることを確認した段階で、当該ＸＭＬ文書が適合するＤＴＤを一意に決定できるという考え方に基づいている。
すなわち、ＤＴＤの集合から、あるＤＴＤにしか存在しない（必須の）要素あるいは要素列を見つけ、判別のための規則集合を構築することによって、ＸＭＬ文書が適合すべきＤＴＤを高速に判別することができる。
【００２４】
以上の考え方に基づいて、まず、判別規則生成部１０が判別規則を生成する。
図３は、判別規則生成部１０の動作を説明するフローチャートである。
判別規則生成部１０は、取り扱われるＸＭＬ文書が適合し得るＤＴＤの集合をＤＴＤ格納部３０から読み出して処理対象とし、図３に示すように、まず要素数を示すパラメータｎを初期化し（ステップ３０１、３０２）、当該ＤＴＤの集合から、要素ｎ（初期的にはｎ＝１）個からなる要素列（規則と称す）を取り出し、規則とＤＴＤ名とを対応付けるインデックスを作る（ステップ３０３、３０４）。
次に、判別規則生成部１０は、得られた要素ｎ個からなる規則の中から、ただ１つのＤＴＤだけに出現する排他的な規則、すなわち作成されたインデックスにおいて単一のＤＴＤのみが対応付けられている規則を取り出し、対応するＤＴＤの判別規則として設定する（ステップ３０５）。
【００２５】
次に、全てのＤＴＤに対して規則が設定されたかどうかをチェックし、規則が未設定のＤＴＤがあるならば、ステップ３０２へ戻る（ステップ３０６）。そして、パラメータｎの値を１加算してステップ３０３以降の処理を繰り返す。
一方、全てのＤＴＤに対して規則が設定されたならば、次に判別規則生成部１０は、設定された規則の絞り込みを行う（ステップ３０７）。
【００２６】
規則の絞り込みでは、設定された規則の中から冗長性を除き、最適な判別規則を選択する。ただし、選択される判別規則は、１つのＤＴＤについて１つとは限らない。本実施の形態では、次の３つの方針に従って規則の絞り込みを行う。
（１）ＸＭＬ文書は、document orderにしたがって、すなわち文書の先頭から末尾に向かって走査され解析される。そこで、所定のＤＴＤについて設定された規則のうちで、当該ＤＴＤにおいて先に出現する要素に関する規則を選択し、後に出現する要素に関する規則を除去する。
（２）ＸＭＬ文書の要素型宣言では可変個の要素の出現を許す（＊、＋、？など）。この規則に合致するかどうかをテストする場合の処理コストが大きいため、要素が可変個ではない規則がすでにある場合には、このような規則を除去する。（３）所定の規則が別の規則の一部になっている場合、一方の規則に合致するならば他方の規則にも必ず合致するので、規則が合致するかどうかをテストする場合の処理コストをより小さくするため、規則を構成する要素が短いものを選択し、そうでないものを除去する。
【００２７】
以上のようにして判別規則を生成した後、判別規則生成部１０は、生成した判別規則を判別規則ベースにまとめ、判別規則ベース格納部２０に格納する。
本実施の形態で用いられる判別規則ベースは、if then規則からなるルール集合とフラグ集合からなる。すなわち、所定の要素の出現を条件として対応するＤＴＤを特定するルールベースである。ルールは、ｉｆ（テスト）ｔｈｅｎ（アクション）の形式をしている。テスト部分には、「ある要素が出現した」というテストと「flag == true/false」という形式の表現からなる論理式が記述される。そしてさらに、判別規則ベースにおいては、次のようにして判別規則が整理される。
（１）要素が１個しかない判別規則（例えば要素Ａ）では
「if（要素Ａが出現）then Di」
という形式の規則を判別規則ベースに登録する。ここで、Ｄｉは、当該判別規則に合致するＤＴＤを示す符号である。
（２）要素が複数ある判別規則では、最後の要素以外は、要素の出現に対し、フラグをセットするような規則を作る。例えば要素列Ｂ，Ｃの場合、
「if（要素Ｂが出現）then flag1 = true」
「if（要素Ｃが出現 && flag1 = true）then Dj」
という２つの規則を作る。ここで、Ｄｊは、当該判別規則に合致するＤＴＤを示す符号である。
（３）＊、？、＋などの可変個の要素を許す記号付きの規則は、当該記号を除去した形で登録する。
【００２８】
次に、上記の判別規則ベースを用いた、ＸＭＬパーザ４０及びＤＴＤ判別部５０によるＸＭＬ文書の判定処理について説明する。
図４は、本実施の形態におけるＸＭＬ文書の判定処理の流れを説明する図である。
ＸＭＬ文書の判定処理は、ＸＭＬパーザ４０によるＸＭＬ文書の解析処理と、ＤＴＤ判別部５０による判別処理とからなる。初期的に、ネットワーク等を介して入力された処理対象であるＸＭＬ文書（入力文書）は、図１に示したメインメモリ１０３に格納され、ＸＭＬパーザ４０及びＤＴＤ判別部５０として動作するＣＰＵ１０１によるアクセスが可能となっているものとする。
【００２９】
図４に示すように、まず、ＸＭＬパーザ４０は、処理対象であるＸＭＬ文書をメインメモリ１０３から読み出し、解析する。ＸＭＬパーザ４０は、ＸＭＬ文書を先頭から走査し、要素や属性の出現をイベントとして抽出する。抽出されたイベント列は、ＤＴＤ判別部５０に渡される。なお、ＸＭＬパーザ４０としては、例えばＳＡＸパーザを用いることができる。
次に、ＤＴＤ判別部５０は、判別規則ベース格納部２０に格納されている判別規則ベースを用いて、ＸＭＬパーザ４０から受け取ったイベント列を調べる。具体的には、まず判別規則ベースの全てのフラグをfalseにセットする。次に、処理中のイベント列に関して、要素が出現したならば、判別規則ベース中の各規則のテスト部分をチェックし、テストに合格すればアクションを実行する。そして、アクション部にＤＴＤ名が書かれていたならば、当該ＤＴＤ名を出力して処理を終了する。
【００３０】
以上の処理の後、ＤＴＤ判別部５０から出力されたＤＴＤ名を持つＤＴＤに基づいて、validatingＸＭＬプロセッサが処理対象であるＸＭＬ文書を検証する。この検証により、当該ＸＭＬ文書が当該ＤＴＤに適合するかどうかが最終的に確認される。
validatingＸＭＬプロセッサによるＸＭＬ文書の検証の処理は、従来の検証と同様であるが、上述したＸＭＬパーザ４０及びＤＴＤ判別部５０による判定処理によって検証すべきＤＴＤが絞り込まれているため、全体の処理コストが大幅に減少する。
なお、validatingＸＭＬプロセッサは、当該ＸＭＬ文書を使用するアプリケーションに設けても良いし、本実施の形態によるＸＭＬ文書判定システムの構成要素として設けることもできる。本実施の形態に設ける場合、システムの出力は、適合するＤＴＤではなく、処理対象であるＸＭＬ文書が判別されたＤＴＤに適合するかどうかの検証結果となる。
【００３１】
次に、具体的なＤＴＤ及びＸＭＬ文書の例を用いて、本実施の形態による処理を説明する。
図５に示すＤ１、Ｄ２、Ｄ３、Ｄ４の４つのＤＴＤが、やりとりされるＸＭＬ文書が適合し得るＤＴＤの集合として用意されているものとする。
ここで、図６に示すＸＭＬ文書ex1.xmlが適合するＤＴＤを判定する場合を考える。この場合、ＸＭＬ文書ex1.xmlには要素Ｅが現れており、要素ＥはＤ２にしか出現しないことから、要素Ｅの出現が確認できた段階でＸＭＬ文書ex1.xmlはＤ２に適合しているはずである（少なくとも他のＤＴＤには適合しない）ということがわかる。
次に、図７に示すＸＭＬ文書ex2.xmlが適合するＤＴＤを判定する場合を考える。この場合、このＸＭＬ文書に出現する要素の中で、ある１つのＤＴＤにしか存在しない要素は存在しない。しかし、２要素からなる列Ｂ，Ｄの出現は、Ｄ３にしか出現しない組み合わせである。したがって、この要素列Ｂ，Ｄの出現が確認できた段階でＸＭＬ文書ex2.xmlはＤ３に適合しているはずである（少なくとも他のＤＴＤには適合しない）ということがわかる。
【００３２】
以上の判定を実現すべく、まず、判別規則生成部１０が図５に示した４つのＤＴＤの集合から判別規則を抽出し、判別規則ベースを生成する。
図３に示したフローチャートに従い、まず図５に示したＤ１、Ｄ２、Ｄ３、Ｄ４の各ＤＴＤに含まれる要素型宣言に基づいて、要素１個からなる要素列（規則）を取り出し、図８に示すインデックスが生成される。そして、ただ１つのＤＴＤだけに出現する規則（インデックスの右側（ＤＴＤ名）に単一のＤＴＤしか出現していないもの）を取り出し、対応するＤＴＤの判別規則として設定する。図９は、図８のインデックスから得られる判別規則を示す。
【００３３】
図９の判別規則において、規則が設定されていないＤＴＤ（Ｄ１、Ｄ３）が存在するので、図３のステップ３０２に戻り、要素２個からなる規則について同様の処理を行う。これにより、図１０に示すインデックスが生成される。そして、ただ１つのＤＴＤだけに出現する規則を取り出し、対応するＤＴＤの判別規則として設定する。図１１は、図１０のインデックスから得られる判別規則を図９に反映させた図である。図１１の状態で、全てのＤＴＤに対して規則が設定されたので、次に、規則の絞り込みを行う。
【００３４】
図１１に示した判別規則によれば、Ｄ２、Ｄ３、Ｄ４の判別規則に対して絞り込みが行われるが、ここでは例としてＤ４の判別規則の絞り込みについて具体的に説明する。
図１１に示されたＤ４に対する判別規則は
Ｒｕｌｅ−Ｄ４＝｛（Ｆ），（Ｈ），（Ｆ，Ｈ），（Ｈ，Ｇ？）｝
である。このうち、図５に示したＤ４の定義によれば、要素Ｆより要素Ｈの方が必ず先に走査される。そして、どちらも必須要素であるため、所定のＸＭＬ文書がＤ４に適合するならば，必ず要素Ｆが存在することとなる。したがって、方針（１）により、要素Ｈに関する規則を除去である。
次に、Ｄ４には要素個数が固定の規則（Ｆ）が存在するので、方針（２）に基づき、可変個の要素（Ｈ，Ｇ？）の出現を含む規則を除去する。
さらに、残る２つの規則（Ｆ），（Ｆ，Ｈ）は、（Ｆ）が（Ｆ，Ｈ）の一部になっているため、方針（３）に基づき、要素が長い方の規則（Ｆ，Ｈ）を除去する。
同様の処理をＤ２、Ｄ３の判別規則に対しても行い、図１１に示された判別規則は、図１２のように絞り込まれる。
この後、判別規則生成部１０は、図１２の判別規則から判別規則ベースを生成し、判別規則ベース格納部２０に格納する。図１３は、図１２の判別規則から生成された、Ｄ１〜Ｄ４の４つのＤＴＤに関する判別規則ベースを示す図である。
【００３５】
次に、生成された判別規則ベースを用いて、ＤＴＤ判別部５０がＸＭＬ文書のＤＴＤを判別する。
初期的に、ＸＭＬパーザ４０が処理対象であるＸＭＬ文書を解析し、得られたイベント列をＤＴＤ判別部５０に渡す。ＤＴＤ判別部５０は、ＸＭＬパーザ４０から受け取ったＸＭＬ文書のイベント列と、判別規則ベース格納部２０に格納されている判別規則ベースとを照合して、当該ＸＭＬ文書が適合するＤＴＤを判別する。ここでは例として、図７に示したＸＭＬ文書が処理対象として入力されたとする。ＸＭＬパーザ４０は、このＸＭＬ文書を解析し、
<A>の出現
<B>の出現
<D>の出現
と言うイベントを抽出し、ＤＴＤ判別部５０に渡す（ただし、要素の出現以外のイベントは省略している）。ＤＴＤ判別部５０は、各イベントに対し、適用できる規則があるかをテストする。この場合、<B>の出現によって
If（要素Bが出現）then flag2 = true
という規則が発火し、アクションであるflag=trueを実行する。さらに、<D>要素が出現したというイベントに対して、
If（要素Dが出現）
if（flag1 == true）then D1
if（flag2 == true）then D3
が発火し、Ｄ３が最終的に選択される。以上の手順では、一般的なプロダクションシステムと異なり、要素名に対応する規則を使っているので規則の競合は起こらない。
【００３６】
［第２の実施の形態］
第２の実施の形態では、取り扱われるＸＭＬ文書が該当し得るＤＴＤの各要素型宣言に相当するオートマトンを生成する。そして、このオートマトンを用いてＸＭＬ文書が適合するＤＴＤを判別することにより、ＸＭＬ文書が適合するＤＴＤを効率よく同定する。
【００３７】
本実施の形態は、第１の実施の形態と同様のハードウェア構成を持つコンピュータ装置で実現される。
図１４は、第２の実施の形態によるＸＭＬ文書判定システムの構成を説明するブロック図である。
図１４を参照すると、本実施の形態のＸＭＬ文書判定システムは、取り扱われるＸＭＬ文書が適合するべきＤＴＤの集合を格納したＤＴＤ格納部１４１０と、当該ＤＴＤの集合に基づき同じ要素名に対するｍ個の要素型宣言（いわゆる正則表現とみなすことができる）から対応する非決定性オートマトン（Non deterministic Finite state Automaton：以下、ＮＦＡ）を生成するＮＦＡ生成部１４２０と、生成されたＮＦＡを決定性オートマトン（Deterministic Finite state Automaton：以下、ＤＦＡ）に変換するＤＦＡ生成部１４３０と、処理対象のＸＭＬ文書（入力文書）を解析するＸＭＬパーザ１４４０と、ＤＦＡ生成部１４３０にて生成されたＤＦＡを用いてＸＭＬパーザ１４４０にて解析されたＸＭＬ文書が適合するＤＴＤの判別を行うＸＭＬ検証部１４５０とを備える。なお、特に図示しないが、ＸＭＬ文書判定システムは、ネットワークや所定の入力デバイスを介して、ＸＭＬパーザ１４４０にて解析される処理対象のＸＭＬ文書（入力文書を入力してメインメモリ１０３等に格納する入力部を備える。
【００３８】
図１４に示したシステム構成において、ＮＦＡ生成部１４２０、ＤＦＡ生成部１４３０、ＸＭＬパーザ１４４０及びＸＭＬ検証部１４５０は、図１のプログラム制御されたＣＰＵ１０１にて実現されるソフトウェアブロックである。ＣＰＵ１０１を制御してこれらの機能を実現するプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供され、メインメモリ１０３に格納される。また、ＤＴＤ格納部１４１０は、メインメモリ１０３にて実現される。なお、メインメモリ１０３に保持されるデータは、必要に応じてハードディスク１０５などの記憶装置に退避させることができる。
【００３９】
本実施の形態においても、ＮＦＡ生成部１４２０によるＮＦＡの生成処理と、ＤＦＡ生成部１４３０によるＤＦＡの生成処理と、ＸＭＬパーザ１４４０及びＸＭＬ検証部１４５０によるＤＴＤの判別（検証）処理とは独立した処理であるので、各構成要素を単一のコンピュータ装置で実現しても、複数のコンピュータ装置で実現しても良い。例えば、ＮＦＡ生成部１４２０及びＤＦＡ生成部１４３０を１つのコンピュータ装置で実現し、ＸＭＬパーザ１４４０及びＸＭＬ検証部１４５０を他のコンピュータ装置で実現した場合、ＮＦＡ生成部１４２０及びＤＦＡ生成部１４３０として動作するコンピュータ装置からＸＭＬパーザ１４４０及びＸＭＬ検証部１４５０として動作するコンピュータ装置へ、ネットワークや磁気ディスクなどの記録媒体を介して、ＤＦＡが受け渡されることとなる。また、ＤＴＤ格納部１４１０は、それぞれのコンピュータ装置に設けられることとなる。
【００４０】
次に、図１４に示したＸＭＬ文書判定システムの機能について詳細に説明する。
本実施の形態によるＸＭＬ文書判定システムへの入力はＤＴＤ情報を持たないＸＭＬ文書であり、出力は当該ＸＭＬ文書が本実施の形態にて判別されたＤＴＤに適合するかどうかの検証結果である。
初期的に、ＤＴＤ格納部１４１０に、図１５に示すＤ５、Ｄ６、Ｄ７という３つのＤＴＤが格納されているものとする。各ＤＴＤは、図１５に示すように、要素Ａに対する要素型宣言を定義している。
【００４１】
まず、ＮＦＡ生成部１４２０は、図１５に示した３つのＤＴＤにそれぞれ対応するＮＦＡを生成する。ＮＦＡの生成法は公知の手法を用いることができるため、ここでは説明を省略する。図１６は、図１５のＤ５、Ｄ６、Ｄ７に対応するＮＦＡを示す図である。
次に、ＮＦＡ生成部１４２０は、生成された各ＮＦＡにおける各遷移規則δ(q,a),a≠εに対し、長さｍ（ｍはＤＴＤの数）、すなわちｍ個のビット（要素）からなるビットベクトルを付与する。また、ｉ（１≦ｉ≦ｍ）番目のＤＴＤに関して、ｉ番目のビットに値１をセット（オン）し、残りのビットに値０をセット（オフ）する。例えば、Ｄ５（図１５の１番目のＤＴＤ）において、遷移規則δ(q1,B)=q2は、状態１で記号Ｂを読んだときに状態２に遷移する規則であるが、この規則には（１，０，０）というビットベクトルが付与される。
さらに、ＮＦＡ生成部１４２０は、生成したｍ個のＮＦＡを合成して和オートマトン（Ａ１｜Ａ２｜．．．｜Ａｎ、ＡｉはＮＦＡ）を生成する。各ＤＴＤに対する正則表現をＲ１，Ｒ２，・・・，Ｒｎとすると、生成される和オートマトンはＲ１｜Ｒ２｜・・・｜Ｒｎと等価である。上の３つのＤＴＤに対しては、（（Ｂ，Ｃ，Ｄ）｜（Ｂ，Ｃ，Ｅ）｜（Ｇ＊，Ｂ，Ｄ））なるＮＦＡを生成することになる。すなわち、和オートマトンは、ＤＴＤ格納部１４１０に格納されているＤＴＤの集合に対応したＮＦＡと言える。和オートマトンは、各ＮＦＡの先頭にε遷移で遷移する新たな初期状態と、各ＮＦＡの終了状態からε遷移で遷移する新たな終了状態とを生成することによって生成される。図１７は、図１６に示した３つのＮＦＡの和オートマトンを示す図である。図１７を参照すると、図１６の各ＮＦＡにおいて付与されたビットベクトルが、和オートマトンの対応位置に付与されている。
以上のようにして生成された和オートマトン（ＮＦＡ）は、メインメモリ１０３の所定の領域に格納される。
【００４２】
次に、ＤＦＡ生成部１４３０は、メインメモリ１０３からＮＦＡ生成部１４２０にて生成された和オートマトン（ＮＦＡ）を読み出し、ＤＦＡに変換する。ＮＦＡからＤＦＡへの変換は、公知の手法、例えば部分構成法を用いることができる。ただし、ＮＦＡからＤＦＡへの変換の際、新しく生成される遷移規則に対して、必要なビットベクトルを計算して付与する。
図１８は、部分構成法を用いてＤＦＡを生成する場合における本実施の形態により拡張されたアルゴリズムを示す図である。部分構成法は、所定の状態から到達できる状態集合を１つの状態とみなすことにより、ＤＦＡを構成する方法である。図中の下線を付した部分が、本実施の形態による拡張部分、すなわち、生成されるＤＦＡの状態にビットベクトルを付与する動作である。なお、図１８において、Ｔは状態集合（例｛１，２，３｝）である。DTran[T,a]は、状態（集合）Ｔから入力記号ａによって遷移する遷移規則である。Dstatesは、状態集合を入れておくスタックである。ε-closure(q)は、ＮＦＡの状態からε遷移だけで到達できるＮＦＡの状態集合である。ε-closure(T)は、Ｔに含まれるＮＦＡの所定の状態ｓからε遷移だけで到達できるＮＦＡの状態集合である。move(T,a)は、Ｔに含まれるＮＦＡの所定の状態ｓから入力記号ａによって遷移するＮＦＡの状態集合である。
【００４３】
図１７のＮＦＡ及び図１８を参照してアルゴリズムの概略を説明する。
図１７のＮＦＡは、次のように定義される。
状態集合Ｓ＝｛0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15｝（qiをｉと略記）
記号集合Σ＝｛B,C,D,E,F,G｝
遷移規則集合｛u|u=δ(q,a),｝
初期状態 q0
終了状態｛q9｝
図１８のアルゴリズムを参照すると、
まず開始状態q0からε遷移だけで到達できる状態は、０，１，４，１０，１１，１３である。すなわち、
ε-closure(q0)=｛0,1,4,10,11,13｝
であるから、｛０，１，４，１０，１１，１３｝をスタックDstatusに入れる。これを新しい状態Ｔとする。
【００４４】
次に、Dstatus中の印が付いていない状態Ｔ（｛０，１，４，１０，１１，１３｝しかないので、これを選ぶ）に印を付けて、Σの要素である記号ごとに処理を行う。
例えば、記号Ｂを考えると、move(T,B)=｛2,5,14｝である。記号Ｂが入力されると、１から２、４から５、１４から１５への遷移があるためである。さらに、
ε-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｝
となる。そして、｛１，４，１０，１１，１３｝をＱ０という状態、｛２，５，１４｝をＱ１という状態であるとすると、
DTran[Q0,B]=Q1
という新しい遷移規則が生成される。
【００４５】
本実施の形態では、この新しい遷移規則が生成される際に、記号Ｂが入力されて遷移するＵの各状態に対し、新しい遷移規則のビットベクトルを生成して付与する。この新しい遷移規則のビットベクトルは、当該Ｕの各状態における遷移規則に付与されているビットベクトルの論理和を取ったものである。すなわち、Ｕ＝｛２，５，１４｝であるので、
δ(1,B)=2
δ(4,B)=5
δ(13,B)=14
となる３つの遷移規則に付与されたビットベクトルの論理和（ＯＲ）を取る。ビットベクトルは、それぞれ、（１，０，０）、（０，１，０）、（０，０，１）なので、新しい遷移規則DTran[Q0,B]=Q1に対するビットベクトルは、（１，１，１）となる。
以上により、記号Ｂに対する処理において、ビットベクトル付きのＤＦＡに関する遷移規則が得られる。すなわち、
DTran[Q0,B]=Q1,(1,1,1)
【００４６】
次に、記号Ｃを処理するが、move(T,B)が定義できないため、スキップする。記号Ｄ、記号Ｅについても同様である。記号Ｇに対しては、
move(T,G)=｛12｝
であり、
ε-closure(｛12｝)=｛11,12,13｝
である。これに対応するビットベクトルは（０，０，１）である。よって、｛１１，１２，１３｝を新しい状態Ｑ２とすると、
DTran[Q0,G]=Q2,(0,0,1)
となる。
以下、同様の処理を繰り返すことにより、ビットベクトル付きのＤＦＡが得られる。図１９は、図１８のアルゴリズムに従って図１７のＮＦＡから生成されたＤＦＡを示す図である。
【００４７】
一方、ＸＭＬパーザ１４４０は、処理対象であるＸＭＬ文書をメインメモリ１０３から読み出し、解析する。ＸＭＬパーザ１４４０は、ＸＭＬ文書を先頭から走査し、要素や属性の出現をイベントとして抽出する。抽出されたイベント列は、ＸＭＬ検証部１４５０に渡される。
次に、ＸＭＬ検証部１４５０は、上記のようにして得られたＤＦＡを用いて、処理対象であるＸＭＬ文書が適合するＤＴＤを判別する。したがって、第２の実施の形態におけるＤＴＤ判定部１４１０に相当するが、本実施の形態では、ＤＴＤから生成されたＤＦＡを用いて判別を行うため、ＤＦＡの終了状態まで処理が到達すれば、ＸＭＬ文書が当該ＤＴＤに適合することが保証される。すなわち、ＸＭＬ文書を当該ＤＴＤで検証する処理を兼ねることとなる。
【００４８】
図２０は、ＸＭＬ検証部１４５０によるＤＴＤの判別処理を説明するフローチャートである。
図２０を参照すると、ＸＭＬ検証部１４５０は、まず状態ｓを初期状態Ｑ０とし（ステップ２００１）、初期状態Ｑ０から順に次の一連の処理を行う（ステップ２００２）。
まず、所定の要素（ここでは要素Ｅとする）が入力されるときの遷移規則（δ(s,E)=s'）が存在するならば、状態ｓから状態ｓ’に遷移する（ステップ２００３、２００４）。そのような遷移規則が存在しないならば、どのＤＴＤにも適合しないと判断して処理を終了する。
次に、遷移規則に付与されたビットベクトルのビットのうち１つのみが１であるならば、１が立っているビット位置に対応したＤＴＤを適合し得るＤＴＤとして選択する（ステップ２００５、２００６）。そして、状態ｓ’を改めて状態ｓとし、ステップ２００２に戻る（ステップ２００７）。状態ｓが終了状態であれば、処理を終了する（ステップ２００２）。なお、状態ｓが終了状態か否かの判断は、例えば各状態に終了状態か否かを識別するフラグを設定しておくことによって行う。
【００４９】
例えば、入力ＸＭＬ文書が図７に示したＸＭＬ文書である場合、要素Ａ、Ｂ、Ｄの順で要素の出現が入力され、上記の手順に従って処理が繰り返される。図１９のＤＦＡに従えば、状態は０→１→７と遷移し、終了状態に至る。
ここで、ＤＦＡを用いたＤＴＤの判別処理は、ＸＭＬ文書が適合すべきＤＴＤが一意に決定したところで処理をやめることもできる。例えば、図１９のＤＦＡにおいて、状態０から状態５へ遷移したならば、当該ＸＭＬ文書が適合すべきＤＴＤは図１５のＤ７に限定されるので、ここで処理をやめても良い。この場合、本実施の形態のＸＭＬ文書判定システムは、第１の実施の形態と同様に判定されたＤＴＤの種類を出力し、当該ＸＭＬ文書を処理するアプリケーションに渡す。
なお、この場合、状態５のあとで要素Ｇまたは要素Ｂ以外の要素が入力された場合や、要素Ｂが入力されて状態６に遷移した後で要素Ｄ以外の要素が入力された場合は、Ｄ７が適合しないこととなるので、当該ＸＭＬ文書を処理するアプリケーションなどにより、当該ＸＭＬ文書がＤ７に適合することを検証することが必要となる。ＸＭＬ検証部１４５０においてＤＦＡの終了状態までＤＴＤの判定を行う場合には、適合するＤＴＤが判別されたことによって、処理対象のＸＭＬ文書が判別されたＤＴＤに対して妥当（valid）であることも保証されるので、アプリケーションなどにおいて、検証を行う必要はない。
【００５０】
［第２の実施の形態の変形］
上述した第２の実施の形態は、ＮＦＡ及びＤＦＡにおいて状態遷移に対してビットベクトルを付与しているため、実装が複雑となり、コンピュータ装置による実際の処理が低速になりやすい。そこで、ビットベクトルを状態遷移ではなく状態に付与することを考える。
このようにすれば、ＮＦＡ及びＤＦＡでは状態遷移の数よりも状態の数の方が必ず少ないので、処理に必要とするハードウェア資源が少なくてすむ。また、状態にビットベクトルを付与する方が、コンピュータ装置におけるオートマトンの一般的な実現方法との親和性が良いため、実装が容易となる。
【００５１】
この変形例において、本実施の形態のＮＦＡ生成部１４２０は、ＤＴＤ格納部１４１０に格納されているＤＴＤのそれぞれに対応するＮＦＡを生成する。そして、各状態に対して、長さｍ（ｍはＤＴＤの数）のビットベクトルを付与する。また、各状態に終了状態か否かを識別するための終了可能フラグを付与する。図２１は、図１５に示した３つのＤＴＤ（Ｄ５、Ｄ６、Ｄ７）に関して、このようにして生成したＮＦＡを示す図である。図示の例では、終了可能フラグが［１］である状態が終了状態である。
次に、ＮＦＡ生成部１４２０は、生成したＮＦＡの和オートマトン（ＮＦＡ）を生成する。ただし、この和オートマトンは、ＤＴＤごとに生成した各ＮＦＡの先頭にε遷移で遷移する新たな初期状態を持つ点では図１７に示した和オートマトンと同様であるが、終了状態をε遷移を用いて１つにまとめることはしない。図２２は、図２１に示した３つのＮＦＡの和オートマトンを示す図である。図２２に示すように、図２１の各ＮＦＡに対応する３つの終了状態が存在する。
【００５２】
次に、ＤＦＡ生成部１４３０は、ＮＦＡ生成部１４２０にて生成された和オートマトンをＤＦＡに変換する。
まず、２つの操作ε-closureWB(q)、ε-closureWB(T) を定義する。
ε-closureWB(q)（ｑはＮＦＡ中の所定の状態）は、
・状態集合ε-closure(q)
・ε-closure(q)の各状態に付与してあるビットベクトルの論理和
・ε-closure(q)の各状態に付与してある終了可能フラグの論理和
という３つの要素から構成される情報とする。
ε-closureWB(T)（Ｔは状態集合）は、Ｔ中の各状態ｑに対し、ε-closureWB(q)を求め、その結果である各要素の和を求めた結果とする。
図２３は、部分構成法を用いてＤＦＡを生成する場合における上記の操作を反映させて拡張したアルゴリズムを示す図である。
図２４は、以上の操作を反映させて、図２２の和オートマトンから生成されたＤＦＡを示す図である。
【００５３】
次に、ＸＭＬ検証部１４５０は、上記のようにして得られたＤＦＡを用いて、処理対象であるＸＭＬ文書が適合するＤＴＤを判別する。
図２５は、ＸＭＬ検証部１４５０によるＤＴＤの判別処理を説明するフローチャートである。
図２５を参照すると、ＸＭＬ検証部１４５０は、まず状態ｓを初期状態Ｑ０とし（ステップ２５０１）、初期状態Ｑ０から順に次の一連の処理を行う（ステップ２５０２）。
まず、着目中の状態ｓに付与されているビットベクトルのビットのうち１つのみが１であるならば、１が立っているビット位置に対応したＤＴＤを適合し得るＤＴＤとして選択する（ステップ２５０３、２５０４）。
次に、所定の要素（ここでは要素Ｅとする）が入力されるときの遷移規則（δ(s,E)=s'）が存在するならば、状態ｓから状態ｓ’に遷移する（ステップ２５０５、２５０６）。そのような遷移規則が存在しないならば、どのＤＴＤにも適合しないと判断して処理を終了する。
状態ｓから状態ｓ’に遷移したならば、当該状態ｓ’を改めて状態ｓとし、ステップ２５０２に戻る（ステップ２５０７）。状態ｓが終了状態であれば、当該状態ｓに付与されているビットベクトルにおいて１が立っているビット位置に対応したＤＴＤを適合し得るＤＴＤとして選択し、処理を終了する（ステップ２５０２、２５０８）。
【００５４】
ＤＴＤの数をｍとした場合、第１の実施の形態におけるインデックスを作るのに要する時間は、Ｏ(ｍ＊ｋ)程度である。ここで、Ｏ(ｍ＊ｋ)とは、ｍ＊ｋの定数倍以内の時間で計算できることを意味する。また、ｋは、要素１つからなる規則の抽出、要素２つからなる規則の抽出というように図３に示したフローチャートの処理を繰り返す回数である。各ＤＴＤに固有の要素が多く存在すれば、それだけインデックスを生成する手間が少なくなり処理に要する時間も短くなる。インデックスから判別規則を作るのに要する時間も、Ｏ(ｎ)程度である。
一方、第２の実施の形態は、ＮＦＡ及びＤＦＡを作成するために、より多くの手間を要する。一般に、ＮＦＡを生成するには、正則表現ｒの長さに比例する時間Ｏ(｜ｒ｜)を要する。したがって、例えば、各ＤＴＤの正規表現の平均長さがｌとすると、ＮＦＡを生成するのに要する時間は、Ｏ(ｎ＊ｌ)程度である。一般的には、ｌの値はｋの値よりも大きいと考えられるので、ＸＭＬ文書が適合すべきＤＴＤの判別を行う前の準備（判別規則またはＤＦＡを生成する処理）の段階では、第１の実施の形態の方が効率がよい。
また、実際にＸＭＬ文書が適合すべきＤＴＤを判別する段階では、第２の実施の形態では状態遷移表（ＤＦＡ）をメモリに保存して用いるため、使用するメモリ空間のコストが第１の実施の形態に比べて大きくなる。
【００５５】
しかしながら、第１の実施の形態は、処理対象であるＸＭＬ文書が所定のＤＴＤに適合する可能性があるかどうかを判別するに過ぎず、当該ＸＭＬ文書が判別されたＤＴＤに本当に適合するかどうかは、validatingＸＭＬプロセッサなどを用いて実際に検証してみなければならない。
これに対し、第２の実施の形態は、ＤＦＡの終了状態まで達した時点で、処理対象であるＸＭＬ文書が判別されたＤＴＤに適合することが保証される。
【００５６】
したがって、実際のコンピュータ装置への実装には、これらの利害を鑑みて所望の手法を選択すればよい。
なお、いずれの実施の形態においても、アプリケーションによるＸＭＬ文書の処理を実行する前段階で動作するものである。したがって、既存のシステム構成やＸＭＬプロセッサの変更を要することなく、各実施の形態における構成要素を追加することで実現される。
【００５７】
なお、上述した各実施の形態では、要素の出現およびその並びを判別の基準としているが、属性定義についても同様の手法が適用可能である。ただし、属性では並び順に意味がないため、属性の出現、および固定された属性値が判別規則となり得る。
また、上記の実施の形態では、所定のＸＭＬ文書が所定のＤＴＤに適合するかどうかを調べる上で、適合し得るＤＴＤを判別する場合について説明したが、ＤＴＤ以外の他の構造型定義（例えばXML Schema）や、ＸＭＬ以外の他の構造化言語（例えばＨＴＭＬ）において、所定の文書が所定の構造型定義に適合するかどうかを判別する場合にも利用することができるのは言うまでもない。
【００５８】
【発明の効果】
以上説明したように、本発明によれば、ある構造型定義の集合が与えられているという前提で、受け取ったＸＭＬ文書がその中のどの構造型定義に適合するかを求める必要がある場合に、かかる処理を高速に行うことが可能となる。
また、本発明によれば、既存のシステム構成やＸＭＬプロセッサの実装に影響を与えることなく、かかる処理を行うシステムを実現することが可能となる。
【図面の簡単な説明】
【図１】  第１の実施の形態によるＸＭＬ文書判定システムを実現するのに好適なコンピュータ装置のハードウェア構成の例を模式的に示す図である。
【図２】  第１の実施の形態によるＸＭＬ文書判定システムの構成を説明する図である。
【図３】  第１の実施の形態における判別規則生成部の動作を説明するフローチャートである。
【図４】  第１の実施の形態におけるＸＭＬ文書の判定処理の流れを説明する図である。
【図５】  ＤＴＤの例を示す図である。
【図６】  処理対象であるＸＭＬ文書の例を示す図である。
【図７】  処理対象であるＸＭＬ文書の他の例を示す図である。
【図８】  図５のＤＴＤに関して要素１個からなる規則によるインデックスを示す図である。
【図９】  図８のインデックスから得られる判別規則を示す図である。
【図１０】  図８のインデックスに対して要素２個からなる規則を加えたインデックスを示す図である。
【図１１】  図１０のインデックスから得られる判別規則を図９に反映させた図である。
【図１２】  図１１の判別規則に対して絞り込みを行った状態を示す図である。
【図１３】  図１２の判別規則から生成された、Ｄ１〜Ｄ４の４つのＤＴＤに関する判別規則ベースを示す図である。
【図１４】  第２の実施の形態によるＸＭＬ文書判定システムの構成を説明するブロック図である。
【図１５】  ＤＴＤの例を示す図である。
【図１６】  図１５のＤ５、Ｄ６、Ｄ７に対応するＮＦＡを示す図である。
【図１７】  図１６に示した３つのＮＦＡの和オートマトンを示す図である。
【図１８】  部分構成法を用いてＤＦＡを生成する場合における本実施の形態により拡張されたアルゴリズムを示す図である。
【図１９】  図１８のアルゴリズムに従って図１７のＮＦＡから生成されたＤＦＡを示す図である。
【図２０】  第２の実施の形態のＸＭＬ検証部によるＤＴＤの判別処理を説明するフローチャートである。
【図２１】  図１５のＤＴＤに関して生成されたＮＦＡを示す図である。
【図２２】  図２１に示したＮＦＡの和オートマトンを示す図である。
【図２３】  部分構成法を用いてＤＦＡを生成する場合における本実施の形態により拡張されたアルゴリズムを示す図である。
【図２４】  図２３のアルゴリズムを反映させて図２２の和オートマトンから生成されたＤＦＡを示す図である。
【図２５】  第２の実施の形態の変形例におけるＸＭＬ検証部によるＤＴＤの判別処理を説明するフローチャートである。
【符号の説明】
１０…判別規則生成部、２０…判別規則ベース格納部、３０…ＤＴＤ格納部、４０…ＸＭＬパーザ、５０…ＤＴＤ判別部、１０１…ＣＰＵ（中央処理装置）、１０２…Ｍ／Ｂ（マザーボード）チップセット、１０３…メインメモリ、１０５…ハードディスク、１４１０…ＤＴＤ格納部、１４２０…ＮＦＡ生成部、１４３０…ＤＦＡ生成部、１４５０…ＸＭＬ検証部
【図１】
0003888621.tif 000002
【図２】
0003888621.tif 000003
【図３】
0003888621.tif 000004
【図４】
0003888621.tif 000005
【図５】
0003888621.tif 000006
【図６】
0003888621.tif 000007
【図７】
0003888621.tif 000008
【図８】
0003888621.tif 000009
【図９】
0003888621.tif 000010
【図１０】
0003888621.tif 000011
【図１１】
0003888621.tif 000012
【図１２】
0003888621.tif 000013
【図１３】
0003888621.tif 000014
【図１４】
0003888621.tif 000015
【図１５】
0003888621.tif 000016
【図１６】
0003888621.tif 000017
【図１７】
0003888621.tif 000018
【図１８】
0003888621.tif 000019
【図１９】
0003888621.tif 000020
【図２０】
0003888621.tif 000021
【図２１】
0003888621.tif 000022
【図２２】
0003888621.tif 000023
【図２３】
0003888621.tif 000024
【図２４】
0003888621.tif 000025
【図２５】
0003888621.tif 000026