JPWO2008146781A1 - 構造化文書変換装置 - Google Patents

構造化文書変換装置 Download PDF

Info

Publication number
JPWO2008146781A1
JPWO2008146781A1 JP2009516312A JP2009516312A JPWO2008146781A1 JP WO2008146781 A1 JPWO2008146781 A1 JP WO2008146781A1 JP 2009516312 A JP2009516312 A JP 2009516312A JP 2009516312 A JP2009516312 A JP 2009516312A JP WO2008146781 A1 JPWO2008146781 A1 JP WO2008146781A1
Authority
JP
Japan
Prior art keywords
output
difference information
information
structured document
conversion
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.)
Granted
Application number
JP2009516312A
Other languages
English (en)
Other versions
JP5206675B2 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2009516312A priority Critical patent/JP5206675B2/ja
Publication of JPWO2008146781A1 publication Critical patent/JPWO2008146781A1/ja
Application granted granted Critical
Publication of JP5206675B2 publication Critical patent/JP5206675B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/151Transformation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Document Processing Apparatus (AREA)

Abstract

構造化文書変換装置において、入力文書の全てを読み込むことなく、また、出力文書の全てを予めメモリ上に準備しておくことなく、変換処理を行うことを可能にする。変換規則を解析し、状態の遷移条件や要素の抽出方法を示す状態遷移規則140および出力構造化文書の雛形となる出力雛形150を作成する変換規則解析部121を備え、状態遷移部124は、逐次解析の結果に応じて、その状態遷移規則140に従った状態遷移をする中で、出力構造化文書に適用する必要のある情報を出力箇所と対応づけられた差分情報として抽出する。差分適用部125は、状態遷移部124の指示に従い出力雛形150を順次読み出して、状態遷移部124が抽出した差分情報が次に出力すべき要素であれば即座に適用させ、そうでなければ一時蓄積して、出力構造化文書の一部として成形された情報が得られなくなるまで逐次出力を行う。

Description

本発明は、構造化文書を変換するための構造化文書変換装置、構造化文書変換方法およびプログラムに関する。
逐次解析を可能とする構造化文書装置の一例が特許文献1および特許文献2に記載されている。
例えば、特許文献1に記載されている構造化文書変換装置に適用される変換方法は、変換後の構造化文書における全てのタグと変換対象の構造化文書における末端のタグとの対応関係を示すテンプレート情報と、変換対象の構造化対象における要素名をキーとして変換後の構造化文書の対応する要素名を検索するための検索テーブル情報とに基づいて、変換後の構造化文書における全てのタグ、変換対象の構造化文書における末端タグおよびその要素の値を、変換後の構造化文書におけるタグ配置順にそれぞれ対応づけた逆引き表情報を生成する。そして、この逆引き表情報に基づいて、変換後の構造化文書におけるタグ配置順で変換対象の構造化文書の対応するタグの要素の値を当てはめることにより、当該変換対象の構造化文書に対応した変換後の構造化文書を生成する。
また、例えば、特許文献2に記載されているデータ変換装置に適用される変換方法は、変換前データの構造を基本構造パタンの組み合わせとして表現した構造パタンと、タグ構造とに基づいて、変換前データの末端要素データ値を格納するデータ格納用配列の次元数を決定し、末端要素のデータ値をデータ格納用配列に格納する。そして、そのデータ格納用配列に格納された変換前データの末端要素のデータ値を変換命令に従って処理することにより、変換後データとして出力する。
また、非特許文献1には、別の構造化文書変換方法が示されている。非特許文献1に記載されている構造化文書変換方法では、構造化文書に対して逐次解析を行い、変換規則に従って逐次変換しつつ出力を行う。なお、変換前の文書順とは異なる順序で出力すべき情報は、変換規則においてバファリングを行っている。
特開2006−11549号公報 特開2006−163820号公報 Oliver Bavker、"STX−Transforming XML on the Fly−How STX Enables the Processing of Large documents"、[online]、XML Europe 2003、London、[平成19年4月20日検索]、インターネット、<URL:http://www.idealliance.org/papers/xmle03/slides/baeker/index.html>
第1の問題点は、特許文献1や特許文献2に示されている変換方法では、必ず全ての出力内容を蓄積する必要があり、計算機の記憶領域を大量に必要とするということである。その理由は、入力文書と出力文書に含まれる要素の順番が異なる場合があり、入力文書の全ての要素が揃わないと出力要素が揃っているかが判断できないためである。
第2の問題点は、非特許文献1に示されている変換方法では、入力文書と出力文書に含まれる要素の順序が異なる場合には、変換規則内にバッファリングの方法を記載する必要があり、変換規則の記載が複雑になるということである。その理由は、入力文書を逐次処理するため、変換規則にバッファリング指示がない要素を後から使用することができないためである。
第3の問題点は、特許文献1、特許文献2および非特許文献1に示されている変換方法では、標準仕様であるXSLT(eXtensible Stylesheet Language Tree construction)によって記載された変換規則を処理できないということである。その理由は、特許文献1および特許文献2に示されている方法では、入力として出力文書スキーマ(タグの定義等の構造情報)が必要となるが、XSLTには出力文書のスキーマが定義されていないためである。また、非特許文献1に示されている方法では、入力文書と出力文書に含まれる要素の順序が異なる場合には、変換規則内にバッファリングの方法を記載する必要があるが、XSLTでは順序に関する定義を記載することなく、順序の異なる変換が指示されるためである。
そこで、本発明は、必ずしも出力文書を全て蓄えるだけの記憶領域や、入力文書を全て読み込むだけの記憶領域を必要としなくても、逐次処理で変換を行える構造化文書変換装置、構造化文書変換方法およびプログラムを提供することを目的とする。
また、本発明は、入力文書と出力文書に含まれる要素の出現順序が異なる場合、すなわち、変換前の構造化形式と変換後の構造化形式とで同じ要素の出現順序が異なる場合であっても、変換規則には順序に関する情報を記載することなく、逐次処理で変換を行えるようにすることを目的とする。
また、本発明は、構造化文書に対し、XSLTで記述された変換規則に従って、逐次処理で変換を行えるようにすることを目的とする。
本発明による構造化文書変換装置は、構造化文書の文書構造を変換する構造化文書変換装置であって、所定の変換規則に基づいて、変換後構造化文書の雛形と、変換前構造化文書の文書構造に対応させた各状態に対し、入力構造化文書に対する逐次解析結果としての解析情報をイベントとする状態遷移規則であって、遷移先の状態と雛形に適用させる所定の差分情報として抽出する情報とを定めた状態遷移規則とを作成する変換規則解析部と、変換前構造化文書に対する逐次解析結果を示す解析情報を受け取ると、変換規則解析部によって作成された状態遷移規則に従い、状態を遷移させるとともに抽出すべき0個以上の差分情報を抽出する状態遷移部と、差分情報を蓄積する差分情報蓄積部と、雛形に対し、逐次、状態遷移部が抽出した差分情報または差分情報蓄積部に蓄積されている差分情報を適用させることで変換後構造化文書の一部として成形された情報を出力する差分適用部とを備え、差分適用部は、状態遷移部によって抽出された差分情報が、すぐに雛形に適用できる情報であれば該差分情報を適用して出力し、そうでなければ該差分情報を差分情報蓄積部に蓄積させて次の差分情報の抽出を待つことを特徴とする。
また、変換規則解析部は、変換後構造化文書において出力単位がひとかたまりのグループとなっている場合には、出力単位としてグループ化される部分構造毎に分割して雛形を作成し、変換規則解析部は、出力単位としてグループ化される部分構造の最初の要素に対応する状態に遷移したときに部分構造に対応する雛形を出力する旨を定めた状態遷移規則を作成し、状態遷移部は、状態遷移規則に従って出力対象とする雛形を指定してもよい。
また、構造化文書変換装置は、差分適用部が出力を中断している箇所と、該箇所に適用させる差分情報を示す情報とを記憶する出力中断箇所記憶部を備え、差分適用部は、逐次出力する過程で、雛形に対し差分情報蓄積部に蓄積されている差分情報を適用しても変換後構造化文書の一部として成形されている情報が得られない場合には逐次出力を中断して、中断した箇所とその個所に適用すべき差分情報を示す情報を出力中断箇所記憶部に記憶し、差分適用部は、状態遷移部によって抽出された差分情報の識別子と出力中断箇所記憶部に記憶されている差分情報を示す情報とに基づいて、該差分情報がすぐに雛形に適用できるか否かを判断してもよい。
また、変換規則解析部は、差分情報の抽出終了を識別するための条件を定めた状態遷移規則を作成し、状態遷移部は、状態遷移規則に従って差分情報の抽出終了を検出し、差分適用部は、状態遷移部によって現在出力を中断している箇所に適用すべき差分情報の抽出終了が検出された場合に、逐次出力を再開してもよい。
また、変換規則解析部は、変換前構造化文書の文書構造の規定として示される要素の最大出現回数または要素の出現順序に基づいて、差分情報の抽出終了を識別するための条件を定めた状態遷移規則を作成してもよい。
また、本発明による構造化文書変換方法は、構造化文書の文書構造を変換するための構造化文書変換方法であって、所定の変換規則に基づいて、変換後構造化文書の雛形と、変換前構造化文書の文書構造に対応させた各状態に対し、入力構造化文書に対する逐次解析結果としての解析情報をイベントとする状態遷移規則であって、遷移先の状態と雛形に適用させる所定の差分情報として抽出する情報とを定めた状態遷移規則とを作成し、変換前構造化文書に対する逐次解析結果を示す解析情報を受け取ると、変換規則解析部によって作成された状態遷移規則に従い、状態を遷移させるとともに抽出すべき0個以上の差分情報を抽出し、雛形に対し、逐次、状態遷移部が抽出した差分情報または所定の差分情報蓄積部に蓄積されている差分情報を適用させることで変換後構造化文書の一部として成形された情報を出力する過程で、抽出された差分情報が、すぐに雛形に適用できる情報であれば該差分情報を適用して出力し、そうでなければ該差分情報を差分情報蓄積部に蓄積させて次の差分情報の抽出を待つことを特徴とする。
また、構造化文書変換方法は、変換後構造化文書において出力単位がひとかたまりのグループとなっている場合に、出力単位としてグループ化される部分構造毎に分割して雛形を作成するとともに、出力単位としてグループ化される部分構造の最初の要素に対応する状態に遷移したときに部分構造に対応する雛形を出力する旨を定めた状態遷移規則を作成し、状態遷移に伴って状態遷移規則に従い、出力対象とする雛形を指定してもよい。
また、構造化文書変換方法は、雛形に対し差分情報蓄積部に蓄積されている差分情報を適用しても変換後構造化文書の一部として成形されている情報が得られない場合に、逐次出力を中断して、中断した箇所とその個所に適用すべき差分情報を示す情報を所定の出力中断箇所記憶部に記憶し、差分情報が抽出されると、抽出された差分情報の識別子と出力中断箇所記憶部に記憶されている差分情報を示す情報とに基づいて、該差分情報がすぐに雛形に適用できるか否かを判断してもよい。
また、構造化文書変換方法は、差分情報の抽出終了を識別するための条件を定めた状態遷移規則を作成し、状態遷移に伴って状態遷移規則に従い、差分情報の抽出終了を検出し、現在出力を中断している箇所に適用すべき差分情報の抽出終了が検出された場合に、雛形に対する逐次出力を再開してもよい。
また、構造化文書変換方法は、変換前構造化文書の文書構造の規定として示される要素の最大出現回数または要素の出現順序に基づいて、差分情報の抽出終了を識別するための条件を定めた状態遷移規則を作成してもよい。
また、本発明による構造化文書変換用プログラムは、構造化文書の文書構造を変換するための構造化文書変換用プログラムであって、コンピュータに、所定の変換規則に基づいて、変換後構造化文書の雛形と、変換前構造化文書の文書構造に対応させた各状態に対し、入力構造化文書に対する逐次解析結果としての解析情報をイベントとする状態遷移規則であって、遷移先の状態と雛形に適用させる所定の差分情報として抽出する情報とを定めた状態遷移規則とを作成する変換規則解析処理、変換前構造化文書に対する逐次解析結果を示す解析情報を受け取ると、変換規則解析部によって作成された状態遷移規則に従い、状態を遷移させるとともに抽出すべき0個以上の差分情報を抽出する状態遷移処理、および雛形に対し、逐次、状態遷移処理で抽出した差分情報または所定の差分情報蓄積部に蓄積されている差分情報を適用させることで変換後構造化文書の一部として成形された情報を出力する過程で、抽出された差分情報が、すぐに雛形に適用できる情報であれば該差分情報を適用して出力し、そうでなければ該差分情報を差分情報蓄積部に蓄積させて次の差分情報の抽出を待つ差分適用処理を実行させることを特徴とする。
また、構造化文書変換用プログラムは、コンピュータに、変換規則解析処理で、変換後構造化文書において出力単位がひとかたまりのグループとなっている場合には、出力単位としてグループ化される部分構造毎に分割して雛形を作成させるとともに、出力単位としてグループ化される部分構造の最初の要素に対応する状態に遷移したときに部分構造に対応する雛形を出力する旨を定めた状態遷移規則を作成させ、状態遷移処理で、状態遷移規則に従って出力対象とする雛形を指定させてもよい。
また、構造化文書変換用プログラムは、コンピュータに、差分適用処理で、雛形に対し差分情報蓄積部に蓄積されている差分情報を適用しても変換後構造化文書の一部として成形されている情報が得られない場合に、逐次出力を中断して、中断した箇所とその個所に適用すべき差分情報を示す情報を所定の出力中断箇所記憶部に記憶させるとともに、差分情報が抽出されると、抽出された差分情報の識別子と出力中断箇所記憶部に記憶されている差分情報を示す情報とに基づいて、該差分情報がすぐに雛形に適用できるか否かを判断させてもよい。
また、構造化文書変換用プログラムは、コンピュータに、変換規則解析処理で、差分情報の抽出終了を識別するための条件を定めた状態遷移規則を作成させ、状態遷移処理で、状態遷移規則に従って差分情報の抽出終了を検出させ、差分適用処理で、現在出力を中断している箇所に適用すべき差分情報の抽出終了が検出された場合に、雛形に対する逐次出力を再開させてもよい。
また、構造化文書変換用プログラムは、コンピュータに、変換規則解析処理で、変換前構造化文書の文書構造の規定として示される要素の最大出現回数または要素の出現順序に基づいて、差分情報の抽出終了を識別するための条件を定めた状態遷移規則を作成させてもよい。
本発明の第1の効果は、必ずしも出力文書を全て蓄えるだけの記憶容量も入力文書を全て読み込むだけの記憶領域も必要とせずに、変換処理を行えることにある。その理由は、入力文書の解析に逐次解析を利用し、受け取った解析結果に従って、出力可能な箇所を逐次出力し、すぐに出力可能でない情報のみを蓄積するように動作するためである。
第2の効果は、入力文書と出力文書に含まれる要素の出力順序が異なる場合でも、変換規則には入力の順序に関わらず、変換方法として個々の要素の対応関係を示す情報のみを記載することで、逐次出力することができることにある。その理由は、入力文書から抽出された差分情報を蓄積させるか否かを、変換規則に記された情報ではなく、現在出力を中断している箇所に該当するか否かによって判断するためである。
第3の効果は、標準仕様であるXSLTによって記載された変換規則に従って変換処理を行えることにある。その理由は、XSLTによって定義された情報のみを利用し、出力文書のスキーマも要素のバッファリング方法の指定も必要としないためである。
以下、本発明の実施の形態を図面を参照して説明する。
〔第1の実施の形態〕
図1は、本発明の第1の実施の形態における構造化文書変換システム100の構成例を示すブロック図である。図1に示す構造化文書変換システム100は、構造化文書解析部110と、構造化文書変換装置120と、構造化文書逐次出力部130とを備えている。
構造化文書変換装置120は、変換規則解析部121と、状態遷移規則蓄積部122と、出力雛形蓄積部123と、状態遷移部124と、差分適用部125と、差分情報蓄積部126と、出力中箇所記憶部127とを含む。
本構造化文書変換システム100は、入力構造化文書の逐次解析に対して可能な限りの出力構造化文書の逐次出力を実現するための方法を実現するものである。また、本構造化文書変換システム100に入力される変換規則には、変換後に生成されるべき構造化文書(出力構造化文書)の文書構造と、その文書構造に含まれる構成要素と入力される構造化文書(入力構造化文書)の文書構造に含まれる構成要素との対応関係とが含まれていればよい。例えば、変換規則は、出力構造化文書の文書構造を示す情報であって、その文書構造を構成する構成要素のうち、入力構造化文書から抽出される構成要素について、入力構造化文書の文書構造におけるどの構成要素に対応するかがわかるような記述形式で示されている情報であってもよい。
ここで、各蓄積部または記憶部に記憶される情報について説明する。
状態遷移規則蓄積部122は、変換規則解析部121によって作成される状態遷移規則140を蓄積する。状態遷移規則140とは、状態遷移部124が状態遷移処理を行う際の指針となる情報であって、入力構造化文書の文書構造に対応させて、どのような状態遷移をとりうるか、また各状態における少なくとも情報抽出に関する個別的な処理内容を定めた情報である。なお、入力構造化文書の文書構造に対応する雛形が複数存在する場合には、雛形出力に関する処理内容を定めた情報を含んでいてもよい。
図2は、ある構造化文書の階層構造に対応させた状態遷移の例を示す説明図である。図2に示す例は、変換規則によって、入力構造化文書に含まれる’/a/b1/c’(タグa中のタグb1中のタグc)と、’/a/b2/c’(タグa中のタグb2中のタグc)とについて処理する必要があることが示されている場合の状態遷移の例である。図2に示すように、変換規則解析部121は、変換規則で示される入力構造化文書の階層構造(’/a/b1/c’および’/a/b2/c’)において、ルートから処理する必要があるタグに行き着くまでの各階層における各タグ(要素の開始タグ)を状態遷移のイベントとする各状態を定義する。なお、本例では、予め状態0を初期状態(対象文書入力前)、状態1をルートに対応づけている。その上で、具体的には、ルートにおいてタグaの開始にもとづく状態1からの遷移先の状態2、タグa中においてタグb1の開始にもとづく状態2からの遷移先の状態3、タグa中においてタグb2の開始にもとづく状態2からの遷移先の状態4、タグa中のタグb1中においてタグcの開始にもとづく状態3からの遷移先の状態5、タグa中のタグb2中においてタグcの開始にもとづく状態4からの遷移先の状態6を定義する。すなわち、各状態は各階層における各要素の処理中を表し、該当する要素の処理中に下位要素の開始を受け付けた場合にその下位要素を状態遷移のイベントとする状態(下位要素の処理中状態)に遷移する。なお、要素の終了を受け付けた場合に巻き戻し(状態遷移前の状態に戻すことをいう。)を行うことで、処理中であった要素の上位要素の処理中状態に戻る。
このような遷移条件の状態を定めることによって、現在解析処理中の要素が入力構造化文書中のどこの階層に位置しているかが、状態識別子によって特定できるようになる。これは、入力構造化文書において同じ名前の要素(例えば、要素c)が出現するような場合であっても、それ以前にどのような要素が出現していたかを確認することなく(すなわち、逐次出力される現要素の情報だけで)、処理対象の要素であるか否かを判断することができることを示している。
なお、要素の終了等によって行われる巻き戻しのように、入力構造化文書の文書構造に依存しない状態遷移規則については、状態遷移規則蓄積部122に蓄積させる状態遷移規則140の対象外としてもよい。
図3は、状態遷移規則140の一例を示す説明図である。図3に示すように、状態遷移規則140は、状態番号と、入力情報と、遷移先情報と、出力雛形情報と、抽出情報とを対応づけた情報であってもよい。なお、図3では、要素の開始によって行われる状態遷移についての状態遷移規則140の例を示している。ここで、状態番号は、状態を識別するための情報である。また、入力情報は、状態遷移の条件になるイベントであり、本実施の形態では、解析情報に相当する。また、遷移先情報は、その入力情報を受け取った際に遷移先の状態を示す情報である。また、出力雛形情報は、遷移先情報で示される状態に遷移したときに出力すべき雛形を示す情報である。また、抽出情報は、遷移先情報で示される状態に遷移したときに抽出すべき情報を差分情報と対応づけて示す情報である。なお、XSLTにおけるvalue−ofやcopy−ofのように選択された要素を抽出する必要がある場合には、雛形へ適用するための情報が示されていればよい。
ここで、差分情報とは、出力構造化文書に適用される、入力構造化文書の一部を抽出した部分構造によって示される情報であって、出力構造化文書と雛形との差分となる情報である。好適な例は、連続する逐次解析結果列(入力構造化文書の一部を抽出した部分文書を示す情報)である。例えば、単一の要素名、属性名、要素値、属性値である場合もあるし、階層構造において上位に位置する要素のように、複数の要素名、属性名、要素値、属性値を構成要素とする構造をもった情報である場合もある。また、別の好適な例は、逐次解析結果列から構築される出力構造化文書の部分構造をなす情報である。例えば、入力構造化文書のある要素の対して所定の計算をした結果の情報である場合もある。なお、差分情報は、例えば特開2004−302799号公報に示されているような、圧縮技術を用いて使用記憶領域を削減した構造化文書の一部であってもよい。
本実施の形態では、差分情報に対し、その差分情報を識別するための識別子(差分情報ID)を付与することによって、後述する出力雛形150における適用箇所と状態遷移規則140の抽出情報で示される差分情報とを対応づけている。なお、同じ差分情報が複数箇所に適用される場合には、1つの差分情報IDに対し、その適用回数を付与するなどして、その差分情報がその箇所に適用させた後も保持しておくべきか否かを管理するようにしてもよい。
例えば、図3には、状態番号=1と、入力情報=”a”、遷移先情報=2と、出力雛形情報=”template−2”と、抽出情報=”@at→ID:2”とが対応づけられて登録されている。これは、状態1において、要素aの開始を受け付けた場合に状態2に遷移すること、および状態2に遷移したときに、現要素aの属性”at”の値を差分情報ID=1として抽出することを示している。なお、抽出情報における”→”は差分情報との対応関係を示す記号として用いている。なお、A→Bで、入力構造化文書におけるAという情報を差分情報ID=Bで識別される差分情報として抽出することを示している。また、”.”は現要素(すなわち、遷移先の状態に対応づけられた要素)を、”@xx”は現要素に属する属性xxを、”node()”は現要素に属する全ての属性、要素、文字列を示す特殊記号として用いている。なお、”.→B+”で、その状態で抽出される全ての情報を差分情報ID=Bに追加形式で抽出していくことを示す例も考えられる。
出力雛形蓄積部123は、変換規則解析部121によって作成される出力雛形150を蓄積する。出力雛形150とは、入力構造化文書に対応する出力構造化文書を作成するための雛形(文書情報)であって、出力構造化文書の文書構造に従って出力構造化文書の枠組が記述されるとともに、入力構造化文書から抽出される構成要素を反映させる箇所等、差分情報が必要な箇所についてその差分情報を適用するための情報が示されている雛形である。なお、出力雛形を蓄積させる好適な例は、出力構造化文書を示す逐次解析結果列の形式で保持し、差分情報が必要な箇所は差分情報を識別するための識別子と対応づけた特別な擬似解析結果列を割り当てることである。なお、特別な疑似解析結果列とは、その構造化文書に対応する逐次解析結果列の標準仕様には定義されていないが、その標準仕様を模した解析結果列をいう。XMLにおける例は、SAX(The Simple API for XML)を模した解析結果列である。なお、差分情報が必要な箇所についての記述は、差分適用部125が作成した雛形を逐次読み出しした際に、その箇所が、差分情報が必要な箇所であって、どのような差分情報が必要であるかがわかるような形式であればよい。
なお、変換規則解析部121は、出力構造化文書を逐次出力可能にするために、出力構造化文書の文書構造において繰り返し出力する単位(XSLTにおけるtemplate、for−each、copy−of等)が示されている場合など、出力単位がひとかたまりのグループとして処理される旨の記述がある場合には、出力単位となるグループ毎に(出力単位としてグループ化される部分構造毎に)分割した雛形を作成する。そのような場合には、それらの雛形の大枠となる雛形も作成する。なお、大枠の雛形においては、入れ子構造となっている分割された雛型が1つの差分情報として認識される。
差分情報蓄積部126は、入力構造化文書を逐次解析する過程で状態遷移規則140の抽出情報によって抽出された差分情報であって、雛形の逐次出力処理における出力箇所に対応しない差分情報を蓄積する。具体的には、当該差分情報を適用させるべき箇所が、逐次出力される雛形において出力を中断している箇所よりも後に出現する差分情報を蓄積する。なお、一旦差分情報蓄積部126に蓄積された差分情報は、出力中断箇所に該当する差分情報の抽出終了によって再開される雛形の逐次出力処理において、その出力箇所に対応することによりその蓄積が解除される。
出力中箇所記憶部127は、雛形の逐次読み出し処理における差分情報の適用待ち箇所となった雛形の出力中断箇所を記憶する。なお、出力中箇所記憶部127は、雛形の箇所が特定される情報だけでなく、その箇所に適用させるべき差分情報に関する情報も含んでいてもよい。
次に、各処理部の処理の概略を説明する。
構造化文書解析部110は、入力構造化文書に対して逐次解析を行い、その結果検出される入力構造化文書に出現する要素や内容についての情報を、逐次、解析情報として出力する。構造化文書解析部110は、例えば、SAXに対応するXMLパーサであってもよい。具体的には、入力構造化文書を順次読み込み、入力構造化文書の文書構造に係る所定の記述を検出した場合に、その都度、その記述によって示される文書構造に関する情報や、要素・内容についての情報をイベントとして出力すればよい。本実施の形態では、少なくとも要素の開始(どの要素が開始されたかを含む)、要素の終了(どの要素が開始されたかを含む)、ドキュメントの終了が解析情報として逐次出力される。なお、文字列値や入力構造化文書の要素をそのまま用いるような文書構造に変換したい場合などには、要素内容の文字列や、要素に属している属性の内容等、上記に限らず入力構造化文書から取得できる他の情報についても解析情報として出力できるようにする。なお、必ずしもイベントとして出力しなくてもよく、例えば、ある部分構造から得られる解析情報について、その部分構造に関する情報をイベントとして出力する際に当該部分構造に係る解析情報を参照するための参照情報を付加して出力するなどして、当該部分構造の解析が完了するまでの間、別途取得できるようにしてもよい。
変換規則解析部121は、入力構造化文書を所望の文書構造を有する構造化文書に変換するための変換規則が入力されると、その変換規則に基づいて、状態遷移規則140と出力雛形150とを作成する。また、作成した状態遷移規則140および出力雛形150を、それぞれ状態遷移規則蓄積部122および出力雛形蓄積部123に蓄積する。
状態遷移部124は、逐次出力される解析情報を受け取って、その解析情報で示される情報を入力情報に対し定められている状態遷移規則に従って、状態遷移処理を行う。状態遷移処理では、遷移先状態が定められている場合には状態を遷移させ、出力すべき雛形が定められている場合にはその雛形を出力させ、抽出すべき情報が定められている場合にはその情報を差分情報として抽出し、雛形へ適用可能な場合は雛形へ適用させる。状態遷移規則は、状態遷移規則蓄積部122に蓄積されている、入力構造化文書の文書構造に対応させて作成された状態遷移規則140を用いる。なお、入力構造化文書の文書構造に依存しない状態遷移処理については、予め定められた状態遷移規則に従って処理することも可能である。状態遷移部124は、要素終了を示す入力情報を受け付けた場合には、その要素が差分情報を抽出する要素であった場合には、差分情報の適用を終了させる。また、雛形の出力処理および差分情報の雛形への適用処理は、状態遷移部124は差分適用部125にその指示(雛形出力指示、差分適用指示)を出すことによって、実際の処理は差分適用部125に行わせる。
差分適用部125は、状態遷移部124からの指示に従い、雛形出力処理および差分情報の雛形への適用処理(以下、差分情報適用処理という。)を行う。雛形出力処理では、出力対象となっている雛形を出力雛形蓄積部123から逐次読み出して、出力構造化文書の一部として成形された情報が得られなくなるまで、その情報を逐次出力する。差分適用部125は、雛形に対し逐次解析を行った結果、差分情報が必要でない箇所であれば、読み出した雛形の情報をそのまま出力構造化文書の一部として成形された情報として出力すればよい。また、差分情報が必要な箇所であっても、その箇所に適用させる差分情報が差分情報蓄積部126に蓄積されている場合には、その差分情報をその箇所に適用させた上で出力構造化文書の一部として成形された情報として出力すればよい。なお、差分適用部125は、出力構造化文書の一部として成形された情報が得られなくなった場合、すなわち、差分情報が必要な箇所に該当する差分情報が差分情報蓄積部126に蓄積されていない場合には、逐次出力を中断し、その箇所を現在出力中の箇所として出力中箇所記憶部127に記憶させる。
また、差分情報適用処理では、抽出された差分情報が出力中箇所記憶部127に記憶されている出力中の箇所に該当する差分情報であるか否かを判定し、該当する差分情報であった場合にはその箇所に差分情報を適用させる。なお、雛形出力処理を再開するのは、該当する差分情報の抽出が終了した旨の通知を受けたときである。ここで、繰り返し出力されるような雛形を1つの差分情報として認識している場合において、その差分情報の抽出終了については、その雛形に対応させた部分構造における上位要素の終了を検出したときに通知するようにすればよい。一方、該当する差分情報でなかった場合には、差分情報蓄積部126に蓄積させる。なお、差分情報を出力中箇所に適用させた場合であっても、その差分情報IDに適用回数が付与されている場合には、その適用回数に達するまでは、その差分情報を、差分情報蓄積部126に蓄積させておく。
構造化文書逐次出力部130は、差分適用部125から逐次出力される情報を文書化して逐次出力する。なお、差分適用部125から逐次出力される情報は、入力文書構造から抽出される差分情報が適用された、出力構造化文書の一部をなす情報であるから、その情報を文書化して逐次出力することは、出力文書構造の部分文書を逐次出力することを意味している。なお、差分適用部125が、出力構造化文書の一部として成形された情報を文書化された状態で出力することも可能である。そのような場合には、構造化文書逐次出力部130は省略される。
次に、図4〜図8のフローチャートを参照して本実施の形態の動作について説明する。図4は、構造化文書変換システム100の概略動作を示すフローチャートである。まず、構造化文書変換システム100に変換規則が入力されると、変換規則解析部121がその変換規則を解析する(ステップA1)。変換規則解析部121は、受け取った変換規則に基づいて、状態の遷移条件や要素の抽出方法を示す状態遷移規則140および出力構造化文書の雛形となる出力雛形150を作成し(ステップA2)、それぞれ状態遷移規則蓄積部122、出力雛形蓄積部123に蓄積させる(記憶させる)。
例えば、変換規則解析部121は、変換規則で示される出力構造化文書の文書構造をなす情報を出力単位となるグループ毎に分解して雛形の原型とし、その中で差分情報が必要な箇所については、その差分情報を識別するための識別子を割り当てているとともにその識別子と対応づけた特別な疑似解析結果列で記述することによって、出力雛形150を作成すればよい。
また、例えば、変換規則解析部121は、変換規則で示される入力構造化文書の階層構造の各階層における各要素に対し状態番号を割り当てて状態を定義し、その各状態について、当該状態に対応する要素の下位に位置する要素(下位要素という。)がある場合には、その下位要素の開始を示す入力情報に対応づけて、その下位要素に対応する状態番号を遷移情報として状態遷移規則140に登録すればよい。また、変換規則解析部121は、出力雛形150を作成する際に割り当てた識別子によって示される差分情報について、その差分情報が抽出できる入力構造化文書の文書構造における位置(要素)を特定し、その差分情報を抽出するための情報を、その要素に対応する状態における抽出情報として状態遷移規則140に登録すればよい。
次に、構造化文書変換システムは、入力構造化文書待ち状態に入り(ステップA3)、入力構造化文書が入力されると、構造化文書変換処理を開始する(ステップA4)。
図5は、構造化文書変換処理(図3のステップA4)の処理の流れの一例を示すフローチャートである。構造化文書変換処理では、まず、構造化文書解析部110が、入力構造化文書に対し逐次解析を行って(ステップB1)、その解析結果を逐次、解析情報として出力雛形蓄積部123に出力する。状態遷移部124は、逐次出力される解析情報に従って、現在の状態に応じた状態遷移処理を行う。状態遷移部124は、まず、解析情報の種類によって処理を分岐する(ステップB2)。
解析情報が要素の開始を示している場合には、まず、新たに開始された要素が状態を遷移すべき要素であるか否かを判定する(ステップB3)。状態を遷移すべき要素でない場合(ステップB3のNo)にはステップB8に進み、状態を遷移すべき要素である場合には(ステップB3のYes)、状態遷移規則140に従って、次の状態に遷移させる。なお、状態を遷移すべき要素であるか否か及び遷移先の状態は、現在の状態に対応する状態遷移規則140における遷移先情報の内容を確認すればよい。
次に、出力すべき雛形があるか否かを確認し(ステップB5)、出力すべき雛形がある場合には(ステップB5のYes)、状態遷移規則140に従って、新規雛形を出力対象に設定して(ステップB6)、雛形出力指示を差分適用部125に伝える。差分適用部125は、状態遷移部124からの指示に従い、出力対象となった新規雛形に対し、雛形出力処理を行う(ステップB7)。なお、出力すべき雛形があるか否かおよびどの雛形を出力対象とするかについては、現在の状態に対応する状態遷移規則140における出力雛形情報の内容を確認すればよい。また、雛形出力処理の詳細フローは後述する。
次に、ステップB8では、抽出すべき情報があるか否かを確認し(ステップB8)、抽出すべき情報がある場合には(ステップB8のYes)、その情報を差分情報としてその識別子と対応づけて抽出し(ステップB9)、抽出した差分情報についての差分適用指示を差分適用部125に伝える。差分適用部125は、状態遷移部124からの指示に従い、抽出された差分情報について出力中の雛形に対する差分情報適用処理を行う(ステップB10)。なお、抽出すべき情報があるか否か及びどのような情報をどの差分情報として抽出するかについては、現在の状態に対応する状態遷移規則140における抽出情報の内容を確認すればよい。また、差分情報適用処理の詳細フローは後述する。
また、ステップB2において、解析情報が要素の終了を示している場合には、状態遷移部124は、まず、該要素がステップB4で状態を遷移させた要素である場合(ステップB11のYes)には、遷移させる前の状態に巻き戻し(ステップB12)、また、差該要素に対応する状態が差分情報を抽出すべき状態であった場合には、その差分情報の抽出が終了したことを差分適用部125に伝える(ステップB13)。差分適用部125は、該差分情報が現在処理中の箇所に該当する場合には、その抽出終了を受けて雛形出力処理を再開させる(ステップB14)。
また、ステップB2において、解析情報が文書の終了を示している場合には、当該構造化文書変換処理を終了する。
次に、各処理の詳細フローについて説明する。図6は、雛形出力処理の処理フローの一例を示すフローチャートである。差分適用部125は、状態遷移部124から雛形の出力を指示されると、図6に示すように、出力対象となっている雛形を出力雛形蓄積部123から逐次読み出して、差分情報が不要な部分を逐次出力する(ステップD1)。従って、差分情報が必要な箇所が出現するまで、雛形が逐次出力されることになる。ここで、出現した箇所において必要な差分情報が、差分情報蓄積部126に蓄積されている場合は(ステップD2)、雛形にその差分情報を適用して出力し(ステップD3)、次の差分情報が必要になる箇所まで、同様の処理を行う。必要な差分情報が蓄積されていない箇所が出現した場合には、その箇所を出力中箇所として、出力中箇所記憶部127に記憶し(ステップD4)、処理を終了する。ここで、出力中箇所記憶部127には、例えば、その箇所に適用すべき差分情報の識別子も合わせて記憶しておけばよい。
図7は、差分情報適用処理の処理フローの一例を示すフローチャートである。差分適用部125は、状態遷移部124から差分情報の雛形への適用を指示されると、図7に示すように、その差分情報が出力中箇所記憶部127に記憶されている箇所に該当する差分情報であるか否かによって、すぐに出力できるか否かを判断し(ステップC1)、すぐに適用できると判断した場合には、雛形に適用させ逐次出力する(ステップC2)。すぐに適用できるか否かは、抽出された差分情報の識別子と、出力中箇所記憶部127に記憶されている差分情報の識別子と比較することによって判断すればよい。一方、すぐに出力できないと判断した場合には、その差分情報を差分情報蓄積部126に蓄積させて(ステップC4)、処理を終了する。
次に、本実施の形態の効果について説明する。本実施の形態では、差分適用部125において出力可能な部分は逐次出力し、逐次出力ができなくなった時点でその箇所を記憶しておき、次の差分情報が到着すると現在処理中の箇所に該当するか否かを判断し該当する場合は逐次出力するように構成されているため、差分情報蓄積部126に蓄積する差分情報を少なく保つことができ、入力文書全体もしくは出力文書全体を保持するよりも少ない記憶領域を使用して変換処理を実行することができる。
また、本実施の形態では、状態遷移部124において、出力構造化文書の文書構造と要素の対応関係とで示される変換規則に基づいて作成される状態遷移規則に従い、逐次解析結果から、雛形への適用箇所がわかるような差分情報を抽出するように構成されているため、差分適用部125は、入力文書内の順序と出力文書に出力する順序に関する情報を必要とせずに、その差分情報が現在処理中の箇所に該当するか否かを判断することができる。従って、変換規則には、変換方法として、個々の要素の対応関係のみを記載することで、入力文書内の順序と出力文書に出力する順序が異なる場合でも、少ない記憶領域を使用した変換処理を行うことができる。
また、本実施の形態では、さらに、あらかじめ変換規則を受け取り、次に入力構造化文書を受け取り、変換結果を出力構造化文書として出力するように構成されているため、標準的な構造化文書変換装置と置き換えて使用することができる。
〔第2の実施の形態〕
次に、本発明の第2の実施の形態について説明する。図8は、第2の実施の形態による構造化文書変換システム200の構成例を示すブロックである。なお、図8において、図1に示す第1の実施の形態による構造化文書変換システム100と同様の構成をなす部分については、同一の符号を付与してその詳細な説明を省略している。
図8に示すように、構造化文書変換システム200は、構造化文書解析部110と、構造化文書変換装置220と、構造化文書逐次出力部130とを備える。また、構造化文書変換装置220は、変換規則解析部221と、状態線規則蓄積部122と、出力雛形蓄積部123と、状態遷移部224と、差分適用部225と、差分情報蓄積部126と、出力中箇所記憶部127とを含む。
なお、本実施の形態は、さらに、入力構造化文書の文書構造に関する情報(入力構造化文書構造情報)を入力する例である。
変換規則解析部221は上述した変換規則解析部121と同様の機能を有し、さらに入力構造化文書構造情報を受け取ると、その入力構造化文書構造情報で示される入力構造化文書の文書構造に従って、状態遷移規則140に差分情報終了通知規則が追加された状態遷移規則240を作成する機能を有する。差分情報終了通知規則とは、ある差分情報が抽出しおわったことを識別するための条件である。変換規則解析部221は、入力構造化文書構造情報によって、要素の最大出現回数が示された場合は、該要素が最大出現回数分出現したときに該要素に係る差分情報の抽出終了を検出できる旨の差分情報終了通知規則を追加すればよい。要素の最大出現回数はXMLSchemaでは、maxOccurs属性として示される。また、入力構造化文書構造情報によって、要素の出現順序が記載されている場合は、該要素の次の要素が出現したときに前の要素に係る差分情報の抽出終了を検出できる旨の差分情報終了通知規則を追加すればよい。要素の出現順序は、XMLSchemaではsequence要素として示される。
図9は、差分情報終了通知規則を追加した状態遷移規則240の例を示す説明図である。なお、差分情報終了通知規則は、図9に示す状態遷移規則140において終了通知情報として登録されている。例えば、図9では、遷移先状態2における終了通知情報に、”→@at”が示されているが、これは状態2に1回でも遷移すれば、終了通知情報で示されている差分情報(属性atに係る差分情報)の抽出終了を検出できることを意味している。なお、遷移先状態5における終了通知情報”#10→c”は、状態5に10回遷移したときに、終了通知情報で示されている差分情報(要素cに係る差分情報)の抽出終了を検出できることを意味している。また、例えば、図9では、遷移先状態4における終了通知情報に、”→b1”と示されているが、これは、状態4に1回でも遷移すれば、終了通知情報で示されている差分情報(要素b1に係る差分情報)の抽出終了を検出できることを意味している。なお、図9では、差分情報となる要素の記号を示しているが、差分情報IDと対応づけて登録してもよい。
状態遷移部224は上述した状態遷移部124と同様の機能を有し、さらに各状態遷移処理で、状態遷移規則240に追加された差分情報終了通知規則に従って、差分情報の抽出終了を示す終了通知を差分適用部225に伝える機能を有する。
差分適用部225は上述した差分適用部125と同様の機能を有し、さらに差分情報終了通知を受け取ると、その終了通知で示される差分情報の抽出が終了したことを検出して、必要に応じて雛形出力処理を再開させる機能を有する。
次に、図10および図11のフローチャートを参照して本実施の形態の動作について説明する。図10は、本実施の形態による構造化文書変換処理の処理の流れの一例を示すフローチャートである。なお、図10において、図5に示した構造化文書変換処理の処理フローと同様の動作については、同一の符号を付与してその詳細な説明を省略している。
図10のステップE1において、状態遷移部224は、現在の状態に対応する差分情報終了通知規則に基づいて、差分情報の抽出終了を検出した場合には(ステップE1)、その差分情報の終了を示す終了情報を225に通知する。差分適用部225は、終了情報を受け取ると、差分情報終了処理を行う(ステップE2)。
図11は、差分情報終了処理の処理フローの一例を示すフローチャートである。差分適用部225は、状態遷移部224から終了情報を受け取ると、受け取った終了情報が出力中箇所記憶部127に記載されている出力中の箇所に該当する差分情報に関するものである場合は(ステップF1)、該当差分情報の出力は全て完了したと判断し、続きの雛形を出力するために雛形出力処理を再開する(ステップF2)。雛形出力処理は、図6に示した雛形出力処理と同様である。一方、終了情報が出力中の箇所に該当しない差分情報に関するものである場合は、その終了情報を、終了を示す差分情報として差分情報蓄積部に保存し(ステップF3)、処理を終了する。
このように、本実施の形態によれば、例えば、要素の終了の解析結果を待たずに終了情報を受け取ることができたり、いくつ出現するかわからないような要素に対し変換処理を行うような場合であっても、その上位要素の終了の解析結果を待たずに終了情報を受け取ることができたりするため、より早く雛形出力処理を再開させることができる。従って、その間の差分情報を蓄積させる量を削減できるようになる。
〔第3の実施の形態〕
次に、本発明の第3の実施の形態について説明する。図12は、第3の実施の形態による構造化文書変換システム300の構成例を示すブロック図である。なお、図12において、図1に示す構造化文書変換システム100と同様の構成をなす部分については、同一の符号を付与してその詳細な説明を省略している。
本実施の形態は、第1の実施の形態における構造化文書変換装置120の各手段の動作をプログラムにより実現した場合に、構造化文書変換装置120がそのプログラムを読み込んで動作するコンピュータである場合の構成例である。
構造化文書変換装置320は、制御部328と記憶装置329を備える。
記憶装置329には、制御部328に、第1の実施の形態における構造化文書変換装置120が備える各蓄積部または記憶部(状態遷移規則蓄積部122、出力雛形蓄積部123、差分情報蓄積部126、出力中箇所記憶部127)を記憶装置329内に構築させ、また、構造化文書変換装置120が備える各処理部(変換規則解析部121、状態遷移部124、状態遷移部124)の処理を実行させるためのプログラムが格納されている。
制御部328は、記憶装置329から上記プログラムを読み出し、そのプログラムに従って動作する。具体的には、制御部328は、そのプログラムに従って、記憶装置329内に状態遷移規則蓄積部122、出力雛形蓄積部123、差分情報蓄積部126、出力中箇所記憶部127を構築する。また、制御部328は、記憶装置329にデータを読み出しながら、または書き込みながら、第1の実施の形態における変換規則解析部121、状態遷移部124、状態遷移部124による処理と同一の処理を実行する。
なお、図8に示した第2の実施の形態における構造化文書変換装置220についても本実施の形態と同様に制御部328と記憶装置329によって実施することが可能である。
次に、具体的な例(第1の具体例)を用いて本発明の実施の形態の動作を説明する。本例では、第2の実施の形態に示した構造化文書変換システム200を用いてXML文書をXSLTで記載された変換規則に従って変換する例を示す。
図13は本例における変換規則を示したXSLT文書である。また、図14は本例における入力構造化文書構造情報を示したXMLSchema文書である。
これらの入力を受け取った変換規則解析部221は、状態遷移規則240、出力雛形250を作成する。図15は、本例で作成される状態遷移規則240の例である。また、図16は、本例で作成される出力雛形250の例である。
図13に示すXSLT文書では、出力単位がひとかたまりのグループとして処理される”template”、”for−each”、”copy−of”が示されているので、図16に示すような3つの分割された出力雛形250が作成される。すなわち、”RootTemplate”と”Template−1”と”Template−2”の3つの雛形が出力雛形250としてが作成される。そして、各雛形において差分情報を適用させるべき箇所は、PATCH:XXで示される差分情報IDと対応づけて、SAXを模した特別な疑似解析列で記述されている。
また、図13に示すXSLT文書を見ると、出力構造化文書において、”/”、”/a/b1/c@name”、”/a/b1/c/d2”、”/a/b1/c/d1”、”/a/b2/c以下”が変換処理に必要であることがわかるので、これら要素を識別可能にする状態を定義する。本例では、図15に示すように、初期状態0、ルート(”/”)に対応する状態1、ルートにおいてタグaの開始にもとづく状態1からの遷移先の状態2、タグa中においてタグb1の開始にもとづく状態2からの遷移先の状態3、タグa中においてタグb2の開始にもとづく状態2からの遷移先の状態4、タグa中のタグb1中においてタグcの開始にもとづく状態3からの遷移先の状態5、タグa中のタグb2中においてタグcの開始にもとづく状態4からの遷移先の状態6を定義している。なお状態が定義されれば、各階層関係に従って、状態番号、入力情報および遷移先情報を登録すればよい。なお、本例では、タグd1,d2にもとづく状態5からの遷移先の状態の定義を省略している。これは、タグd1,d2に対し必要な処理がその内容を抽出するだけであり、その下位要素についての処理を必要としないからである。
そして、各状態において抽出すべき情報が、雛形における適用箇所と対応づけて抽出情報に登録される。ここでは、PATCH:XXで示される差分情報IDと対応づけて登録される。
また、図14に示すXMLSchema文書を見ると、要素b2内の要素cの属性としてmaxOccurs=10が定義されているので、状態遷移規則240には、要素cが10回以上出現するとそれ以上要素cが出現しないことを示す情報が終了通知情報に登録される。
さらに図11を見ると、sequence要素によって、要素aの中で要素b1と要素b2はこの順でのみ出現することが記載されているため、状態遷移規則440には要素b2が出現すると要素b1がそれ以上出現しないことを示す情報が終了通知情報に登録される。要素d2と要素d1の順序についても同様である。さらに、属性はその要素に対し一度しか出現しないため@nameについても終了通知情報に登録される。
次に図17に示す入力XMLが入力構造化文書として入力された場合を例にして、構造化文書変換処理の処理フローを説明する。入力XMLに対する逐次解析が始まると(ステップB1)、まず初めに、文書要素開始(ここでは、ルート要素’/’の開始を意味する)の解析情報が得られるため、状態遷移部224は、その種別による分岐によって、ステップB3に進む。状態遷移規則240を見ると、初期状態0においてルート要素’/’の開始を示す入力情報を得ると、状態1に遷移する旨が規定されているため、状態を遷移すべき要素であると判断し、状態を状態1に遷移させる(ステップB3,B4)。次に、状態1に遷移したときに出力すべき雛形として、”RootTemplate”が登録されているため、出力対象の雛形をRootTemplateと設定し、そのRootTemplateに対する雛形出力処理を差分適用部225に実行させる(ステップB6,B7)。
差分適用部225は、出力雛形蓄積部123に蓄積されているRootTemplateを順次読み込み、差分情報が不要な箇所を逐次出力していく(ステップD1)。ここで、2番目の”{Template−1}”を読み込んだときに、差分情報が必要な箇所が出現するため、それまで読み込んだ情報である1番目の要素”<root>”が出力される。なお、2番目の箇所に該当する差分情報(ここでは、Template−1に適用される全差分情報を意味する)は、差分情報蓄積部126に蓄積されていないため(ステップD2のNo)、RootTemplateの2番目の要素が出力中であることがわかる情報(例えば、RootTemplateについての出力箇所として”2,Template−1”)を出力中箇所として出力中箇所記憶部127に記憶する(ステップD4)。ここまで、文書要素開始の解析情報に係る状態遷移処理が終了するため、ステップB2に戻る。
次に、要素a開始の解析情報を得る。状態遷移部224は、その種別による分岐によって、ステップB3に進む。そして、状態遷移規則240に従って、状態1から状態2に遷移する。なお、状態2においては、出力雛形情報も抽出情報も終了通知情報も登録されていないので、このまま要素a開始の解析情報に係る状態遷移処理を終了する。さらに、要素b1の開始の解析情報を得ると、同様に、状態2から状態3に遷移する。
次に、要素c開始の解析情報を得ると、状態遷移部224は、状態遷移規則240に従い、状態を状態5に遷移させる。そして、出力対象とする雛形をTemplate−1に設定し、そのTemplate−1に対する雛形出力処理を差分適用部225に実行させる(ステップB6,B7)。
差分適用部225は、出力雛形蓄積部123に蓄積されているTemplate−1を順次読み込み、差分情報が不要な箇所を逐次出力していく(ステップD1)。ここで、3番目の”{value−of(Pacth:1−1)}”を読み込んだときに、差分情報が必要な箇所が出現するため、それまで読み込んだ情報である1番目の要素”<x1>”〜2番目の要素”<y1>”までが出力される。なお、3番目の箇所に該当する差分情報Pacth:1−1は、差分情報蓄積部126に蓄積されていないため(ステップD2のNo)、Template−1の3番目の要素が出力中であることがわかる情報(例えば、Template−1についての出力箇所として”3,Pacth1−1”)を出力中箇所として出力中箇所記憶部127に記憶する(ステップD4)。
続いて、抽出すべき情報が状態遷移規則240に記載されているので(ステップB8)、属性nameの値(”name−1”)を差分情報Patch:1−1として抽出し(ステップB9)、その差分情報Patch:1−1を雛形へ適用させる差分適用処理を差分適用部225に実行させる(ステップB10)。
差分適用部225は、通知された差分情報Patch:1−1は、出力中箇所記憶部127に記載されている現在の出力中箇所に該当する差分情報であるので(ステップC1のYes)、その差分情報の内容(属性nameの値である”name−1”)をその箇所に適用させて、出力する(ステップC2)。ここでは、現在の出力中箇所で読み込んだ疑似解析結果列”{value−of(Pacth:1−1)}”の”Pacth:1−1”の部分に、差分情報の内容を代入することで、出力構造化文書の一部をなす情報(”name−1”)として出力できる。
続いて、状態遷移規則240に終了情報が記載されているため(ステップE1)、属性nameに係る差分情報(すなわち、差分情報Pacth:1−1)の差分終了処理を差分適用部225に行わせる(ステップE2)。差分適用部225は、差分情報Pacth:1−1は現在出力中の箇所に該当する差分情報に関するものであるため(ステップF1)、該当差分情報の出力は全て完了したと判断し、続きの雛形を出力するために雛形出力処理を再開する(ステップF2)。雛形出力処理の再開によって、Template−1の4番目の要素”</y1>”〜5番目の要素”<y2>”が出力され、6番目の要素である”{value−of(Pacth:1−2)}”を読み込んで、逐次出力を中断する。ここで、出力中箇所記憶部127には、Template−1についての出力箇所として”6,Pacth1−2”が記憶される。
次に、要素d1開始の解析情報を得ると、状態は遷移させずに、抽出情報に従って差分情報Patch:1−3として要素d1の値(”text−1”)を抽出し(ステップB9)、その差分情報Patch:1−3を雛形へ適用させる差分適用処理を差分適用部225に実行させる(ステップB10)。差分適用部225は、差分情報Patch:1−3は、出力中箇所記憶部127に記載されている現在の出力中箇所に該当する差分情報Pacth:1−2でないので(ステップC1のNo)、その差分情報を差分情報蓄積部126に蓄積する(ステップF3)。本例では、ここで初めて差分情報蓄積部126に差分情報が蓄積されることになる。例えば、差分情報蓄積部126には、Patch:1−3=”text−1”といった情報で蓄積してもよい。
次に、要素d2の解析情報を得ると、状態は遷移させずに、抽出情報に従って差分情報Patch:1−2として要素d2の値(”text−2”)を抽出する(ステップB9)。差分適用部225は、差分情報Patch:1−2は、現在の出力中箇所に該当する差分情報であるので(ステップC1のYes)、その差分情報の内容(要素d2の値である”text−2”)をその箇所に適用させて、出力する(ステップC2)。ここでは、”text−2”が出力される。
また、終了通知情報に従って、要素d1に係る差分情報の出現が終了したことを検出し、要素d1に係る差分情報(差分情報Patch:1−3)の終了を示す終了情報を通知して、差分適用部225に差分情報終了処理を実行させる(ステップE1,E2)。差分適用部225は、差分情報Patch:1−3は、出力中の箇所に該当しない差分情報であるので、その終了情報を一種の差分情報として差分情報蓄積部126に蓄積させる(ステップF1のNo,F3)。
次に、要素c終了の解析情報を得ると(ステップB10)、状態遷移した要素なので(ステップB11)、状態遷移前の状態3に戻し(ステップB12)、要素cに対応する状態で抽出すべき差分情報(ここでは、差分情報Patch:1−2,Patch:1−3)の抽出が終了したことを差分適用部225に伝える(ステップB13)。差分適用部225は、差分情報Patch:1−2が、出力中の箇所に該当する差分情報であるので((ステップF1のYes)、該当差分情報の出力は全て完了したと判断し、続きの雛形を出力するために雛形出力処理を再開する(ステップF2)。ここでは、Template−1の7,8番目の要素が出力される。次に、差分情報蓄積部126に蓄積されている差分情報Patch:1−3を用いて9番目の要素が出力される。次に、10,11番目の要素が出力される。ここで、差分情報Template−1としての出力が全て完了する。このことにより、RootTemplateの3番目の要素である差分情報Template−1の出力が全て完了したと判断し、最終的に、RootTemplateの3番目の要素を読み出した時点で、”3,Template−2”がRootTemplateについての出力中箇所として出力中箇所記憶部127に記憶される(ステップD4)。
以降同様に状態遷移処理を行うことで、要素’/a/b2/c’について出力し、最終的に、図16に示す出力文書構造が出力され、文書終了の解析情報を得ると(ステップB14)、変換処理を完了する(ステップB15)。
本発明は、複数のサービスを接続するために、入力構造化文書の構造を変換して適合させるエンタープライズサービスバスといった用途に適用できる。また、検索結果を成型してクライアントに返還するXMLデータベースといった用途にも適用可能である。例えば、渡された検索式式に合致した構造化文書を入力として、クライアントが認識できる出力構造化文書に変換して返すようなXMLデータベースや、検索式としてのXSLTが指定され、その時点でのデータベース内のXML文書を入力文書として、指定されたXSLTによって変換した結果を検索結果として返すようなXMLデータベースとしても適用可能である。
この出願は、2007年5月28日に出願された日本出願特願2007−139934を基礎とする優先権を主張し、その開示を全てここに取り込む。
第1の実施の形態における構造化文書変換システム100の構成例を示すブロック図である。 ある構造化文書の階層構造に対応させた状態遷移の例を示す説明図である。 状態遷移規則140の一例を示す説明図である。 構造化文書変換システム100の概略動作を示すフローチャートである。 構造化文書変換処理の処理の流れの一例を示すフローチャートである。 雛形出力処理の処理フローの一例を示すフローチャートである。 差分情報適用処理の処理フローの一例を示すフローチャートである。 第2の実施の形態による構造化文書変換システム200の構成例を示すブロックである。 差分情報終了通知規則を追加した状態遷移規則240の例を示す説明図である。 第2の実施の形態による構造化文書変換処理の処理の流れの一例を示すフローチャートである。 第2の実施の形態による差分情報終了処理の処理フローの一例を示すフローチャートである。 第3の実施の形態による構造化文書変換システム300の構成例を示すブロック図である。 第1の具体例における変換規則を示したXSLT文書である。 第1の具体例における入力構造化文書構造情報を示したXMLSchema文書である。 第1の具体例で作成される状態遷移規則240の例である。 第1の具体例で作成される出力雛形250の例である。 第1の具体例における入力構造化文書の例を示すXML文書である。 第1の具体例で作成される出力構造化文書の例を示すXML文書である。
100,200,300 構造化文書変換システム
110 構造化文書解析部
120,220,320 構造化文書変換装置
121,221 変換規則解析部
122,222 状態遷移規則蓄積部
123 出力雛形蓄積部
124,224 状態遷移部
125,225 差分適用部
126 差分情報蓄積部
127 出力中箇所記憶部
130 構造化文書逐次出力部
【0002】
順序で出力すべき情報は、変換規則においてバファリングを行っている。
特許文献1:特開2006−11549号公報
特許文献2:特開2006−163820号公報
非特許文献1:Oliver Becker、”STX−Transforming XML on the Fly−How STX Enables the Processing of Large documents”、[online]、XML Europe 2003、London、[平成19年4月20日検索]、インターネット、<URL:http://www.idealliance.org/papers/xmle03/slides/becker/index.html>
発明の開示
発明が解決しようとする課題
[0006]
第1の問題点は、特許文献1や特許文献2に示されている変換方法では、必ず全ての出力内容を蓄積する必要があり、計算機の記憶領域を大量に必要とするということである。その理由は、入力文書と出力文書に含まれる要素の順番が異なる場合があり、入力文書の全ての要素が揃わないと出力要素が揃っているかが判断できないためである。
[0007]
第2の問題点は、非特許文献1に示されている変換方法では、入力文書と出力文書に含まれる要素の順序が異なる場合には、変換規則内にバッファリングの方法を記載する必要があり、変換規則の記載が複雑になるということである。その理由は、入力文書を逐次処理するため、変換規則にバッファリング指示がない要素を後から使用することができないためである。
[0008]
第3の問題点は、特許文献1、特許文献2および非特許文献1に示されている変換方法では、標準仕様であるXSLT(eXtensible Stylesheet Language Treeconstruction)によって記載された変換規則を処理できないということである。その理由は、特許文献1および特許文献2に示されている方法では、入力として出力文書スキーマ(タグの定義等の構造情報)が必要となるが、XSLTには出力文書のスキーマが定義されていないためである。また、非特許文献1に示されている方法では、入力文書と出力文書に含まれる要素の順序が異なる場合には、変換規則内にバッファリングの方法を記載する必要があるが、XSLTでは順序に関する定義を記載することなく、順序の異なる変換が指示されるためである。
【0007】
の出現順序に基づいて、差分情報の抽出終了を識別するための条件を定めた状態遷移規則を作成させてもよい。
発明の効果
[0027]
本発明の第1の効果は、必ずしも出力文書を全て蓄えるだけの記憶容量も入力文書を全て読み込むだけの記憶領域も必要とせずに、変換処理を行えることにある。その理由は、入力文書の解析に逐次解析を利用し、受け取った解析結果に従って、出力可能な箇所を逐次出力し、すぐに出力可能でない情報のみを蓄積するように動作するためである。
[0028]
第2の効果は、入力文書と出力文書に含まれる要素の出力順序が異なる場合でも、変換規則には入力の順序に関わらず、変換方法として個々の要素の対応関係を示す情報のみを記載することで、逐次出力することができることにある。その理由は、入力文書から抽出された差分情報を蓄積させるか否かを、変換規則に記された情報ではなく、現在出力を中断している箇所に該当するか否かによって判断するためである。
[0029]
第3の効果は、標準仕様であるXSLTによって記載された変換規則に従って変換処理を行えることにある。その理由は、XSLTによって定義された情報のみを利用し、出力文書のスキーマも要素のバッファリング方法の指定も必要としないためである。
発明を実施するための最良の形態
[0030]
以下、本発明の実施の形態を図面を参照して説明する。
[0031]
〔第1の実施の形態〕
図1は、本発明の第1の実施の形態における構造化文書変換システム100の構成例を示すブロック図である。図1に示す構造化文書変換システム100は、構造化文書逐次解析部110と、構造化文書変換装置120と、構造化文書逐次出力部130とを備えている。
[0032]
構造化文書変換装置120は、変換規則解析部121と、状態遷移規則蓄積部122と、出力雛形蓄積部123と、状態遷移部124と、差分適用部125と、差分情報蓄積部126と、出力中箇所記憶部127とを含む。
[0033]
本構造化文書変換システム100は、入力構造化文書の逐次解析に対して可能な
【0010】
抽出した部分構造によって示される情報であって、出力構造化文書と雛形との差分となる情報である。好適な例は、連続する逐次解析結果列(入力構造化文書の一部を抽出した部分文書を示す情報)である。例えば、単一の要素名、属性名、要素値、属性値である場合もあるし、階層構造において上位に位置する要素のように、複数の要素名、属性名、要素値、属性値を構成要素とする構造をもった情報である場合もある。また、別の好適な例は、逐次解析結果列から構築される出力構造化文書の部分構造をなす情報である。例えば、入力構造化文書のある要素の対して所定の計算をした結果の情報である場合もある。なお、差分情報は、例えば特開2004−302799号公報に示されているような、圧縮技術を用いて使用記憶領域を削減した構造化文書の一部であってもよい。
[0041]
本実施の形態では、差分情報に対し、その差分情報を識別するための識別子(差分情報ID)を付与することによって、後述する出力雛形(図16)における適用箇所と状態遷移規則140の抽出情報で示される差分情報とを対応づけている。なお、同じ差分情報が複数箇所に適用される場合には、1つの差分情報IDに対し、その適用回数を付与するなどして、その差分情報がその箇所に適用させた後も保持しておくべきか否かを管理するようにしてもよい。
[0042]
例えば、図3には、状態番号=2と、入力情報=”b1”、遷移先情報=3と、出力雛形情報=”template−2”と、抽出情報=”@at→ID:2”とが対応づけられて登録されている。これは、状態2において、要素b1の開始を受け付けた場合に状態3に遷移すること、および状態3に遷移したときに、現要素aの属性”at”の値を差分情報ID=2として抽出することを示している。なお、抽出情報における”→”は差分情報との対応関係を示す記号として用いている。なお、A→Bで、入力構造化文書におけるAという情報を差分情報ID=Bで識別される差分情報として抽出することを示している。また、”.”は現要素(すなわち、遷移先の状態に対応づけられた要素)を、”@xx”は現要素に属する属性xxを、”node()”は現要素に属する全ての属性、要素、文字列を示す特殊記号として用いている。なお、”.→B+”で、その状態で抽出される全ての情報を差分情報ID=Bに追加形式で抽出していくことを示す例も考えられる。
[0043]
出力雛形蓄積部123は、変換規則解析部121によって作成される出力雛形(図
【0011】
16)を蓄積する。出力雛形(図16)とは、入力構造化文書に対応する出力構造化文書を作成するための雛形(文書情報)であって、出力構造化文書の文書構造に従って出力構造化文書の枠組が記述されるとともに、入力構造化文書から抽出される構成要素を反映させる箇所等、差分情報が必要な箇所についてその差分情報を適用するための情報が示されている雛形である。なお、出力雛形を蓄積させる好適な例は、出力構造化文書を示す逐次解析結果列の形式で保持し、差分情報が必要な箇所は差分情報を識別するための識別子と対応づけた特別な擬似解析結果列を割り当てることである。なお、特別な疑似解析結果列とは、その構造化文書に対応する逐次解析結果列の標準仕様には定義されていないが、その標準仕様を模した解析結果列をいう。XMLにおける例は、SAX(The Simple API for XML)を模した解析結果列である。なお、差分情報が必要な箇所についての記述は、差分適用部125が作成した雛形を逐次読み出しした際に、その箇所が、差分情報が必要な箇所であって、どのような差分情報が必要であるかがわかるような形式であればよい。
[0044]
なお、変換規則解析部121は、出力構造化文書を逐次出力可能にするために、出力構造化文書の文書構造において繰り返し出力する単位(XSLTにおけるtemplate、for−each、copy−of等)が示されている場合など、出力単位がひとかたまりのグループとして処理される旨の記述がある場合には、出力単位となるグループ毎に(出力単位としてグループ化される部分構造毎に)分割した雛形を作成する。そのような場合には、それらの雛形の大枠となる雛形も作成する。なお、大枠の雛形においては、入れ子構造となっている分割された雛型が1つの差分情報として認識される。
[0045]
差分情報蓄積部126は、入力構造化文書を逐次解析する過程で状態遷移規則140の抽出情報によって抽出された差分情報であって、雛形の逐次出力処理における出力箇所に対応しない差分情報を蓄積する。具体的には、当該差分情報を適用させるべき箇所が、逐次出力される雛形において出力を中断している箇所よりも後に出現する差分情報を蓄積する。なお、一旦差分情報蓄積部126に蓄積された差分情報は、出力中断箇所に該当する差分情報の抽出終了によって再開される雛形の逐次出力処理において、その出力箇所に対応することによりその蓄積が解除される。
[0046]
出力中箇所記憶部127は、雛形の逐次読み出し処理における差分情報の適用待
【0012】
ち箇所となった雛形の出力中断箇所を記憶する。なお、出力中箇所記憶部127は、雛形の箇所が特定される情報だけでなく、その箇所に適用させるべき差分情報に関する情報も含んでいてもよい。
[0047]
次に、各処理部の処理の概略を説明する。
[0048]
構造化文書逐次解析部110は、入力構造化文書に対して逐次解析を行い、その結果検出される入力構造化文書に出現する要素や内容についての情報を、逐次、解析情報として出力する。構造化文書逐次解析部110は、例えば、SAXに対応するXMLパーサであってもよい。具体的には、入力構造化文書を順次読み込み、入力構造化文書の文書構造に係る所定の記述を検出した場合に、その都度、その記述によって示される文書構造に関する情報や、要素・内容についての情報をイベントとして出力すればよい。本実施の形態では、少なくとも要素の開始(どの要素が開始されたかを含む)、要素の終了(どの要素が開始されたかを含む)、ドキュメントの終了が解析情報として逐次出力される。なお、文字列値や入力構造化文書の要素をそのまま用いるような文書構造に変換したい場合などには、要素内容の文字列や、要素に属している属性の内容等、上記に限らず入力構造化文書から取得できる他の情報についても解析情報として出力できるようにする。なお、必ずしもイベントとして出力しなくてもよく、例えば、ある部分構造から得られる解析情報について、その部分構造に関する情報をイベントとして出力する際に当該部分構造に係る解析情報を参照するための参照情報を付加して出力するなどして、当該部分構造の解析が完了するまでの間、別途取得できるようにしてもよい。
[0049]
変換規則解析部121は、入力構造化文書を所望の文書構造を有する構造化文書に変換するための変換規則が入力されると、その変換規則に基づいて、状態遷移規則140と出力雛形(図16)とを作成する。また、作成した状態遷移規則140および出力雛形(図16)を、それぞれ状態遷移規則蓄積部122および出力雛形蓄積部123に蓄積する。
[0050]
状態遷移部124は、逐次出力される解析情報を受け取って、その解析情報で示される情報を入力情報に対し定められている状態遷移規則に従って、状態遷移処理を行う。状態遷移処理では、遷移先状態が定められている場合には状態を遷移させ、
【0014】
を再開するのは、該当する差分情報の抽出が終了した旨の通知を受けたときである。ここで、繰り返し出力されるような雛形を1つの差分情報として認識している場合において、その差分情報の抽出終了については、その雛形に対応させた部分構造における上位要素の終了を検出したときに通知するようにすればよい。一方、該当する差分情報でなかった場合には、差分情報蓄積部126に蓄積させる。なお、差分情報を出力中箇所に適用させた場合であっても、その差分情報IDに適用回数が付与されている場合には、その適用回数に達するまでは、その差分情報を、差分情報蓄積部126に蓄積させておく。
[0053]
構造化文書逐次出力部130は、差分適用部125から逐次出力される情報を文書化して逐次出力する。なお、差分適用部125から逐次出力される情報は、入力文書構造から抽出される差分情報が適用された、出力構造化文書の一部をなす情報であるから、その情報を文書化して逐次出力することは、出力文書構造の部分文書を逐次出力することを意味している。なお、差分適用部125が、出力構造化文書の一部として成形された情報を文書化された状態で出力することも可能である。そのような場合には、構造化文書逐次出力部130は省略される。
[0054]
次に、図4〜図8のフローチャートを参照して本実施の形態の動作について説明する。図4は、構造化文書変換システム100の概略動作を示すフローチャートである。まず、構造化文書変換システム100に変換規則が入力されると、変換規則解析部121がその変換規則を解析する(ステップA1)。変換規則解析部121は、受け取った変換規則に基づいて、状態の遷移条件や要素の抽出方法を示す状態遷移規則140および出力構造化文書の雛形となる出力雛形(図16)を作成し(ステップA2)、それぞれ状態遷移規則蓄積部122、出力雛形蓄積部123に蓄積させる(記憶させる)。
[0055]
例えば、変換規則解析部121は、変換規則で示される出力構造化文書の文書構造をなす情報を出力単位となるグループ毎に分解して雛形の原型とし、その中で差分情報が必要な箇所については、その差分情報を識別するための識別子を割り当てているとともにその識別子と対応づけた特別な疑似解析結果列で記述することによって、出力雛形(図16)を作成すればよい。
[0056]
また、例えば、変換規則解析部121は、変換規則で示される入力構造化文書の階
【0015】
層構造の各階層における各要素に対し状態番号を割り当てて状態を定義し、その各状態について、当該状態に対応する要素の下位に位置する要素(下位要素という。)がある場合には、その下位要素の開始を示す入力情報に対応づけて、その下位要素に対応する状態番号を遷移情報として状態遷移規則140に登録すればよい。また、変換規則解析部121は、出力雛形(図16)を作成する際に割り当てた識別子によって示される差分情報について、その差分情報が抽出できる入力構造化文書の文書構造における位置(要素)を特定し、その差分情報を抽出するための情報を、その要素に対応する状態における抽出情報として状態遷移規則140に登録すればよい。
[0057]
次に、構造化文書変換システムは、入力構造化文書待ち状態に入り(ステップA3)、入力構造化文書が入力されると、構造化文書変換処理を開始する(ステップA4)。
[0058]
図5は、構造化文書変換処理(図3のステップA4)の処理の流れの一例を示すフローチャートである。構造化文書変換処理では、まず、構造化文書逐次解析部110が、入力構造化文書に対し逐次解析を行って(ステップB1)、その解析結果を逐次、解析情報として出力雛形蓄積部123に出力する。状態遷移部124は、逐次出力される解析情報に従って、現在の状態に応じた状態遷移処理を行う。状態遷移部124は、まず、解析情報の種類によって処理を分岐する(ステップB2)。
[0059]
解析情報が要素の開始を示している場合には、まず、新たに開始された要素が状態を遷移すべき要素であるか否かを判定する(ステップB3)。状態を遷移すべき要素でない場合(ステップB3のNo)にはステップB8に進み、状態を遷移すべき要素である場合には(ステップB3のYes)、状態遷移規則140に従って、次の状態に遷移させる。なお、状態を遷移すべき要素であるか否か及び遷移先の状態は、現在の状態に対応する状態遷移規則140における遷移先情報の内容を確認すればよい。
[0060]
次に、出力すべき雛形があるか否かを確認し(ステップB5)、出力すべき雛形がある場合には(ステップB5のYes)、状態遷移規則140に従って、新規雛形を出力対象に設定して(ステップB6)、雛形出力指示を差分適用部125に伝える。差分適用部125は、状態遷移部124からの指示に従い、出力対象となった新規雛形に対し、雛形出力処理を行う(ステップB7)。なお、出力すべき雛形があるか否かおよびどの雛形を出力対象とするかについては、現在の状態に対応する状態遷移規則140における
【0018】
[0068]
また、本実施の形態では、さらに、あらかじめ変換規則を受け取り、次に入力構造化文書を受け取り、変換結果を出力構造化文書として出力するように構成されているため、標準的な構造化文書変換装置と置き換えて使用することができる。
[0069]
〔第2の実施の形態〕
次に、本発明の第2の実施の形態について説明する。図8は、第2の実施の形態による構造化文書変換システム200の構成例を示すブロックである。なお、図8において、図1に示す第1の実施の形態による構造化文書変換システム100と同様の構成をなす部分については、同一の符号を付与してその詳細な説明を省略している。
[0070]
図8に示すように、構造化文書変換システム200は、構造化文書逐次解析部110と、構造化文書変換装置220と、構造化文書逐次出力部130とを備える。また、構造化文書変換装置220は、変換規則解析部221と、状態線規則蓄積部122と、出力雛形蓄積部123と、状態遷移部224と、差分適用部225と、差分情報蓄積部126と、出力中箇所記憶部127とを含む。
[0071]
なお、本実施の形態は、さらに、入力構造化文書の文書構造に関する情報(入力構造化文書構造情報)を入力する例である。
[0072]
変換規則解析部221は上述した変換規則解析部121と同様の機能を有し、さらに入力構造化文書構造情報を受け取ると、その入力構造化文書構造情報で示される入力構造化文書の文書構造に従って、状態遷移規則140に差分情報終了通知規則が追加された状態遷移規則240を作成する機能を有する。差分情報終了通知規則とは、ある差分情報が抽出しおわったことを識別するための条件である。変換規則解析部221は、入力構造化文書構造情報によって、要素の最大出現回数が示された場合は、該要素が最大出現回数分出現したときに該要素に係る差分情報の抽出終了を検出できる旨の差分情報終了通知規則を追加すればよい。要素の最大出現回数はXMLSchemaでは、maxOccurs属性として示される。また、入力構造化文書構造情報によって、要素の出現順序が記載されている場合は、該要素の次の要素が出現したときに前の要素に係る差分情報の抽出終了を検出できる旨の差分情報終了通知規則を追加すればよい。要素の出現順序は、XMLSchemaではsequence要素として示される。
【0022】
開始にもとづく状態2からの遷移先の状態4、タグa中のタグb1中においてタグcの開始にもとづく状態3からの遷移先の状態5、タグa中のタグb2中においてタグcの開始にもとづく状態4からの遷移先の状態6を定義している。なお状態が定義されれば、各階層関係に従って、状態番号、入力情報および遷移先情報を登録すればよい。なお、本例では、タグd1,d2にもとづく状態5からの遷移先の状態の定義を省略している。これは、タグd1,d2に対し必要な処理がその内容を抽出するだけであり、その下位要素についての処理を必要としないからである。
[0091]
そして、各状態において抽出すべき情報が、雛形における適用箇所と対応づけて抽出情報に登録される。ここでは、PATCH:XXで示される差分情報IDと対応づけて登録される。
[0092]
また、図14に示すXMLSchema文書を見ると、要素b2内の要素cの属性としてmaxOccurs=10が定義されているので、状態遷移規則240には、要素cが10回以上出現するとそれ以上要素cが出現しないことを示す情報が終了通知情報に登録される。
[0093]
さらに図14を見ると、sequence要素によって、要素aの中で要素b1と要素b2はこの順でのみ出現することが記載されているため、状態遷移規則440には要素b2が出現すると要素b1がそれ以上出現しないことを示す情報が終了通知情報に登録される。要素d2と要素d1の順序についても同様である。さらに、属性はその要素に対し一度しか出現しないため@nameについても終了通知情報に登録される。
[0094]
次に図17に示す入力XMLが入力構造化文書として入力された場合を例にして、構造化文書変換処理の処理フローを説明する。入力XMLに対する逐次解析が始まると(ステップB1)、まず初めに、文書要素開始(ここでは、ルート要素’/’の開始を意味する)の解析情報が得られるため、状態遷移部224は、その種別による分岐によって、ステップB3に進む。状態遷移規則240を見ると、初期状態0においてルート要素’/’の開始を示す入力情報を得ると、状態1に遷移する旨が規定されているため、状態を遷移すべき要素であると判断し、状態を状態1に遷移させる(ステップB3,B4)。次に、状態1に遷移したときに出力すべき雛形として、”RootTemplate”が登録されているため、出力対象の雛形をRootTemplateと設定し、そのRootTemplate
【0026】
−2”がRootTemplateについての出力中箇所として出力中箇所記憶部127に記憶される(ステップD4)。
[0106]
以降同様に状態遷移処理を行うことで、要素’/a/b2/c’について出力し、最終的に、図18に示す出力文書構造が出力され、文書終了の解析情報を得ると(ステップB14)、変換処理を完了する(ステップB15)。
産業上の利用可能性
[0107]
本発明は、複数のサービスを接続するために、入力構造化文書の構造を変換して適合させるエンタープライズサービスバスといった用途に適用できる。また、検索結果を成型してクライアントに返還するXMLデータベースといった用途にも適用可能である。例えば、渡された検索式式に合致した構造化文書を入力として、クライアントが認識できる出力構造化文書に変換して返すようなXMLデータベースや、検索式としてのXSLTが指定され、その時点でのデータベース内のXML文書を入力文書として、指定されたXSLTによって変換した結果を検索結果として返すようなXMLデータベースとしても適用可能である。
[0108]
この出願は、2007年5月28日に出願された日本出願特願2007−139934を基礎とする優先権を主張し、その開示を全てここに取り込む。
図面の簡単な説明
[0109]
[図1]第1の実施の形態における構造化文書変換システム100の構成例を示すブロック図である。
[図2]ある構造化文書の階層構造に対応させた状態遷移の例を示す説明図である。
[図3]状態遷移規則140の一例を示す説明図である。
[図4]構造化文書変換システム100の概略動作を示すフローチャートである。
[図5]構造化文書変換処理の処理の流れの一例を示すフローチャートである。
[図6]雛形出力処理の処理フローの一例を示すフローチャートである。
[図7]差分情報適用処理の処理フローの一例を示すフローチャートである。
[図8]第2の実施の形態による構造化文書変換システム200の構成例を示すブロックである。
[図9]差分情報終了通知規則を追加した状態遷移規則240の例を示す説明図であ
【0027】
る。
[図13]第1の具体例における変換規則を示したXSLT文書である。
[図14]第1の具体例における入力構造化文書構造情報を示したXMLSchema文書である。
[図15]第1の具体例で作成される状態遷移規則240の例である。
[図16]第1の具体例で作成される出力雛形250の例である。
[図17]第1の具体例における入力構造化文書の例を示すXML文書である。
[図18]第1の具体例で作成される出力構造化文書の例を示すXML文書である。
符号の説明
[0110]
100,200,300 構造化文書変換システム
110 構造化文書逐次解析部
120,220,320 構造化文書変換装置
121,221 変換規則解析部
122,222 状態遷移規則蓄積部
123 出力雛形蓄積部
124,224 状態遷移部
125,225 差分適用部
126 差分情報蓄積部
127 出力中箇所記憶部
130 構造化文書逐次出力部

Claims (15)

  1. 構造化文書の文書構造を変換する構造化文書変換装置であって、
    所定の変換規則に基づいて、変換後構造化文書の雛形と、変換前構造化文書の文書構造に対応させた各状態に対し、入力構造化文書に対する逐次解析結果としての解析情報をイベントとする状態遷移規則であって、遷移先の状態と前記雛形に適用させる所定の差分情報として抽出する情報とを定めた状態遷移規則とを作成する変換規則解析部と、
    前記変換前構造化文書に対する逐次解析結果を示す解析情報を受け取ると、前記変換規則解析部によって作成された状態遷移規則に従い、状態を遷移させるとともに抽出すべき0個以上の差分情報を抽出する状態遷移部と、
    差分情報を蓄積する差分情報蓄積部と、
    前記雛形に対し、逐次、前記状態遷移部が抽出した差分情報または前記差分情報蓄積部に蓄積されている差分情報を適用させることで変換後構造化文書の一部として成形された情報を出力する差分適用部とを備え、
    前記差分適用部は、前記状態遷移部によって抽出された差分情報が、すぐに雛形に適用できる情報であれば該差分情報を適用して出力し、そうでなければ該差分情報を前記差分情報蓄積部に蓄積させて次の差分情報の抽出を待つ
    ことを特徴とする構造化文書変換装置。
  2. 変換規則解析部は、変換後構造化文書において出力単位がひとかたまりのグループとなっている場合には、出力単位としてグループ化される部分構造毎に分割して雛形を作成し、
    前記変換規則解析部は、出力単位としてグループ化される部分構造の最初の要素に対応する状態に遷移したときに前記部分構造に対応する雛形を出力する旨を定めた状態遷移規則を作成し、
    状態遷移部は、前記状態遷移規則に従って出力対象とする雛形を指定する
    請求項1に記載の構造化文書変換装置。
  3. 差分適用部が出力を中断している箇所と、該箇所に適用させる差分情報を示す情報とを記憶する出力中断箇所記憶部を備え、
    差分適用部は、逐次出力する過程で、雛形に対し差分情報蓄積部に蓄積されている差分情報を適用しても変換後構造化文書の一部として成形されている情報が得られない場合には逐次出力を中断して、中断した箇所とその個所に適用すべき差分情報を示す情報を前記出力中断箇所記憶部に記憶し、
    前記差分適用部は、状態遷移部によって抽出された差分情報の識別子と前記出力中断箇所記憶部に記憶されている差分情報を示す情報とに基づいて、該差分情報がすぐに雛形に適用できるか否かを判断する
    請求項1または請求項2に記載の構造化文書変換装置。
  4. 変換規則解析部は、差分情報の抽出終了を識別するための条件を定めた状態遷移規則を作成し、
    状態遷移部は、前記状態遷移規則に従って差分情報の抽出終了を検出し、
    差分適用部は、前記状態遷移部によって現在出力を中断している箇所に適用すべき差分情報の抽出終了が検出された場合に、逐次出力を再開する
    請求項1から請求項3のうちのいずれか1項に記載の構造化文書変換装置。
  5. 変換規則解析部は、変換前構造化文書の文書構造の規定として示される要素の最大出現回数または要素の出現順序に基づいて、差分情報の抽出終了を識別するための条件を定めた状態遷移規則を作成する
    請求項4に記載の構造化文書変換装置。
  6. 構造化文書の文書構造を変換するための構造化文書変換方法であって、
    所定の変換規則に基づいて、変換後構造化文書の雛形と、変換前構造化文書の文書構造に対応させた各状態に対し、入力構造化文書に対する逐次解析結果としての解析情報をイベントとする状態遷移規則であって、遷移先の状態と前記雛形に適用させる所定の差分情報として抽出する情報とを定めた状態遷移規則とを作成し、
    前記変換前構造化文書に対する逐次解析結果を示す解析情報を受け取ると、前記変換規則解析部によって作成された状態遷移規則に従い、状態を遷移させるとともに抽出すべき0個以上の差分情報を抽出し、
    前記雛形に対し、逐次、前記状態遷移部が抽出した差分情報または所定の差分情報蓄積部に蓄積されている差分情報を適用させることで変換後構造化文書の一部として成形された情報を出力する過程で、抽出された差分情報が、すぐに雛形に適用できる情報であれば該差分情報を適用して出力し、そうでなければ該差分情報を前記差分情報蓄積部に蓄積させて次の差分情報の抽出を待つ
    ことを特徴とする構造化文書変換方法。
  7. 変換後構造化文書において出力単位がひとかたまりのグループとなっている場合に、出力単位としてグループ化される部分構造毎に分割して雛形を作成するとともに、出力単位としてグループ化される部分構造の最初の要素に対応する状態に遷移したときに前記部分構造に対応する雛形を出力する旨を定めた状態遷移規則を作成し、
    状態遷移に伴って前記状態遷移規則に従い、出力対象とする雛形を指定する
    請求項6に記載の構造化文書変換方法。
  8. 雛形に対し差分情報蓄積部に蓄積されている差分情報を適用しても変換後構造化文書の一部として成形されている情報が得られない場合に、逐次出力を中断して、中断した箇所とその個所に適用すべき差分情報を示す情報を所定の出力中断箇所記憶部に記憶し、
    差分情報が抽出されると、抽出された差分情報の識別子と前記出力中断箇所記憶部に記憶されている差分情報を示す情報とに基づいて、該差分情報がすぐに雛形に適用できるか否かを判断する
    請求項6または請求項7に記載の構造化文書変換方法。
  9. 差分情報の抽出終了を識別するための条件を定めた状態遷移規則を作成し、
    状態遷移に伴って前記状態遷移規則に従い、差分情報の抽出終了を検出し、
    現在出力を中断している箇所に適用すべき差分情報の抽出終了が検出された場合に、雛形に対する逐次出力を再開する
    請求項6から請求項8のうちのいずれか1項に記載の構造化文書変換方法。
  10. 変換前構造化文書の文書構造の規定として示される要素の最大出現回数または要素の出現順序に基づいて、差分情報の抽出終了を識別するための条件を定めた状態遷移規則を作成する
    請求項9に記載の構造化文書変換方法。
  11. 構造化文書の文書構造を変換するための構造化文書変換用プログラムであって、
    コンピュータに、
    所定の変換規則に基づいて、変換後構造化文書の雛形と、変換前構造化文書の文書構造に対応させた各状態に対し、入力構造化文書に対する逐次解析結果としての解析情報をイベントとする状態遷移規則であって、遷移先の状態と前記雛形に適用させる所定の差分情報として抽出する情報とを定めた状態遷移規則とを作成する変換規則解析処理、
    前記変換前構造化文書に対する逐次解析結果を示す解析情報を受け取ると、前記変換規則解析部によって作成された状態遷移規則に従い、状態を遷移させるとともに抽出すべき0個以上の差分情報を抽出する状態遷移処理、および
    前記雛形に対し、逐次、前記状態遷移処理で抽出した差分情報または所定の差分情報蓄積部に蓄積されている差分情報を適用させることで変換後構造化文書の一部として成形された情報を出力する過程で、抽出された差分情報が、すぐに雛形に適用できる情報であれば該差分情報を適用して出力し、そうでなければ該差分情報を前記差分情報蓄積部に蓄積させて次の差分情報の抽出を待つ差分適用処理
    を実行させるための構造化文書変換用プログラム。
  12. コンピュータに、
    変換規則解析処理で、変換後構造化文書において出力単位がひとかたまりのグループとなっている場合には、出力単位としてグループ化される部分構造毎に分割して雛形を作成させるとともに、出力単位としてグループ化される部分構造の最初の要素に対応する状態に遷移したときに前記部分構造に対応する雛形を出力する旨を定めた状態遷移規則を作成させ、
    状態遷移処理で、前記状態遷移規則に従って出力対象とする雛形を指定させる
    請求項11に記載の構造化文書変換用プログラム。
  13. コンピュータに、
    差分適用処理で、雛形に対し差分情報蓄積部に蓄積されている差分情報を適用しても変換後構造化文書の一部として成形されている情報が得られない場合に、逐次出力を中断して、中断した箇所とその個所に適用すべき差分情報を示す情報を所定の出力中断箇所記憶部に記憶させるとともに、差分情報が抽出されると、抽出された差分情報の識別子と前記出力中断箇所記憶部に記憶されている差分情報を示す情報とに基づいて、該差分情報がすぐに雛形に適用できるか否かを判断させる
    請求項11または請求項12に記載の構造化文書変換用プログラム。
  14. コンピュータに、
    変換規則解析処理で、差分情報の抽出終了を識別するための条件を定めた状態遷移規則を作成させ、
    状態遷移処理で、前記状態遷移規則に従って差分情報の抽出終了を検出させ、
    差分適用処理で、現在出力を中断している箇所に適用すべき差分情報の抽出終了が検出された場合に、雛形に対する逐次出力を再開させる
    請求項11から請求項13のうちのいずれか1項に記載の構造化文書変換用プログラム。
  15. コンピュータに、
    変換規則解析処理で、変換前構造化文書の文書構造の規定として示される要素の最大出現回数または要素の出現順序に基づいて、差分情報の抽出終了を識別するための条件を定めた状態遷移規則を作成させる
    請求項14に記載の構造化文書変換用プログラム。
JP2009516312A 2007-05-28 2008-05-26 構造化文書変換装置 Expired - Fee Related JP5206675B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009516312A JP5206675B2 (ja) 2007-05-28 2008-05-26 構造化文書変換装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2007139934 2007-05-28
JP2007139934 2007-05-28
PCT/JP2008/059643 WO2008146781A1 (ja) 2007-05-28 2008-05-26 構造化文書変換装置
JP2009516312A JP5206675B2 (ja) 2007-05-28 2008-05-26 構造化文書変換装置

Publications (2)

Publication Number Publication Date
JPWO2008146781A1 true JPWO2008146781A1 (ja) 2010-08-19
JP5206675B2 JP5206675B2 (ja) 2013-06-12

Family

ID=40075022

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009516312A Expired - Fee Related JP5206675B2 (ja) 2007-05-28 2008-05-26 構造化文書変換装置

Country Status (3)

Country Link
US (1) US20100218088A1 (ja)
JP (1) JP5206675B2 (ja)
WO (1) WO2008146781A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103885941A (zh) * 2012-12-24 2014-06-25 鸿富锦精密工业(深圳)有限公司 专利申请文件转换系统及方法
CN115630112B (zh) * 2022-12-19 2023-06-20 南京视云信息科技有限公司 基于数据处理的数据动态转换方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590644B2 (en) * 1999-12-21 2009-09-15 International Business Machine Corporation Method and apparatus of streaming data transformation using code generator and translator
JP3815567B2 (ja) * 2003-03-31 2006-08-30 日本電気株式会社 コンピュータシステム、コンピュータプログラム、コンピュータ間の通信方法、構造化文書の符号化方法、符号化された構造化文書の復号方法
JP2005004460A (ja) * 2003-06-11 2005-01-06 Seiko Epson Corp 構造化文書処理装置、構造化文書処理方法、及びプログラム
JP4410005B2 (ja) * 2004-03-22 2010-02-03 富士通株式会社 構造化文書の構造変換装置、プログラム
JP2006011549A (ja) * 2004-06-22 2006-01-12 Mitsubishi Electric Corp 構造化文書変換装置及びプログラム
JP4606862B2 (ja) * 2004-12-07 2011-01-05 三菱電機株式会社 データ変換装置

Also Published As

Publication number Publication date
US20100218088A1 (en) 2010-08-26
WO2008146781A1 (ja) 2008-12-04
JP5206675B2 (ja) 2013-06-12

Similar Documents

Publication Publication Date Title
JP4124261B2 (ja) 文書解析システム、文書解析方法、及びそのプログラム
TWI394051B (zh) 網頁呈現優先次序機制
CN105528418B (zh) 一种设计文档生成方法及装置
WO2007144853A2 (en) Method and apparatus for performing customized paring on a xml document based on application
CN101968817A (zh) 网页模板配置方法
US20130124969A1 (en) Xml editor within a wysiwyg application
CN115358200A (zh) 一种基于SysML元模型的模板化文档自动生成方法
US9286272B2 (en) Method for transformation of an extensible markup language vocabulary to a generic document structure format
JP5325921B2 (ja) デコーダコンパイラ、プログラムおよび通信機器
WO2007081017A1 (ja) 文書処理装置
US20150113487A1 (en) Automated integrated circuit design documentation
JP5206675B2 (ja) 構造化文書変換装置
JP5028022B2 (ja) 印刷装置及び文書印刷方法
JP2010267092A (ja) 情報処理装置、情報処理方法
US8869048B2 (en) Declarative and multi-mode wizard framework
US20050177788A1 (en) Text to XML transformer and method
Le Zou et al. On synchronizing with web service evolution
JP4906424B2 (ja) Webサービス設計方法及び装置
JP3961993B2 (ja) 文書変換装置及び文書変換方法
JP2010224659A (ja) 情報処理装置、情報処理方法、プログラム及び記憶媒体
JP2003140960A (ja) Xmlデータのデータ変換方法及びプログラム
JP2004145736A (ja) 文字認識装置および文字認識データ出力方法およびプログラムおよび記録媒体
JP4220439B2 (ja) 構造化データ変換装置及び方法
JP2007265429A (ja) 文書変換システム、文書変換方法及び文書変換プログラムを記録したコンピュータ読み取り可能な記録媒体
JP4310401B2 (ja) 知識コードの生成方法およびその装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110411

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20110706

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121030

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121218

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: 20130122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130204

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

Free format text: PAYMENT UNTIL: 20160301

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees