JP2006011549A - 構造化文書変換装置及びプログラム - Google Patents
構造化文書変換装置及びプログラム Download PDFInfo
- Publication number
- JP2006011549A JP2006011549A JP2004184005A JP2004184005A JP2006011549A JP 2006011549 A JP2006011549 A JP 2006011549A JP 2004184005 A JP2004184005 A JP 2004184005A JP 2004184005 A JP2004184005 A JP 2004184005A JP 2006011549 A JP2006011549 A JP 2006011549A
- Authority
- JP
- Japan
- Prior art keywords
- structured document
- document
- output
- converted
- reverse lookup
- 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.)
- Pending
Links
Images
Landscapes
- Document Processing Apparatus (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】 ほとんど全ての要素が変換処理対象であったり、構造化文書の要素が反復する場合や構造化文書の要素に属性が加わる場合であっても、高速に文書変換することができる構造化文書変換装置を提供する。
【解決手段】 変換後の構造化文書における全てのタグと変換対象の構造化文書における末端タグとの対応関係を示すテンプレート情報及び変換対象の構造化文書における要素名をキーとして変換後の構造化文書の対応する要素名を検索するための検索テーブル情報に基づいて変換後の構造化文書における全てのタグ、変換対象の構造化文書における末端タグ及びその要素の値を、変換後の構造化文書におけるタグ配置順にそれぞれ対応付けた逆引き表情報を生成し、この逆引き表情報に基づいて変換後の構造化文書におけるタグ配置順で変換対象の構造化文書の対応するタグの要素の値を当てはめることにより、当該変換対象の構造化文書に対応した変換後の構造化文書を生成する。
【選択図】 図1
【解決手段】 変換後の構造化文書における全てのタグと変換対象の構造化文書における末端タグとの対応関係を示すテンプレート情報及び変換対象の構造化文書における要素名をキーとして変換後の構造化文書の対応する要素名を検索するための検索テーブル情報に基づいて変換後の構造化文書における全てのタグ、変換対象の構造化文書における末端タグ及びその要素の値を、変換後の構造化文書におけるタグ配置順にそれぞれ対応付けた逆引き表情報を生成し、この逆引き表情報に基づいて変換後の構造化文書におけるタグ配置順で変換対象の構造化文書の対応するタグの要素の値を当てはめることにより、当該変換対象の構造化文書に対応した変換後の構造化文書を生成する。
【選択図】 図1
Description
この発明は、XML(eXtensible Markup Language)等の構造化文書を構成する要素の変換前後の対応関係に基づいて逐次解析処理で高速に変換することができる構造化文書変換装置及びこれをコンピュータに実現させるプログラムに関するものである。
電子商取引(EC;Electronic Commerce)、CALS(Commerce At Light Speed)、知識経営(KM;Knowledge Management)、設備情報管理等の進展に伴って、これらの分野の情報システムが管理する構造化文書を、企業間や企業内組織間で交換/共有したいという要求が高まっている。
この要求に応える構造化文書の標準フォーマットとして、ISO(International Standard Organization)規格8879のSGML(Standard Generalized Markup Language)やW3C(World Wide Web Consortium)が制定するXML(eXtensible Markup Language)がある。
ところで、代表的な構造化文書であるXML文書に対するデータ操作API(Application Programming Interface)には、DOM(Document Object Model)及びSAX(Simple API for XML)がある。
DOMは、XML文書の解析結果を木構造(DOM木)としてメモリ上に展開する。このため、データへのランダムアクセスが可能で、データ操作プログラムを組みやすいという利点がある。しかしながら、その一方で処理が低速であり、メモリの使用量が大きいという欠点がある。
SAXは、XML文書を先頭から読み込み、XML文書中のタグやテキストが出現したときに予め定義された処理を行うもので、高速且つメモリ使用量が少ないという利点がある。しかしながら、時系列に処理を行うためデータへのランダムアクセスができず、複雑な処理をプログラムで記述しにくいという欠点がある。
これら各データ操作APIにおける欠点を解消するため、従来からDOMのAPIを利用し、且つ構造化文書に対する処理の高速化及びメモリ使用量の削減を目的とした構造化文書の変換技術が提案されている。例えば、特許文献1に開示される変換技術は、入力したXML等の構造化文書を、その文書中で変換処理の対象としない要素についての内容をCSV(Comma Separated Value)形式で一つの要素にまとめた構造化文書に事前変換するものである。これにより、構造化文書に対する操作に必要となるリソースを軽減することができ、変換速度向上とメモリ消費量の削減の双方を実現することができる。
従来の構造化文書変換では、特許文献1のように変換処理の対象としない要素をリソース削減の対象要素として抽出し、これらを一つの要素にまとめたXML文書に事前変換することで変換速度の向上を図っている。このため、例えば入力した構造化文書を構成するほとんど全ての要素を変換処理対象とする場合、リソース削減の対象要素がほとんどなくなり、変換速度の向上が望めず、性能向上を図ることができないという課題があった。
この発明は、上記課題を解決するためになされたもので、構造化文書の変換前後でランダムアクセスが必要なデータ処理部分を事前に計算して逐次解析により変換処理を実行することにより、ほとんど全ての要素が変換処理対象であったり、構造化文書の要素が反復する場合や構造化文書の要素に属性が加わる場合であっても、高速に文書変換することができる構造化文書変換装置及びこれをコンピュータに実現させるプログラムを得るものである。
また、この発明は、逐次解析処理での変換を高速化することに加え、構造化文書の要素間や構造化文書の反復要素についての計算を可能とし、また構造化文書のみでなく、必要に応じてCSV形式やパンチデータ形式の文書も出力することができる構造化文書変換装置及びこれをコンピュータに実現させるプログラムを得るものである。
この発明に係る構造化文書変換装置は、変換対象の構造化文書とこれに施すべき文書構造変換を行った構造化文書との間での末端タグの対応関係を示す対応定義情報及び変換後の構造化文書の文書構造を示すスキーマに基づいて、変換後の構造化文書における全てのタグと変換対象の構造化文書における末端タグとの対応関係を示すテンプレート情報及び変換対象の構造化文書における要素名をキーとして変換後の構造化文書の対応する要素名を検索するための検索テーブル情報を生成する情報生成部と、テンプレート情報に基づいて変換後の構造化文書における全てのタグ、変換対象の構造化文書における末端タグ及びその要素の値を、変換後の構造化文書におけるタグ配置順にそれぞれ対応付けた逆引き表情報を生成するための逐次解析プログラムを生成するプログラム生成部と、プログラム生成部が生成した逐次解析プログラムに従って、テンプレート情報及び検索テーブル情報を用いて変換対象の構造化文書を文書先頭のタグから逐次解析し、当該構造化文書に応じた逆引き表情報を生成する文書解析部と、逆引き表情報に基づいて変換後の構造化文書におけるタグ配置順で変換対象の構造化文書の対応するタグの要素の値を当てはめることにより、当該変換対象の構造化文書に対応した変換後の構造化文書を生成する文書変換部とを備えるものである。
この発明によれば、変換対象の構造化文書とこれに施すべき文書構造変換を行った構造化文書との間での末端タグの対応関係を示す対応定義情報及び変換後の構造化文書の文書構造を示すスキーマを入力し、これらの情報に基づいて変換後の構造化文書における全てのタグと変換対象の構造化文書における末端タグとの対応関係を示すテンプレート情報及び変換対象の構造化文書における要素名をキーとして変換後の構造化文書の対応する要素名を検索するための検索テーブル情報を生成する情報生成部と、テンプレート情報に基づいて変換後の構造化文書における全てのタグ、変換対象の構造化文書における末端タグ及びその要素の値を、変換後の構造化文書におけるタグ配置順にそれぞれ対応付けた逆引き表情報を生成するための逐次解析プログラムを生成するプログラム生成部と、プログラム生成部が生成した逐次解析プログラムに従って、テンプレート情報及び検索テーブル情報を用いて変換対象の構造化文書を文書先頭のタグから逐次解析し、当該構造化文書に応じた逆引き表情報を生成する文書解析部と、逆引き表情報に基づいて変換後の構造化文書におけるタグ配置順で変換対象の構造化文書の対応するタグの要素の値を当てはめることにより、当該変換対象の構造化文書に対応した変換後の構造化文書を生成する文書変換部とを備えるので、ほとんど全ての要素が変換処理対象であるような構造化文書についての文書構造変換においても、逐次解析による高速な処理を実現することができるという効果がある。
実施の形態1.
図1は、この発明の実施の形態1による構造化文書変換装置の構成を示すブロック図である。本実施の形態では、構造化文書としてXMLを用いたものを例にして説明する。図に示すように、本実施の形態1による構造化文書変換装置の構成を大別すると、構造化文書変換前処理部101及び構造化文書変換実行部102の二つの構成要素からなる。これら構造化文書変換前処理部101及び構造化文書変換実行部102は、例えば汎用コンピュータなどを用いて本発明に従う構造化文書変換プログラムを実行させることで具現化できる。
図1は、この発明の実施の形態1による構造化文書変換装置の構成を示すブロック図である。本実施の形態では、構造化文書としてXMLを用いたものを例にして説明する。図に示すように、本実施の形態1による構造化文書変換装置の構成を大別すると、構造化文書変換前処理部101及び構造化文書変換実行部102の二つの構成要素からなる。これら構造化文書変換前処理部101及び構造化文書変換実行部102は、例えば汎用コンピュータなどを用いて本発明に従う構造化文書変換プログラムを実行させることで具現化できる。
もう少し詳細に説明すると、本発明に従う構造化文書変換プログラムを、コンピュータに読み込ませて、その動作を制御することにより、コンピュータ上に図1に示す構造化文書変換前処理部101及び構造化文書変換実行部102を実現することができる。また、出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110、逐次構造化文書解析プログラム111及び出力パス逆引き表113は、上記コンピュータの記憶装置上に構成される。
なお、以下の説明において、本発明の構造化文書変換装置を具現化するコンピュータ自体の構成及びその基本的な機能については、当業者が当該分野の技術常識に基づいて容易に認識できるものであり、本発明の本質に直接関わるものでないので詳細な記載を省略する。
構造化文書変換前処理部101では、XMLデータへのランダムアクセスが必要な処理部分、つまり変換後のXML文書の要素にランダムに対応する変換前のXML文書の要素にアクセスする処理部分が事前計算される。一般的に、変換後の構造化文書の要素は、変換前の構造化文書の先頭要素から順番に対応しておらず、ランダムな順序で対応する。
そこで、本発明では、これらランダムな順序で対応する要素間の処理をその順序通りに処理するのではなく、変換前後の構造化文書について文書先頭の要素から順に対応関係を事前に計算することで、文書先頭の要素から順にアクセスして変換後の構造化文書の要素の値をセットする、いわゆる逐次処理を可能としている。この事前計算を実行するのが、構造化文書変換前処理部101である。
その構成を簡単に説明すると、構造化文書変換前処理部101は、出力パス逆引き関係生成部(情報生成部)103及び逐次構造化文書解析プログラム生成部(プログラム生成部)104から構成される。出力パス逆引き関係生成部103では、入出力対応定義(対応定義情報)107と出力XML文書スキーマ(スキーマ)108とに基づいて、出力パス逆引き表テンプレート(テンプレート情報)109及び出力パス検索ハッシュテーブル(検索テーブル情報)110を生成する。一方、逐次構造化文書解析プログラム生成部104は、出力パス逆引き表テンプレート109を用いて逐次構造化文書解析プログラム(逐次解析プログラム)111を生成する。
入出力対応定義107とは、構造化文書の変換前後の末端タグの対応関係を定義する電子化された情報であり、例えば変換前の構造化文書である入力XML文書と変換後の構造化文書である出力XML文書との末端タグの対応関係が記述される。出力XML文書スキーマ108は、出力XML文書の文書構造が定義されており、例えばDTD(Document Type Definition)を用いて作成される。なお、XML Schemaなどの構造化文書の文書構造を記述する他のスキーマを用いて構成してもよい。
出力パス逆引き表テンプレート109は、変換後の構造化文書を構成する全てのタグの配置順と、変換後のタグ配置順に沿って変換前後の末端タグの対応関係を示したテンプレート情報である。例えば、出力XML文書スキーマ108をXML文書形式に変換し、出力XML文書を構成する全てのタグをその配置順に表としてまとめたものに、入出力対応定義107を用いて出力XML文書の各出力要素名に対応する入力要素名を記入することにより構成される。
出力パス検索ハッシュテーブル110は、入力XML文書の要素名をキーとして当該要素名に対応する出力要素を出力パス逆引き表113から検索するためのハッシュテーブルである。逐次構造化文書解析プログラム生成部104により生成される逐次構造化文書解析プログラム111は、入力XML文書を逐次解析するためのプログラムであり、例えばSAX APIを利用するXML変換プログラムが挙げられる。
構造化文書変換実行部102は、逐次構造化文書解析部(文書解析部)105と出力構造化文書生成部(文書変換部)106から構成される。逐次構造化文書解析部105は、逐次構造化文書解析プログラム111に従って動作し、出力パス逆引き表テンプレート109及び出力パス検索ハッシュテーブル110を用いて変換前の構造化文書である入力XML文書112に基づいて出力パス逆引き表(逆引き表情報)113を生成する。
出力パス逆引き表113とは、変換後の構造化文書における要素の配置順から変換前の構造化文書の対応する要素を特定するためのテーブル情報であって、例えば出力XML文書の全てのタグ(出力要素)、入力XML文書の末端タグ(末端入力要素)及びその要素の値(要素内容)がそれぞれ対応付けて記入される。出力構造化文書生成部106は、出力パス逆引き表113を用いて入力XML文書112を変換処理し、変換後の構造化文書である出力XML文書114を生成する。
次に動作について説明する。
図2は、図1中の構造化文書変換前処理部の動作を示すフローチャートであり、この図に沿って構造化文書変換前処理部101の動作について説明する。先ず、出力パス逆引き関係生成部103は、入出力対応定義107を読み込む(ステップST201)。入出力対応定義107には、図3に示すように、例えば入力XML文書と出力XML文書との末端タグの対応関係が記述される。ここで、末端タグとは、XMLの木構造で子を持たないタグである。
図2は、図1中の構造化文書変換前処理部の動作を示すフローチャートであり、この図に沿って構造化文書変換前処理部101の動作について説明する。先ず、出力パス逆引き関係生成部103は、入出力対応定義107を読み込む(ステップST201)。入出力対応定義107には、図3に示すように、例えば入力XML文書と出力XML文書との末端タグの対応関係が記述される。ここで、末端タグとは、XMLの木構造で子を持たないタグである。
図3に示す入出力対応定義107の例では、入力XML文書中の末端タグ<A.B>、<A.C>、<D>の文字列部分「A.B」、「A.C」、「D」が記述されており、これに対応する出力XML文書中の末端タグ<a.b>、<a.c>、<d>の文字列部分である「a.b」、「a.c」、「d」が記述されている。
続いて、出力パス逆引き関係生成部103は、出力XML文書スキーマ108を読み込む(ステップST202)。出力XML文書スキーマ108には、出力XML文書の文書構造として、文書中に現れてもよい要素や、要素に関連付けることができる属性、どの要素が他の要素の子要素か、子要素が現れてもよい順序、子要素の数などの出力文書に関する構造情報が定義されている。図4は、出力XML文書スキーマ108の例である。
このあと、出力パス逆引き関係生成部103は、入出力対応定義107及び出力XML文書スキーマ108による情報を用いて、出力パス逆引き表テンプレート109及び出力パス検索ハッシュテーブル110を生成する(ステップST203)。図5は、図2中のステップST203における処理の詳細な流れを示すフローチャートであり、この図に沿って詳細に説明する。
先ず、出力パス逆引き関係生成部103は、出力XML文書スキーマ108をXML文書形式に変換してその全てのタグを出力XML文書中の配置順で表に記入する(ステップST501)。つまり、出力XML文書スキーマ108をXML文書形式に変換することで、出力XML文書の全てのタグ及びその配置順が特定される。これにより、当該文書中の配置順で各タグが記入された表データを作成することができる。
続いて、出力パス逆引き関係生成部103は、入出力対応定義107を用いて、出力XML文書の末端タグに対応する入力XML文書の末端タグの要素名を、ステップST501で作成した表データに記入する(ステップST502)。これにより、出力XML文書(変換後の構造化文書)の全てのタグを各配置順で記入したデータに対して、出力XML文書の末端タグに対応する入力XML文書(変換対象の構造化文書)の末端タグの要素名が記入された表データが作成される。この表データが出力パス逆引き表テンプレート109に相当する。
図6は、図3に示した入出力対応定義107及び図4中の出力XML文書スキーマ108を用いて出力パス逆引き関係生成部103が作成した出力パス逆引き表テンプレートを示す図である。図6の例では、図4に示す出力XML文書スキーマ108をXML文書形式に変換して得られる出力XML文書の全てのタグ<root>、<d>、</d>、<a>、<a.c>、</a.c>、<a.b>、</a.b>、</a>、</root>がその配置順に記入される。
また、図3に示す入出力対応定義107によって出力XML文書中の末端タグ<d>、<a.c>、<a.b>に対応する入力XML文書の末端タグの要素名D、A.C、A.Bが記入される。このような出力パス逆引き表テンプレート109を作成することにより、出力XML文書におけるタグの配置順で、入力XML文書と出力XML文書との間における末端タグの対応関係が特定される。
出力パス逆引き関係生成部103は、上述のようにして作成した出力パス逆引き表テンプレート109を、本実施の形態1による装置を具現化するコンピュータの記憶装置に出力し記憶する(ステップST503)。なお、この記憶装置としては、逐次構造化文書解析プログラム生成部104及び逐次構造化文書解析部105から、出力パス逆引き表テンプレート109が読み出し可能なメモリ領域を有していればよい。
次に、出力パス逆引き関係生成部103は、入力XML文書における末端タグ内に記述された要素の名前(入力要素名)と、出力XML文書スキーマ108による情報とを用いて、出力パス検索ハッシュテーブル110を作成する(ステップST504)。出力パス検索ハッシュテーブル110とは、入力XML文書の入力要素名をキーとし、これに対応する出力要素名の出力パス逆引き表テンプレート109での位置がエントリとして関連付けて登録された電子化されたテーブル情報である。
この出力パス検索ハッシュテーブル110も、出力パス逆引き関係生成部103から、逐次構造化文書解析部105により読み込み可能なメモリ領域に出力され記憶される。これにより、ステップST203の処理が終了する。
図2のフローチャートに戻ると、逐次構造化文書解析プログラム生成部104は、上記記憶装置のメモリ領域から出力パス逆引き表テンプレート109を読み出し、当該出力パス逆引き表テンプレート109を用いて逐次構造化文書解析プログラム111を生成する(ステップST204)。逐次構造化文書解析プログラム111には、出力パス逆引き表テンプレート109を用いて入力XML文書と出力XML文書との間における末端タグの対応関係を認識し、入力XML文書先頭の要素から順に対応する出力XML文書の要素を特定するための出力パス逆引き表113を作成する処理が規定される。
図7は、逐次構造化文書解析プログラム111による処理の枠組みを示す図であり、例えばSAX APIを用いて実現した解析プログラムの各処理ルーチンに対応したハンドラの記述である。図において、メソッドTransHandlerはコンストラクタであって、解析処理の初期化を行うメソッドである。その内容としては、出力パス逆引き表テンプレート109の内容を出力パス逆引き表113にコピーする処理と、出力パス検索ハッシュテーブル110を読み込む処理とが記述される。
メソッドstartElementは要素の開始時に実行されるメソッドであり、変数elemNameに要素名を代入する処理が記述される。メソッドendElementは要素の終了時に実行されるメソッドであり、変数elemNameにnullを代入する処理が記述される。メソッドcharactersは文字データが出現したときに実行されるメソッドであり、出力パス逆引き表113を生成する処理が記述される。
逐次構造化文書解析プログラム生成部104は、出力パス逆引き表テンプレート109の内容を読み込んで、図7で示すような処理を実行させる逐次構造化文書解析プログラム111を生成すると、逐次構造化文書解析部105から読み出し可能なメモリ領域に出力し記憶させる。これにより、図2に示す一連の事前処理が終了する。
図8は、図7に示した逐次構造化文書解析プログラム111のメソッドcharactersに記述される、出力パス逆引き表113を生成する処理のアルゴリズムを示すフローチャートである。先ず、図7の変数elemNameを参照することにより入力要素名を取り出す(ステップST801)。続いて、入力要素名をキーにして出力パス検索ハッシュテーブル110を引くことにより、出力パス逆引き表113における出力要素の位置を求める(ステップST802)。次に、ステップST802で求めた出力パス逆引き表113の出力要素の位置の欄に入力要素の値をセットする(ステップST803)。これらの処理は、逐次構造化文書解析プログラム111を実行する逐次構造化文書解析部105によってなされる。
次に、構造化文書変換実行部102の動作について説明する。
図9は、図1中の構造化文書変換実行部の動作を示すフローチャートであり、この図に沿って説明する。先ず、逐次構造化文書解析部105は、構造化文書変換前処理部101が生成した出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110及び逐次構造化文書解析プログラム111を読み込む(ステップST901)。逐次構造化文書解析部105は、逐次構造化文書解析プログラム111(図7に示したSAX APIプログラム)に従って、構造変換対象の入力XML文書112を読み込み(ステップST902)、入力XML文書112の構造を解析して出力パス逆引き表113を生成する(ステップST903)。
図9は、図1中の構造化文書変換実行部の動作を示すフローチャートであり、この図に沿って説明する。先ず、逐次構造化文書解析部105は、構造化文書変換前処理部101が生成した出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110及び逐次構造化文書解析プログラム111を読み込む(ステップST901)。逐次構造化文書解析部105は、逐次構造化文書解析プログラム111(図7に示したSAX APIプログラム)に従って、構造変換対象の入力XML文書112を読み込み(ステップST902)、入力XML文書112の構造を解析して出力パス逆引き表113を生成する(ステップST903)。
ここで、出力パス逆引き表113の生成処理について詳細に説明する。
先ず、逐次構造化文書解析部105は、初期化処理として図7に示したメソッドTransHandlerにより、出力パス逆引き表テンプレート109の内容を出力パス逆引き表113の対応する欄に対応するメモリ領域にコピーすると共に、出力パス検索ハッシュテーブル110を読み込む。
先ず、逐次構造化文書解析部105は、初期化処理として図7に示したメソッドTransHandlerにより、出力パス逆引き表テンプレート109の内容を出力パス逆引き表113の対応する欄に対応するメモリ領域にコピーすると共に、出力パス検索ハッシュテーブル110を読み込む。
次に、逐次構造化文書解析部105は、メソッドstartElement及びメソッドendElementにより、入力XML文書112の先頭に配置された要素から読み込み、入力XML文書112中の要素が出現するたびにその要素名を変数elemNameに格納する。また、文字列データが出現するたびに、メソッドcharactersにより図8に示すようなフローで、変数elemNameを参照して得た入力要素名をキーとして出力パス検索ハッシュテーブル110を検索し、この入力要素名に対応する出力要素名の出力パス逆引き表113における位置を求め、この出力要素名の欄に文字列データを格納する。このようにして、図6に示す出力パス逆引き表テンプレート109に対して、図10に示す入力XML文書112を入力したときに生成される出力パス逆引き表113を図11に示す。
図11に示す出力パス逆引き表113では、入力XML文書112における、開始タグ<D>と終了タグ</D>に挟まれる文字列である「3」が、出力XML文書114の末端タグ<d>についての要素内容として出力パス逆引き表113に記入されている。また、開始タグ<A.C>と終了タグ</A.C>に挟まれる文字列である「2」が、入力要素名A.Cに対応する末端タグ<a.c>で規定される要素の値(要素内容)として出力パス逆引き表113に記入されている。さらに、開始タグ<A.B>と終了タグ</A.B>に挟まれる文字列である「1」が、入力要素名A.Bに対応する末端タグ<a.b>で規定される要素の値として出力パス逆引き表113に記入されている。
次に、ステップST904において、出力構造化文書生成部106は、逐次構造化文書解析部105により生成された出力パス逆引き表113から出力XML文書114を生成する。この出力XML文書114の生成処理としては、出力パス逆引き表113の先頭(一番上の行)から出力要素の欄に記載されているタグに入力要素の値の欄に記載されている値を順に当てはめていくだけでよい。
図11に示した出力パス逆引き表113であれば、その一番上の行から出力要素のタグを記入し、出力要素のタグに対応する入力要素の値があれば、それを順に当てはめることで、図12に示すような出力XML文書114を生成することができる。このようにして生成された出力XML文書114は、出力構造化文書生成部106より変換結果として出力される(ステップST905)。
以上のように、この実施の形態1によれば、入力XML文書112と出力XML文書114の要素の対応定義を用いてXMLデータへのランダムアクセスが必要な要素を逐次解析に適した形態の出力パス逆引き表テンプレート109及び出力パス逆引き表113を予め求めておき、SAX APIなどの逐次解析を利用したXML変換プログラムに従って出力パス逆引き表テンプレート109及び出力パス逆引き表113を用いて構造化文書の変換を実行するので、変換実行時に逐次解析による高速な変換速度を得ることができる。
実施の形態2.
この実施の形態2は、上記実施の形態1で示した処理に加え、構造化文書中に反復する要素が存在する場合の処理を規定した構成を開示するものである。
この実施の形態2は、上記実施の形態1で示した処理に加え、構造化文書中に反復する要素が存在する場合の処理を規定した構成を開示するものである。
実施の形態2による構造化文書変換装置の基本的な構成は、上記実施の形態1の図1で示したものと同様である。上記実施の形態1と異なる箇所として、構造化文書変換前処理部101が、構造化文書中に反復する要素が存在する場合、これに応じて出力パス逆引き表テンプレート109及び出力パス逆引き表113を生成する。
次に動作について説明する。
先ず、構造化文書変換前処理部101は、図2に示すフローチャートに従って、ステップST201で、図3で示した入出力対応定義107を読み込み、続いて図13に示す反復する要素を含む出力XML文書の出力XML文書スキーマ108を読み込む(ステップST202)。このあと、構造化文書変換前処理部101は、図3に示した入出力対応定義107及び図13に示す出力XML文書スキーマ108を用いて、出力パス逆引き表テンプレート109及び出力パス検索ハッシュテーブル110を生成する(ステップST203)。
先ず、構造化文書変換前処理部101は、図2に示すフローチャートに従って、ステップST201で、図3で示した入出力対応定義107を読み込み、続いて図13に示す反復する要素を含む出力XML文書の出力XML文書スキーマ108を読み込む(ステップST202)。このあと、構造化文書変換前処理部101は、図3に示した入出力対応定義107及び図13に示す出力XML文書スキーマ108を用いて、出力パス逆引き表テンプレート109及び出力パス検索ハッシュテーブル110を生成する(ステップST203)。
図14は、実施の形態2による出力パス逆引き表テンプレート及び出力パス検索ハッシュテーブルの生成処理を示すフローチャートであり、本実施の形態に合わせて図2中のステップST203での処理を詳細に示したものである。先ず、ステップST1401において、実施の形態2による出力パス逆引き関係生成部103は、出力XML文書スキーマ108をXML文書形式に変換してその全てのタグを出力XML文書中の配置順で並べる表データを作成する。このとき、出力XML文書中の要素の繰り返し種別が見出されると、出力パス逆引き関係生成部103は、上記表に対して各タグに対応する繰り返し種別を記入するための繰り返し欄を設ける。
例えば、図13に示す出力XML文書スキーマ108をXML文書形式に変換することで、出力XML文書の全てのタグ<root>、<d>、</d>、<a>、<a.c>、</a.c>、<a.b>、</a.b>、</a>、</root>の出力XML文書中における配置順などが特定され、この配置順で各タグが上記表に記入される。このとき、図13に示すような「a.c」に関する要素が繰り返し出現することを示す、後述する繰り返し種別「*」が見出されると、出力パス逆引き関係生成部103は、上記実施の形態1と同様に全てのタグを出力XML文書中の配置順でそれぞれ記入すると共に、上記表に対してタグの繰り返し種別を記入するための繰り返し欄を設ける。
ここで、出力XML文書スキーマ108で要素の出現回数が可変に設定である場合、出力パス逆引き関係生成部103は、その繰り返し数を1としてXML文書形式に変換して出力XML文書中の配置順で上記表に記入する。
次に、出力パス逆引き関係生成部103は、出力XML文書中のタグに対応して設定される繰り返し種別を上記表の繰り返し欄に記入する(ステップST1402)。図13の例では、「a.c」に対する繰り返し種別「*」が繰り返し欄に記入される。なお、繰り返し種別としては、DTDの記述方法に従うものとする。例えば、「*」は、要素が0回以上現れることを示している。また、無指定は、要素が必ず1回現れることを示しており、「+」は、要素が1回以上現れることを示している。「?」は、要素が0回または1回現れるものとする。
続いて、出力パス逆引き関係生成部103は、入出力対応定義107を用いて、出力XML文書の末端タグに対応する入力XML文書の末端タグの要素名を、ステップST1401で作成した表データに記入する(ステップST1403)。これにより、出力XML文書(変換後の構造化文書)の全てのタグを各配置順で記入したデータに対して、出力XML文書の末端タグに対応する入力XML文書(変換前の構造化文書)の末端タグの要素名が記入された表データが作成される。この表データが出力パス逆引き表テンプレート109となる。
図15は、入出力対応定義107及び図13の出力XML文書スキーマ108に基づいて作成された出力パス逆引き表テンプレート109を示す図である。図に示すように、本実施の形態2による出力パス逆引き表テンプレート109は、出力XML文書中の配置順で出力XML文書のタグがそれぞれ記入された出力要素欄、出力要素欄に記載されたタグに対応する繰り返し種別を記入するための繰り返し欄、及び出力要素欄のタグに対応する入力XML文書の末端タグが記載された末端入力要素欄からなる。また、出力XML文書の<a.c>タグに対応する繰り返し欄には、繰り返し種別として「*」が記載されている。
次に、出力パス逆引き関係生成部103は、上述のようにして作成した出力パス逆引き表テンプレート109を、本実施の形態2による装置を具現化するコンピュータの記憶装置に出力し記憶する(ステップST1404)。なお、この記憶装置としては、逐次構造化文書解析プログラム生成部104及び逐次構造化文書解析部105から、出力パス逆引き表テンプレート109が読み出し可能なメモリ領域を有していればよい。
このあと、出力パス逆引き関係生成部103は、入力XML文書における末端タグ内に記述された要素の名前(入力要素名)と、出力XML文書スキーマ108による情報とを用いて、出力パス検索ハッシュテーブル110を作成する(ステップST1405)。出力パス検索ハッシュテーブル110とは、入力XML文書の入力要素名をキーとし、これに対応する出力要素名の出力パス逆引き表テンプレート109での位置がエントリとして関連付けて登録された電子化されたテーブル情報である。この出力パス検索ハッシュテーブル110も、出力パス逆引き関係生成部103から、逐次構造化文書解析部105により読み込み可能なメモリ領域に出力され記憶される。これにより、ステップST203の処理が終了する。
次に、図2のステップST204に沿って、逐次構造化文書解析プログラム生成部104が、逐次構造化文書解析プログラム111を生成する。この逐次構造化文書解析プログラム111の枠組みは、上記実施の形態1で示した図7と同様に、メソッドTransHandler、メソッドstartElement及びメソッドendElementの処理が記述される。メソッドTransHandlerはコンストラクタであって、解析処理の初期化を行うメソッドである。その内容としては、出力パス逆引き表テンプレート109の内容を出力パス逆引き表113にコピーする処理と、出力パス検索ハッシュテーブル110を読み込む処理とが記述される。
メソッドstartElementは要素の開始時に実行されるメソッドであり、変数elemNameに要素名を代入する処理が記述される。メソッドendElementは要素の終了時に実行されるメソッドであり、変数elemNameにnullを代入する処理が記述される。メソッドcharactersは文字データが出現したときに実行されるメソッドであり、出力パス逆引き表113を生成する処理が記述される。
図16は、実施の形態2におけるメソッドcharactersに記述されるアルゴリズムに従った処理のフローチャートであり、上記実施の形態1で説明した図8の処理に対応している。先ず、変数elemNameを参照することにより入力要素名を取り出す(ステップST1601)。続いて、入力要素名をキーにして出力パス検索ハッシュテーブル110を引くことにより、出力パス逆引き表113における出力要素の位置を求める(ステップST1602)。
次に、入力要素の値を格納するスペース、即ちある出力要素に対応する入力要素の値(末端入力要素の文字列データ)を記入するための欄が出力パス逆引き表113にあるか否かを判定する(ステップST1603)。なお、初期状態の出力パス逆引き表113には、各入力要素に対して1つの欄が設けられている。つまり、ある出力要素に対して、その繰り返し種別を記入する繰り返し欄、対応する末端入力要素の要素名を記入するための末端入力要素欄及びその値を記入するための入力要素の値欄からなる記入欄が規定されたメモリ領域が割り当てられている。
このとき、入力要素が2回以上繰り返される場合、要素の値を格納するスペースがないと判定され、出力パス逆引き表113に対して上記記入欄を追加する(ステップST1604)。このあと、ステップST1604で追加した出力パス逆引き表113の欄に、入力要素の値をセットする(ステップST1605)。
一方、ステップST1603で入力要素の繰り返しがなく、入力要素の値を格納するスペースがあると判定されると、そのまま出力パス逆引き表113の該当する記入欄に入力要素の値をセットする(ステップST1605)。
逐次構造化文書解析プログラム生成部104は、出力パス逆引き表テンプレート109の内容を読み込んで、以上のステップST1601〜1605までの処理を行う逐次構造化文書解析プログラム111を生成すると、逐次構造化文書解析部105から読み出し可能なメモリ領域に出力し記憶させる。これにより、ステップST204が終了する。
なお、構造化文書変換実行部102による動作は、上記実施の形態1と同様、図9のフローチャートに従う。先ず、逐次構造化文書解析部105は、構造化文書変換前処理部101が生成した出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110及び逐次構造化文書解析プログラム111を読み込む(ステップST901)。逐次構造化文書解析部105は、逐次構造化文書解析プログラム111(上述したSAX APIプログラム)に従って、構造変換対象の入力XML文書112を読み込み(ステップST902)、入力XML文書112の構造を解析して出力パス逆引き表113を生成する(ステップST903)。
出力パス逆引き表113の生成処理について詳細に説明すると、逐次構造化文書解析部105は、初期化処理としてメソッドTransHandlerにより、出力パス逆引き表テンプレート109の内容を出力パス逆引き表113の対応する欄に対応するメモリ領域にコピーすると共に、出力パス検索ハッシュテーブル110を読み込む。
次に、逐次構造化文書解析部105は、メソッドstartElement及びメソッドendElementにより、入力XML文書112の先頭に配置された要素から読み込み、入力XML文書112中の要素が出現するたびにその要素名を変数elemNameに格納する。また、文字列データが出現するたびに、メソッドcharactersにより図16に示すフローに従って、変数elemNameを参照して得た入力要素名をキーとして出力パス検索ハッシュテーブル110を検索して、当該入力要素名に対応する出力要素名の出力パス逆引き表113における位置を求め、当該出力要素名の欄に文字列データを格納する。
このとき、逐次構造化文書解析部105は、入力要素が繰り返し出現するか否か、つまり入力要素の値(文字列データ)を格納するスペースが出力パス逆引き表113にあるか否かを判定する。このとき、入力要素が2回以上繰り返される場合、入力要素の値(文字列データ)を格納するスペースがないと判定され、出力パス逆引き表113に対して上記記入欄を追加する。このようにして、実施の形態2による出力パス逆引き表113が生成される。
次に、ステップST904において、出力構造化文書生成部106は、逐次構造化文書解析部105により生成された出力パス逆引き表113から出力XML文書114を生成する。この出力XML文書114の生成処理としては、出力パス逆引き表113の先頭(一番上の行)から出力要素の欄に記載されているタグに入力要素の値の欄に記載されている値を順に当てはめていくだけでよい。
このようにして、図15に示す出力パス逆引き表テンプレート109に対して、図17に示す入力XML文書112を入力したときに生成される出力パス逆引き表113を図18に示す。図18の出力パス逆引き表113では、入力XML文書112における、開始タグ<D>と終了タグ</D>に挟まれる文字列である「3」が、出力XML文書114の末端タグ<d>についての要素内容として出力パス逆引き表113に記入されている。
特に、入力要素名A.Cに対応する末端タグ<a.c>について、繰り返し種別「*」が設定されており、繰り返しの出現により3行分の記入欄が出力パス逆引き表113に構成されている。それぞれの入力要素の値欄には、対応する文字列データ「2」、「3」、「4」が記入されている。さらに、開始タグ<A.B>と終了タグ</A.B>に挟まれる文字列である「1」が、入力要素名A.Bに対応する末端タグ<a.b>で規定される要素の値として出力パス逆引き表113に記入されている。
図18に示した出力パス逆引き表113であれば、その一番上の行から出力要素のタグを記入し、出力要素のタグに対応する入力要素の値があれば、それを順に当てはめることで、図19に示すような出力XML文書114を生成することができる。このようにして生成された出力XML文書114は、出力構造化文書生成部106より変換結果として出力される(ステップST905)。
以上のように、実施の形態2では、XML文書中の要素が反復する場合でも、変換前のXML文書と変換後のXML文書の要素の対応定義から、XMLデータへのランダムアクセスが必要な処理部分を、構造化文書変換前処理部101によって予め処理しておき、SAX APIを利用したXML変換プログラムを自動生成するので、SAX APIによる構造化文書の高速な変換処理を実行することができる。
実施の形態3.
この実施の形態3は、上記実施の形態1で示した処理に加え、構造化文書中の要素に付加的な情報を付け加えるための属性が加えられていた場合の処理を規定した構成を開示するものである。
この実施の形態3は、上記実施の形態1で示した処理に加え、構造化文書中の要素に付加的な情報を付け加えるための属性が加えられていた場合の処理を規定した構成を開示するものである。
実施の形態3による構造化文書変換装置の基本的な構成は、上記実施の形態1の図1で示したものと同様である。上記実施の形態1と異なる箇所として、構造化文書変換前処理部101が、構造化文書中の要素に属性が加えられていた場合、これに応じて出力パス逆引き表テンプレート109及び出力パス逆引き表113を生成する。
図20は、属性が付加された要素を含む入出力対応定義の一例を示す図である。図中の出力XML欄の「a.b@a.d」は、要素名がa.bの出力要素に属性名a.dの属性情報が付加されていることを示している。図21は、出力XML文書中の要素に属性が定義された出力XML文書スキーマの一例を示す図である。
この出力XML文書スキーマ108中の<!ATTLIST a.b a.d CDATA#REQUIRED>が、要素名a.bの出力要素が属性名a.dを有することを示している。また、文字データを表す「CDATA」が属性「a.d」の型であり、この属性「a.d」は、「#REQUIRED」により属性値を省略することができないことが定義されている。以降では、これら入出力対応定義107及び出力XML文書スキーマ108により出力パス逆引き表テンプレート109及び出力パス逆引き表113を生成する場合を例に説明する。
次に動作について説明する。
先ず、構造化文書変換前処理部101は、図2に示すフローチャートに従って、ステップST201で、図20で示した入出力対応定義107を読み込み、続いて図21に示す出力XML文書の要素に属性が定義された出力XML文書スキーマ108を読み込む(ステップST202)。このあと、構造化文書変換前処理部101は、図20に示した入出力対応定義107及び図21に示す出力XML文書スキーマ108を用いて、出力パス逆引き表テンプレート109及び出力パス検索ハッシュテーブル110を生成する(ステップST203)。
先ず、構造化文書変換前処理部101は、図2に示すフローチャートに従って、ステップST201で、図20で示した入出力対応定義107を読み込み、続いて図21に示す出力XML文書の要素に属性が定義された出力XML文書スキーマ108を読み込む(ステップST202)。このあと、構造化文書変換前処理部101は、図20に示した入出力対応定義107及び図21に示す出力XML文書スキーマ108を用いて、出力パス逆引き表テンプレート109及び出力パス検索ハッシュテーブル110を生成する(ステップST203)。
図22は、実施の形態3による出力パス逆引き表テンプレート及び出力パス検索ハッシュテーブルの生成処理を示すフローチャートであり、本実施の形態に合わせて図2中のステップST203での処理を詳細に示したものである。
先ず、ステップST2201において、実施の形態3による出力パス逆引き関係生成部103は、出力XML文書スキーマ108をXML文書形式に変換してその全てのタグを出力XML文書中の配置順で並べた表データを作成する。例えば、図21に示す出力XML文書スキーマ108では、これをXML文書形式に変換することで、出力XML文書の全てのタグの配置順が特定され、この配置順で各タグが上記表に記入される。このとき、属性が付加された要素についても他のタグと同様に出力XML文書中の配置順で記入される。
次に、出力パス逆引き関係生成部103は、入出力対応定義107に記述されている出力要素名・属性名に対応する末端入力要素の入力要素名・属性名を上記表に記入する(ステップST2202)。図20の例では、出力要素名・属性名「a.b@a.d」に対応する入力要素名である「A.D」が記入される。これにより、出力XML文書(変換後の構造化文書)の全てのタグを各配置順で記入したデータに対して、出力XML文書の末端タグに対応する入力XML文書(変換前の構造化文書)の末端タグの要素名・属性名が記入された表データが作成される。この表データが出力パス逆引き表テンプレート109となる。
図23は、上述のようにして、図22の出力XML文書スキーマ108に基づいて作成された出力パス逆引き表テンプレート109を示す図である。図において、出力要素欄に記載された<a.b a.d=>が出力要素名・属性名であり、「a.d=」の部分が属性名を表している。
次に、出力パス逆引き関係生成部103は、上述のようにして作成した出力パス逆引き表テンプレート109を、本実施の形態3による装置を具現化するコンピュータの記憶装置に出力し記憶する(ステップST2203)。なお、この記憶装置としては、逐次構造化文書解析プログラム生成部104及び逐次構造化文書解析部105から、出力パス逆引き表テンプレート109が読み出し可能なメモリ領域を有していればよい。
このあと、出力パス逆引き関係生成部103は、入力XML文書における末端タグ内に記述された要素・属性の名前(入力要素名・属性名)と、出力XML文書スキーマ108による情報とを用いて、出力パス検索ハッシュテーブル110を作成する(ステップST2204)。
本実施の形態3による出力パス検索ハッシュテーブル110とは、入力XML文書の入力要素名及びその属性名をキーとし、これに対応する出力要素名の出力パス逆引き表テンプレート109での位置がエントリとして関連付けて登録された電子化されたテーブル情報である。この出力パス検索ハッシュテーブル110も、出力パス逆引き関係生成部103から、逐次構造化文書解析部105により読み込み可能なメモリ領域に出力され記憶される。これにより、ステップST203の処理が終了する。
次に、ステップST204において、逐次構造化文書解析プログラム生成部104が、逐次構造化文書解析プログラム111を生成する。図24は、本実施の形態3による逐次構造化文書解析プログラム生成部104が生成する逐次構造化文書解析プログラム111の処理の枠組みを示す図であり、例えばSAX APIを用いて実現した解析プログラムのハンドラの記述である。図において、メソッドTransHandlerはコンストラクタであって、解析処理の初期化を行うメソッドである。その内容としては、出力パス逆引き表テンプレート109の内容を出力パス逆引き表113にコピーする処理と、出力パス検索ハッシュテーブル110を読み込む処理とが記述される。
メソッドstartElementは要素の開始時に実行されるメソッドであり、変数elemNameに要素名を代入する処理が記述される。メソッドendElementは要素の終了時に実行されるメソッドであり、変数elemNameにnullを代入する処理が記述される。メソッドcharactersは文字データが出現したときに実行されるメソッドであり、出力パス逆引き表113を生成する処理が記述される。
また、メソッドstartElementでは、変数elemNameに要素名を代入する処理に加え、属性名と属性値のペアを取り出し、出力パス逆引き表113に属性値をセットする処理が記述される。
逐次構造化文書解析プログラム生成部104は、出力パス逆引き表テンプレート109の内容を読み込んで、図24で示すような処理を実行させる逐次構造化文書解析プログラム111を生成すると、逐次構造化文書解析部105から読み出し可能なメモリ領域に出力し記憶させる。これにより、図2に示す一連の事前処理が終了する。
なお、構造化文書変換実行部102による動作は、上記実施の形態1と同様、図9のフローチャートに従う。先ず、逐次構造化文書解析部105は、構造化文書変換前処理部101が生成した出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110及び逐次構造化文書解析プログラム111を読み込む(ステップST901)。逐次構造化文書解析部105は、逐次構造化文書解析プログラム111(上述したSAX APIプログラム)に従って、構造変換対象の入力XML文書112を読み込み(ステップST902)、入力XML文書112の構造を解析して出力パス逆引き表113を生成する(ステップST903)。
出力パス逆引き表113の生成処理について詳細に説明すると、逐次構造化文書解析部105は、初期化処理としてメソッドTransHandlerにより、出力パス逆引き表テンプレート109の内容を出力パス逆引き表113の対応する欄に対応するメモリ領域にコピーすると共に、出力パス検索ハッシュテーブル110を読み込む。
次に、逐次構造化文書解析部105は、メソッドstartElement及びメソッドendElementにより、入力XML文書112の先頭に配置された要素から読み込み、入力XML文書112中の要素が出現するたびにその要素名を変数elemNameに格納する。このとき、メソッドstartElementにより、入力XML文書112から要素に付加された属性の属性名とその属性値のペアも取り出され、出力パス逆引き表113の対応する欄に属性値がセットされる。
また、文字列データが出現するたびに、メソッドcharactersにより、変数elemNameを参照して得た入力要素名をキーとして出力パス検索ハッシュテーブル110を検索して、当該入力要素名に対応する出力要素名の出力パス逆引き表113における位置を求め、当該出力要素名の欄に文字列データを格納する。このようにして、実施の形態3による出力パス逆引き表113が生成される。
次に、ステップST904において、出力構造化文書生成部106は、逐次構造化文書解析部105により生成された出力パス逆引き表113から出力XML文書114を生成する。この出力XML文書114の生成処理としては、出力パス逆引き表113の先頭(一番上の行)から出力要素の欄に記載されているタグに入力要素の値の欄に記載されている値を順に当てはめていくだけでよい。
このようにして、図23に示す出力パス逆引き表テンプレート109に対して、図25に示す入力XML文書112を入力したときに生成される出力パス逆引き表113を図26に示す。図26に示す出力パス逆引き表113では、入力XML文書112における、開始タグ<D>と終了タグ</D>に挟まれる文字列である「3」が、出力XML文書114の末端タグ<d>についての要素内容として出力パス逆引き表113に記入されており、開始タグ<A.C>と終了タグ</A.C>に挟まれる文字列である「2」が、出力XML文書114の末端タグ<a.c>についての要素内容として出力パス逆引き表113に記入されている。
入力要素名A.Bに対応する末端タグ<a.b>については、その入力要素の値欄に、対応する文字列データ「1」が記入されている。また、特に入力要素名A.Dに対応する属性が付加された末端タグ<a.b a.d=>については、その入力要素の値欄に、対応する文字列データ「3」が記入されている。
図26に示した出力パス逆引き表113であれば、その一番上の行から出力要素のタグを記入し、出力要素のタグに対応する入力要素の値があれば、それを順に当てはめることで、図27に示すような出力XML文書114を生成することができる。図示の例では、<a.b>と</a.b>に挟まれる文字列「1」が、属性名「a.d」の属性値が「3」であることを示すタグ<a.b a.d=”3”>と</a.b>に挟まれる文字列として変換される。このようにして生成された出力XML文書114は、出力構造化文書生成部106より変換結果として出力される(ステップST905)。
以上のように、実施の形態3では、XML文書の要素に属性が加わる場合でも、変換前のXML文書と、変換後のXML文書の要素の対応定義から、XMLデータへのランダムアクセスが必要な処理部分を、構造化文書変換前処理部101によって予め処理してSAX APIを利用したXML変換プログラムを自動生成するので、SAX APIによる構造化文書の高速な変換処理を実行することができる。
実施の形態4.
図28は、この発明の実施の形態4による構造化文書変換装置の構成を示すブロック図である。本実施の形態による構造化文書変換実行部102は、上記実施の形態1による構成に加え、構造化文書要素間計算定義(計算定義情報)2801に記述されている計算式に従って出力パス逆引き表113を更新する構造化文書要素間計算部(要素間計算部)2802を備える。また、構造化文書要素間計算定義2801は、出力XML文書114の要素名をパラメータとして要素の値を求めるための計算式が記述されている。なお、図1に示した構成要素と同一若しくはそれに相当するものについては、同一符号を付して重複する説明を省略する。
図28は、この発明の実施の形態4による構造化文書変換装置の構成を示すブロック図である。本実施の形態による構造化文書変換実行部102は、上記実施の形態1による構成に加え、構造化文書要素間計算定義(計算定義情報)2801に記述されている計算式に従って出力パス逆引き表113を更新する構造化文書要素間計算部(要素間計算部)2802を備える。また、構造化文書要素間計算定義2801は、出力XML文書114の要素名をパラメータとして要素の値を求めるための計算式が記述されている。なお、図1に示した構成要素と同一若しくはそれに相当するものについては、同一符号を付して重複する説明を省略する。
次に動作について説明する。
なお、構造化文書変換前処理部101による動作は、上記実施の形態1と同様である。
図29は、実施の形態4による構造化文書変換実行部の動作を示すフローチャートである。先ず、逐次構造化文書解析部105は、構造化文書変換前処理部101が生成した出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110及び逐次構造化文書解析プログラム111を読み込む(ステップST2901)。
なお、構造化文書変換前処理部101による動作は、上記実施の形態1と同様である。
図29は、実施の形態4による構造化文書変換実行部の動作を示すフローチャートである。先ず、逐次構造化文書解析部105は、構造化文書変換前処理部101が生成した出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110及び逐次構造化文書解析プログラム111を読み込む(ステップST2901)。
逐次構造化文書解析部105は、逐次構造化文書解析プログラム111に従って、構造変換対象の入力XML文書112を読み込み(ステップST2902)、上記実施の形態1と同様な処理により入力XML文書112の構造を解析して出力パス逆引き表113を生成する(ステップST2903)。続いて、構造化文書要素間計算部2802は、構造化文書要素間計算定義2801に従い、出力パス逆引き表113を更新する(ステップST2904)。
次に、構造化文書要素間計算部2802による出力パス逆引き表113の更新処理を詳細に説明する。図30は、出力パス逆引き表113の更新処理に利用される構造化文書要素間計算定義2801に記述された計算式の一例を示す図である。図示の計算式は、「要素名がdである要素の内容は、要素名がa.bである要素の内容と要素名がa.cである要素の内容との和に等しい」ことを表している。つまり、構造化文書要素間計算定義2801に記述される計算式は、そのパラメータとして要素名が用いられ、その値として当該要素に対応する要素の値が設定される。
ここで、逐次構造化文書解析部105が、構造化文書変換前処理部101によって図3に示す入出力対応定義107と図4に示す出力XML文書スキーマ108を用いて生成された、出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110及び逐次構造化文書解析プログラム111を読み込んで、図31に示す入力XML文書112から図32に示すような出力パス逆引き表113を生成する。この出力パス逆引き表113の内容を、構造化文書要素間計算部2802が、図30に示す計算式で更新する。
具体的に説明すると、図32に示す出力パス逆引き表113では、出力要素のタグ<a.c>に対応する末端入力要素名A.Cについての入力要素の値として「2」がセットされており、出力要素のタグ<a.b>に対応する末端入力要素名A.Bについての入力要素の値として「1」がセットされている。また、出力要素のタグ<d>に対応する末端入力要素名Dについての入力要素の値はセットされていない。
構造化文書要素間計算部2802は、この出力パス逆引き表113を入力すると、構造化文書要素間計算定義2801における図30に示した計算式でその内容の更新を実行する。つまり、図30に示した計算式「d=a.b+a.c」により、要素名dのタグ<d>に対応する入力要素の値が、要素名a.bのタグ<a.b>に対応する入力要素の値「1」と要素名a.cのタグ<a.c>に対応する入力要素の値「2」との和である「3」として求められ、この算出結果がセットされる。
これにより、図32に示す出力パス逆引き表113が、図30に示した計算式で要素名dのタグ<d>に対応する入力要素の値が「3」に更新される。この結果として得られた出力パス逆引き表113を図33に示す。
上述のようにして出力パス逆引き表113が更新されると、出力構造化文書生成部106は、この出力パス逆引き表113を利用して出力XML文書114を生成する。この出力XML文書114の生成処理としては、出力パス逆引き表113の先頭(一番上の行)から出力要素の欄に記載されているタグに入力要素の値の欄に記載されている値を順に当てはめていくだけでよい。
図33に示した更新された出力パス逆引き表113を利用して生成された出力XML文書114を図34に示す。図示の例では、タグ<d>と</d>に挟まれた文字列として更新内容である「3」が設定されている。
以上のように、実施の形態4では、XML文書の要素名をパラメータとして要素の値を求めるための計算式を定義した構造化文書要素間計算定義2801を備え、この構造化文書要素間計算定義2801に定義された計算式に従って、構造化文書要素間計算部2802が、出力パス逆引き表113における要素の値を更新するので、要素の値同士の計算結果を出力XML文書の要素に格納して出力することができる。
また、上記実施の形態1と同様に、構造化文書変換前処理部101により、変換前のXML文書と変換後のXML文書の要素の対応定義からXMLデータへのランダムアクセスが必要な処理部分を予め処理しておき、SAX APIを利用したXML変換プログラムを自動生成するので、SAX APIによる構造化文書の高速な変換処理を実行することができる。
実施の形態5.
図35は、この発明の実施の形態5による構造化文書変換装置の構成を示すブロック図である。本実施の形態による構造化文書変換実行部102は、上記実施の形態1による構成に加え、構造化文書反復要素計算定義(計算定義情報)3501に記述されている計算式に従って出力パス逆引き表113を更新する構造化文書反復要素計算部(反復要素計算部)3502を備える。また、構造化文書反復要素計算定義3501は、出力XML文書114の反復要素の要素名をパラメータとして要素の値を求めるための計算式が記述されている。なお、図1に示した構成要素と同一若しくはそれに相当するものについては、同一符号を付して重複する説明を省略する
図35は、この発明の実施の形態5による構造化文書変換装置の構成を示すブロック図である。本実施の形態による構造化文書変換実行部102は、上記実施の形態1による構成に加え、構造化文書反復要素計算定義(計算定義情報)3501に記述されている計算式に従って出力パス逆引き表113を更新する構造化文書反復要素計算部(反復要素計算部)3502を備える。また、構造化文書反復要素計算定義3501は、出力XML文書114の反復要素の要素名をパラメータとして要素の値を求めるための計算式が記述されている。なお、図1に示した構成要素と同一若しくはそれに相当するものについては、同一符号を付して重複する説明を省略する
次に動作について説明する。
なお、構造化文書変換前処理部101による動作は、上記実施の形態2と同様である。
図36は、実施の形態5による構造化文書変換実行部の動作を示すフローチャートである。先ず、逐次構造化文書解析部105は、構造化文書変換前処理部101が生成した出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110及び逐次構造化文書解析プログラム111を読み込む(ステップST3601)。
なお、構造化文書変換前処理部101による動作は、上記実施の形態2と同様である。
図36は、実施の形態5による構造化文書変換実行部の動作を示すフローチャートである。先ず、逐次構造化文書解析部105は、構造化文書変換前処理部101が生成した出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110及び逐次構造化文書解析プログラム111を読み込む(ステップST3601)。
逐次構造化文書解析部105は、逐次構造化文書解析プログラム111に従って、構造変換対象の入力XML文書112を読み込み(ステップST3602)、上記実施の形態2と同様な処理により入力XML文書112の構造を解析して出力パス逆引き表113を生成する(ステップST3603)。続いて、構造化文書反復要素計算部3502は、構造化文書反復要素計算定義3501に従い、出力パス逆引き表113を更新する(ステップST3604)。
次に、構造化文書反復要素計算部3502による出力パス逆引き表113の更新処理を詳細に説明する。図37は、出力パス逆引き表113の更新処理に利用される構造化文書反復要素計算定義3501に記述された計算式の一例を示す図である。図示の計算式は、「要素名がa.cである反復要素の3番目の内容は、1番目の内容と2番目の内容の和に等しい」ことを表している。つまり、構造化文書要素間計算定義2801に記述される計算式は、要素名の他にXML文書中での反復して出現する回数を規定したパラメータが用いられ、このパラメータには当該要素のその回数での要素の値が設定される。
ここで、逐次構造化文書解析部105が、構造化文書変換前処理部101によって図3に示す入出力対応定義107と図13に示す出力XML文書スキーマ108を用いて生成された、出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110及び逐次構造化文書解析プログラム111を読み込んで、図38に示す入力XML文書112から図39に示すような出力パス逆引き表113を生成する。この出力パス逆引き表113の内容を、構造化文書反復要素計算部3502が図37に示す計算式で更新する。
具体的に説明すると、図39の出力パス逆引き表113では、入力XML文書112における、タグ<D>と</D>に挟まれる文字列である「3」が、出力XML文書114の末端タグ<d>についての要素内容として出力パス逆引き表113に記入されている。また、入力要素名A.Cに対応する末端タグ<a.c>について、繰り返し種別「*」が設定されており、繰り返しの出現により3行分の記入欄が出力パス逆引き表113に構成されている。
出力要素<a.c>及び入力要素名A.Cに関する各入力要素の値欄には、配置順に文字列データ「2」、「3」が記入されており、3番目の入力要素の値欄は未記入である。さらに、タグ<A.B>と</A.B>に挟まれる文字列である「1」が、入力要素名A.Bに対応する末端タグ<a.b>で規定される要素の値として記入されている。
構造化文書反復要素計算部3502は、この出力パス逆引き表113を入力すると、構造化文書反復要素計算定義3501における図37に示した計算式でその内容の更新を実行する。つまり、図37に示した計算式「a.c[3]=a.c[1]+a.c[2]」により、出力パス逆引き表113における出力要素<a.c>の3番目に対応する入力要素の値が、1番目に対応する入力要素の値「2」と、2番目に対応する入力要素の値「3」との和である「5」として求められ、この算出結果が3番目の出力要素<a.c>に対応する入力要素の値欄にセットされる。
これにより、図39に示す出力パス逆引き表113が、図37に示した計算式で3番目の出力要素<a.c>に対応する入力要素の値が「5」に更新される。この結果として得られた出力パス逆引き表113を図40に示す。
上述のようにして出力パス逆引き表113が更新されると、出力構造化文書生成部106は、この出力パス逆引き表113を利用して出力XML文書114を生成する。この出力XML文書114の生成処理としては、出力パス逆引き表113の先頭(一番上の行)から出力要素の欄に記載されているタグに入力要素の値の欄に記載されている値を順に当てはめていくだけでよい。
図40に示した更新された出力パス逆引き表113を利用して生成された出力XML文書114を図41に示す。図示の例では、3番目のタグ<a.c>と</a.c>に挟まれた文字列として更新内容である「5」が設定されている。
以上のように、実施の形態5では、XML文書の反復要素の計算式を定義することにより、計算結果を出力XML文書の要素に格納して出力することができる。XML文書の要素名及びその反復回数をパラメータとして要素の値を求めるための計算式を定義した構造化文書反復要素計算定義3501を備え、この構造化文書反復要素計算定義3501に定義された計算式に従って、構造化文書反復要素計算部3502が、出力パス逆引き表113における要素の値を更新するので、文書中の反復要素を用いた計算結果を出力XML文書の要素に格納して出力することができる。
また、上記実施の形態1と同様に、構造化文書変換前処理部101により、変換前のXML文書と変換後のXML文書の要素の対応定義からXMLデータへのランダムアクセスが必要な処理部分を予め処理しておき、SAX APIを利用したXML変換プログラムを自動生成するので、SAX APIによる構造化文書の高速な変換処理を実行することができる。
実施の形態6.
この実施の形態6は、上記実施の形態1で示した処理に加え、変換後の構造化文書をCSV(Comma Separated Value)形式で出力する構成を開示するものである。
この実施の形態6は、上記実施の形態1で示した処理に加え、変換後の構造化文書をCSV(Comma Separated Value)形式で出力する構成を開示するものである。
実施の形態6による構造化文書変換装置の基本的な構成は、上記実施の形態1の図1で示したものと同様である。上記実施の形態1と異なる箇所として、構造化文書変換前処理部101が、出力XML文書をCSV形式に変換する出力パス逆引き表テンプレート109及び出力パス逆引き表113を生成する。
図42は、実施の形態6における入出力対応定義107を示す図である。この入出力対応定義107では、上記実施の形態1における入力XMLの欄と出力XMLの欄に加え、出力カラム番号の欄が設けられている。この出力カラム番号に設定される値は、CSV形式でコンマで区切りながら入力要素の値を並べて記述するにあたり、その記述される順番を示している。
次に動作について説明する。
先ず、構造化文書変換前処理部101は、図2に示すフローチャートに従って、ステップST201で、図42で示した入出力対応定義107を読み込み、続いて図4に示す出力XML文書の出力XML文書スキーマ108を読み込む(ステップST202)。このあと、構造化文書変換前処理部101は、図42に示した入出力対応定義107及び図4に示す出力XML文書スキーマ108を用いて、出力パス逆引き表テンプレート109及び出力パス検索ハッシュテーブル110を生成する(ステップST203)。
先ず、構造化文書変換前処理部101は、図2に示すフローチャートに従って、ステップST201で、図42で示した入出力対応定義107を読み込み、続いて図4に示す出力XML文書の出力XML文書スキーマ108を読み込む(ステップST202)。このあと、構造化文書変換前処理部101は、図42に示した入出力対応定義107及び図4に示す出力XML文書スキーマ108を用いて、出力パス逆引き表テンプレート109及び出力パス検索ハッシュテーブル110を生成する(ステップST203)。
図43は、実施の形態6による出力パス逆引き表テンプレート及び出力パス検索ハッシュテーブルの生成処理を示すフローチャートであり、本実施の形態に合わせて図2中のステップST203での処理を詳細に示したものである。先ず、ステップST4301において、実施の形態6による出力パス逆引き関係生成部103は、出力XML文書スキーマ108をXML文書形式に変換してその全てのタグを出力XML文書中の配置順で並べる表データを作成する。このとき、入出力対応定義107に出力カラム番号が見出されると、出力パス逆引き関係生成部103は、上記表に対して各タグに対応する出力カラム番号を記入するための出力カラム番号欄を設ける。
次に、出力パス逆引き関係生成部103は、入出力対応定義107を用いて、出力XML文書の末端タグに対応する入力XML文書の末端タグの要素名を、ステップST4301で作成した表データに記入する(ステップST4302)。
続いて、出力パス逆引き関係生成部103は、出力XML文書中のタグに対応して設定される出力カラム番号の値を上記表の出力カラム番号欄に記入する(ステップST4303)。図42の例では、「a.b」、「a.c」、「d」にそれぞれ対応する出力カラム番号3、2、1が出力カラム番号欄に記入される。
これにより、出力XML文書(変換後の構造化文書)の全てのタグを各配置順で記入したデータに対して、出力XML文書の末端タグに対応する入力XML文書(変換前の構造化文書)の末端タグの要素名が記入され、またその出力要素に対応する出力カラム番号が記入された表データが作成される。この表データが、本実施の形態6による出力パス逆引き表テンプレート109となる。
図44は、図42に示す入出力対応定義107と図4の出力XML文書スキーマ108に基づいて作成された出力パス逆引き表テンプレート109を示す図である。図のように、本実施の形態6による出力パス逆引き表テンプレート109は、出力XML文書中の配置順で出力XML文書のタグがそれぞれ記入された出力要素欄、出力要素欄のタグに対応する入力XML文書の末端タグが記載された末端入力要素欄、及び出力要素欄に記載されたタグに対応する出力カラム番号を記入するための出力カラム番号欄からなる。
次に、出力パス逆引き関係生成部103は、上述のようにして作成した出力パス逆引き表テンプレート109を、本実施の形態6による装置を具現化するコンピュータの記憶装置に出力し記憶する(ステップST4304)。なお、この記憶装置としては、逐次構造化文書解析プログラム生成部104及び逐次構造化文書解析部105から、出力パス逆引き表テンプレート109が読み出し可能なメモリ領域を有していればよい。
このあと、出力パス逆引き関係生成部103は、入力XML文書における末端タグ内に記述された要素の名前(入力要素名)と、出力XML文書スキーマ108による情報とを用いて、出力パス検索ハッシュテーブル110を作成する(ステップST4305)。
ここで作成される出力パス検索ハッシュテーブル110は、入力要素名及び出力カラム番号の値をキーとし、これに対応する出力要素名の出力パス逆引き表テンプレート109での位置がエントリとして関連付けて登録された電子化されたテーブル情報である。この出力パス検索ハッシュテーブル110も、出力パス逆引き関係生成部103から、逐次構造化文書解析部105により読み込み可能なメモリ領域に出力され記憶される。これにより、ステップST203の処理が終了する。
ステップST204において、逐次構造化文書解析プログラム生成部104は、上記記憶装置のメモリ領域から出力パス逆引き表テンプレート109を読み出し、当該出力パス逆引き表テンプレート109を用いて逐次構造化文書解析プログラム111を生成する。逐次構造化文書解析プログラム111には、出力パス逆引き表テンプレート109を用いて入力XML文書と出力XML文書との間における末端タグの対応関係を認識し、入力XML文書先頭の要素から順に対応する出力XML文書の要素を特定するための出力パス逆引き表113を作成する処理が規定される。
次に、構造化文書変換実行部102の動作について説明する。
図45は、実施の形態6による構造化文書変換実行部102の動作を示すフローチャートであり、この図に沿って説明する。先ず、逐次構造化文書解析部105は、構造化文書変換前処理部101が生成した出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110及び逐次構造化文書解析プログラム111を読み込む(ステップST4501)。次に、逐次構造化文書解析部105は、逐次構造化文書解析プログラム111(上述のようにして作成されたSAX APIプログラム)に従って、構造変換対象の入力XML文書112を読み込み(ステップST4502)、入力XML文書112の構造を解析して出力パス逆引き表113を生成する(ステップST4503)。
図45は、実施の形態6による構造化文書変換実行部102の動作を示すフローチャートであり、この図に沿って説明する。先ず、逐次構造化文書解析部105は、構造化文書変換前処理部101が生成した出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110及び逐次構造化文書解析プログラム111を読み込む(ステップST4501)。次に、逐次構造化文書解析部105は、逐次構造化文書解析プログラム111(上述のようにして作成されたSAX APIプログラム)に従って、構造変換対象の入力XML文書112を読み込み(ステップST4502)、入力XML文書112の構造を解析して出力パス逆引き表113を生成する(ステップST4503)。
ここで、出力パス逆引き表113の生成処理について詳細に説明する。
先ず、逐次構造化文書解析部105は、初期化処理として、出力パス逆引き表テンプレート109の内容を出力パス逆引き表113の対応する欄に対応するメモリ領域にコピーすると共に、出力パス検索ハッシュテーブル110を読み込む。
先ず、逐次構造化文書解析部105は、初期化処理として、出力パス逆引き表テンプレート109の内容を出力パス逆引き表113の対応する欄に対応するメモリ領域にコピーすると共に、出力パス検索ハッシュテーブル110を読み込む。
次に、逐次構造化文書解析部105は、入力XML文書112の先頭に配置された要素から読み込み、入力XML文書112中の要素が出現するたびにその要素名及び出力カラム番号の値を変数elemNameに格納する。また、文字列データが出現するたびに、変数elemNameを参照して得た入力要素名及び出力カラム番号の値をキーとして出力パス検索ハッシュテーブル110を検索し、これらに対応する出力要素名の出力パス逆引き表113における位置を求め、この出力要素名の欄に文字列データを格納する。
このようにして、図44に示す出力パス逆引き表テンプレート109に対して、図10に示す入力XML文書112を入力したときに生成される出力パス逆引き表113を図46に示す。図46に示す出力パス逆引き表113では、入力XML文書112における、タグ<D>と</D>に挟まれる文字列である「3」が、出力XML文書114の末端タグ<d>についての要素内容として出力パス逆引き表113に記入される。この要素内容についての出力カラム番号「1」が出力カラム番号欄に記入される。また、タグ<A.C>と</A.C>に挟まれる文字列である「2」が、入力要素名A.Cに対応する末端タグ<a.c>で規定される要素の値(要素内容)として出力パス逆引き表113に記入される。この要素内容についての出力カラム番号「2」が出力カラム番号欄に記入される。さらに、タグ<A.B>と</A.B>に挟まれる文字列である「1」が、入力要素名A.Bに対応する末端タグ<a.b>で規定される要素の値として出力パス逆引き表113に記入される。この要素内容についての出力カラム番号「3」が出力カラム番号欄に記入される。
図42に示す入出力対応定義107と図4に示す出力XML文書スキーマ108から生成された出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110、及び逐次構造化文書解析プログラム111を読み込み、図10に示す入力XML文書112から、逐次構造化文書解析部105によって生成された出力パス逆引き表113を、図46に示す。
次に、出力構造化文書生成部106は、逐次構造化文書解析部105により生成された出力パス逆引き表113を出力カラム番号でソートする(ステップST4504)。このあと、出力構造化文書生成部106は、ソート済みの出力パス逆引き表113の先頭(出力カラム番号の一番若い)出力要素から順に対応する入力要素の値をコンマで区切って逐次出力する出力CSV文書を作成し変換結果として出力する(ステップST4505)。このCSV形式の出力ファイルを、図47に示す。
以上のように、実施の形態6では、入出力対応定義107に出力CSV文書における出力カラム番号を記述し、出力カラム番号で要素をソート可能な出力パス逆引き表113を設けたので、XML形式の文書のみでなく、必要に応じてCSV形式の文書も出力することができる。
また、上記実施の形態1と同様に、構造化文書変換前処理部101により、変換前のXML文書と変換後のXML文書の要素の対応定義からXMLデータへのランダムアクセスが必要な処理部分を予め処理しておき、SAX APIを利用したXML変換プログラムを自動生成するので、SAX APIによる構造化文書の高速な変換処理を実行することができる。
実施の形態7.
この実施の形態7は、上記実施の形態1で示した処理に加え、変換後の構造化文書をパンチデータ形式で出力する構成を開示するものである。ここで、パンチデータ形式の文書とは、要素を出力する位置を、先頭位置からの桁数で指定する文書形式である。なお、本実施の形態では、要素と要素の間に区切り記号を用いなくともよいものとする。また、要素の文字列長が、指定された長さより短いときは空白文字を埋めることとする。
この実施の形態7は、上記実施の形態1で示した処理に加え、変換後の構造化文書をパンチデータ形式で出力する構成を開示するものである。ここで、パンチデータ形式の文書とは、要素を出力する位置を、先頭位置からの桁数で指定する文書形式である。なお、本実施の形態では、要素と要素の間に区切り記号を用いなくともよいものとする。また、要素の文字列長が、指定された長さより短いときは空白文字を埋めることとする。
実施の形態7による構造化文書変換装置の基本的な構成は、上記実施の形態1の図1で示したものと同様である。上記実施の形態1と異なる箇所として、構造化文書変換前処理部101が、出力XML文書をパンチデータ形式に変換するための出力パス逆引き表テンプレート109及び出力パス逆引き表113を生成する。
図48は、実施の形態7における入出力対応定義107を示す図である。この入出力対応定義107では、上記実施の形態1における入力XMLの欄と出力XMLの欄に加え、パンチデータ形式で記載する要素の値の出力桁位置を記入する出力桁位置欄が設けられている。
次に動作について説明する。
先ず、構造化文書変換前処理部101は、図2に示すフローチャートに従って、ステップST201で、図48で示した入出力対応定義107を読み込み、続いて図4に示す出力XML文書の出力XML文書スキーマ108を読み込む(ステップST202)。このあと、構造化文書変換前処理部101は、図48に示した入出力対応定義107及び図4に示す出力XML文書スキーマ108を用いて、出力パス逆引き表テンプレート109及び出力パス検索ハッシュテーブル110を生成する(ステップST203)。
先ず、構造化文書変換前処理部101は、図2に示すフローチャートに従って、ステップST201で、図48で示した入出力対応定義107を読み込み、続いて図4に示す出力XML文書の出力XML文書スキーマ108を読み込む(ステップST202)。このあと、構造化文書変換前処理部101は、図48に示した入出力対応定義107及び図4に示す出力XML文書スキーマ108を用いて、出力パス逆引き表テンプレート109及び出力パス検索ハッシュテーブル110を生成する(ステップST203)。
図49は、実施の形態7による出力パス逆引き表テンプレート及び出力パス検索ハッシュテーブルの生成処理を示すフローチャートであり、本実施の形態に合わせて図2中のステップST203での処理を詳細に示したものである。先ず、ステップST4901において、実施の形態7による出力パス逆引き関係生成部103は、出力XML文書スキーマ108をXML文書形式に変換してその全てのタグを出力XML文書中の配置順で並べる表データを作成する。このとき、入出力対応定義107にパンチデータ形式での出力桁位置情報が見出されると、出力パス逆引き関係生成部103は、上記表に対して各タグに対応する出力桁位置を記入するための出力桁位置欄を設ける。
次に、出力パス逆引き関係生成部103は、入出力対応定義107を用いて、出力XML文書の末端タグに対応する入力XML文書の末端タグの要素名を、ステップST4901で作成した表データに記入する(ステップST4902)。
続いて、出力パス逆引き関係生成部103は、出力XML文書中のタグに対応して設定される出力桁位置を上記表の出力桁位置欄に記入する(ステップST4903)。図48の例では、「a.b」、「a.c」、「d」にそれぞれ対応する出力桁位置5、3、1が出力桁位置欄に記入される。
これにより、出力XML文書(変換後の構造化文書)の全てのタグを各配置順で記入したデータに対して、出力XML文書の末端タグに対応する入力XML文書(変換前の構造化文書)の末端タグの要素名が記入され、またその出力要素に対応する出力桁位置が記入された表データが作成される。この表データが、本実施の形態7による出力パス逆引き表テンプレート109となる。
図50は、図48に示す入出力対応定義107と図4の出力XML文書スキーマ108に基づいて作成された出力パス逆引き表テンプレート109を示す図である。図のように、本実施の形態7による出力パス逆引き表テンプレート109は、出力XML文書中の配置順で出力XML文書のタグがそれぞれ記入された出力要素欄、出力要素欄のタグに対応する入力XML文書の末端タグが記載された末端入力要素欄、及び出力要素欄に記載されたタグに対応する出力桁位置を記入するための出力桁位置欄からなる。
次に、出力パス逆引き関係生成部103は、上述のようにして作成した出力パス逆引き表テンプレート109を、本実施の形態7による装置を具現化するコンピュータの記憶装置に出力し記憶する(ステップST4904)。なお、この記憶装置としては、逐次構造化文書解析プログラム生成部104及び逐次構造化文書解析部105から、出力パス逆引き表テンプレート109が読み出し可能なメモリ領域を有していればよい。
このあと、出力パス逆引き関係生成部103は、入力XML文書における末端タグ内に記述された要素の名前(入力要素名)と、出力XML文書スキーマ108による情報とを用いて、出力パス検索ハッシュテーブル110を作成する(ステップST4905)。
ここで作成される出力パス検索ハッシュテーブル110は、入力要素名及び出力桁位置をキーとし、これに対応する出力要素名の出力パス逆引き表テンプレート109での位置がエントリとして関連付けて登録された電子化されたテーブル情報である。この出力パス検索ハッシュテーブル110も、出力パス逆引き関係生成部103から、逐次構造化文書解析部105により読み込み可能なメモリ領域に出力され記憶される。これにより、ステップST203の処理が終了する。
ステップST204において、逐次構造化文書解析プログラム生成部104は、上記記憶装置のメモリ領域から出力パス逆引き表テンプレート109を読み出し、当該出力パス逆引き表テンプレート109を用いて逐次構造化文書解析プログラム111を生成する。逐次構造化文書解析プログラム111には、出力パス逆引き表テンプレート109を用いて入力XML文書と出力XML文書との間における末端タグの対応関係を認識し、入力XML文書先頭の要素から順に対応する出力XML文書の要素を特定するための出力パス逆引き表113を作成する処理が規定される。
次に、構造化文書変換実行部102の動作について説明する。
図51は、実施の形態7による構造化文書変換実行部102の動作を示すフローチャートであり、この図に沿って説明する。先ず、逐次構造化文書解析部105は、構造化文書変換前処理部101が生成した出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110及び逐次構造化文書解析プログラム111を読み込む(ステップST5101)。
図51は、実施の形態7による構造化文書変換実行部102の動作を示すフローチャートであり、この図に沿って説明する。先ず、逐次構造化文書解析部105は、構造化文書変換前処理部101が生成した出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110及び逐次構造化文書解析プログラム111を読み込む(ステップST5101)。
次に、逐次構造化文書解析部105は、逐次構造化文書解析プログラム111(上述のようにして作成されたSAX APIプログラム)に従って、構造変換対象の入力XML文書112を読み込み(ステップST5102)、入力XML文書112の構造を解析して出力パス逆引き表113を生成する(ステップST5103)。
ここで、出力パス逆引き表113の生成処理について詳細に説明する。
先ず、逐次構造化文書解析部105は、初期化処理として、出力パス逆引き表テンプレート109の内容を出力パス逆引き表113の対応する欄に対応するメモリ領域にコピーすると共に、出力パス検索ハッシュテーブル110を読み込む。
先ず、逐次構造化文書解析部105は、初期化処理として、出力パス逆引き表テンプレート109の内容を出力パス逆引き表113の対応する欄に対応するメモリ領域にコピーすると共に、出力パス検索ハッシュテーブル110を読み込む。
次に、逐次構造化文書解析部105は、入力XML文書112の先頭に配置された要素から読み込み、入力XML文書112中の要素が出現するたびにその要素名及び出力桁位置を変数elemNameに格納する。また、文字列データが出現するたびに、変数elemNameを参照して得た入力要素名及び出力桁位置をキーとして出力パス検索ハッシュテーブル110を検索し、これらに対応する出力要素名の出力パス逆引き表113における位置を求め、この出力要素名の欄に文字列データを格納する。
このようにして、図50に示す出力パス逆引き表テンプレート109に対して、図10に示す入力XML文書112を入力したときに生成される出力パス逆引き表113を図52に示す。図52に示す出力パス逆引き表113では、入力XML文書112における、タグ<D>と</D>に挟まれる文字列である「3」が、出力XML文書114の末端タグ<d>についての要素内容として出力パス逆引き表113に記入される。この要素内容についての出力桁位置「1」が出力桁位置欄に記入される。
また、タグ<A.C>と</A.C>に挟まれる文字列である「2」が、入力要素名A.Cに対応する末端タグ<a.c>で規定される要素の値(要素内容)として出力パス逆引き表113に記入される。この要素内容についての出力桁位置「3」が出力桁位置欄に記入される。さらに、タグ<A.B>と</A.B>に挟まれる文字列である「1」が、入力要素名A.Bに対応する末端タグ<a.b>で規定される要素の値として出力パス逆引き表113に記入される。この要素内容についての出力桁位置「5」が出力桁位置欄に記入される。
図48に示す入出力対応定義107と図4に示す出力XML文書スキーマ108から生成された出力パス逆引き表テンプレート109、出力パス検索ハッシュテーブル110、及び逐次構造化文書解析プログラム111を読み込み、図10に示す入力XML文書112から、逐次構造化文書解析部105によって生成された出力パス逆引き表113を、図52に示す。
次に、出力構造化文書生成部106は、逐次構造化文書解析部105により生成された出力パス逆引き表113を出力カラム番号でソートする(ステップST5104)。このあと、出力構造化文書生成部106は、ソート済みの出力パス逆引き表113の先頭(出力桁位置の値が一番若い)出力要素から順に対応する入力要素の値をコンマで区切って逐次出力するパンチデータ形式の文書を作成し変換結果として出力する(ステップST5105)。このパンチデータ形式の出力ファイルを、図53に示す。
以上のように、実施の形態7では、入出力対応定義107にパンチデータ形式文書における出力桁位置を記述し、出力桁位置で要素をソート可能な出力パス逆引き表113を設けたので、入出力対応定義107に出力の桁位置を記述しておくことにより、XML形式の文書のみでなく、必要に応じてパンチデータ形式の文書も出力することができる。
また、上記実施の形態1と同様に、構造化文書変換前処理部101により、変換前のXML文書と変換後のXML文書の要素の対応定義からXMLデータへのランダムアクセスが必要な処理部分を予め処理しておき、SAX APIを利用したXML変換プログラムを自動生成するので、SAX APIによる構造化文書の高速な変換処理を実行することができる。
101 構造化文書変換前処理部、102 構造化文書変換実行部、103 出力パス逆引き関係生成部(情報生成部)、104 逐次構造化文書解析プログラム生成部(プログラム生成部)、105 逐次構造化文書解析部(文書解析部)、106 出力構造化文書生成部(文書変換部)、107 入出力対応定義(対応定義情報)、108 出力XML文書スキーマ(スキーマ)、109 出力パス逆引き表テンプレート(テンプレート情報)、110 出力パス検索ハッシュテーブル(検索テーブル情報)、111 逐次構造化文書解析プログラム(逐次解析プログラム)、112 入力XML文書(変換対象の構造化文書)、113 出力パス逆引き表(逆引き表情報)、114 出力XML文書(変換後の構造化文書)、2801 構造化文書要素間計算定義(計算定義情報)、2802 構造化文書要素間計算部(要素間計算部)、3501 構造化文書反復要素計算定義(計算定義情報)、3502 構造化文書反復要素計算部(反復要素計算部)。
Claims (8)
- 変換対象の構造化文書とこれに施すべき文書構造変換を行った構造化文書との間での末端タグの対応関係を示す対応定義情報及び上記変換後の構造化文書の文書構造を示すスキーマを入力し、これらの情報に基づいて上記変換後の構造化文書における全てのタグと上記変換対象の構造化文書における末端タグとの対応関係を示すテンプレート情報及び上記変換対象の構造化文書における要素名をキーとして上記変換後の構造化文書の対応する要素名を検索するための検索テーブル情報を生成する情報生成部と、
上記テンプレート情報に基づいて、上記変換後の構造化文書における全てのタグ、上記変換対象の構造化文書における末端タグ及びその要素の値を、上記変換後の構造化文書におけるタグ配置順にそれぞれ対応付けた逆引き表情報を生成するための逐次解析プログラムを生成するプログラム生成部と、
上記プログラム生成部が生成した逐次解析プログラムに従って、上記テンプレート情報及び上記検索テーブル情報を用いて変換対象の構造化文書を文書先頭のタグから逐次解析し、当該構造化文書に応じた逆引き表情報を生成する文書解析部と、
上記逆引き表情報に基づいて、上記変換後の構造化文書におけるタグ配置順で上記変換対象の構造化文書の対応するタグの要素の値を当てはめることにより、当該変換対象の構造化文書に対応した変換後の構造化文書を生成する文書変換部と
を備えた構造化文書変換装置。 - 情報生成部は、入力した変換後の構造化文書のスキーマに文書構造中に繰り返し出現する反復要素が記述されていると、上記変換後の構造化文書における上記要素の反復仕様をも規定したテンプレート情報及び検索テーブル情報を生成し、
プログラム生成部は、上記テンプレート情報に基づいて、上記変換後の構造化文書における上記反復要素の繰り返し分を付加したタグ配置順で、上記変換後の構造化文書における全てのタグ、上記変換対象の構造化文書における末端タグ及びその要素の値をそれぞれ対応付けた逆引き表情報を生成するための逐次解析プログラムを生成し、
文書変換部は、文書解析部が生成した上記逆引き表情報に基づいて、上記変換後の構造化文書における上記反復要素の繰り返し分を付加したタグ配置順で上記変換対象の構造化文書の対応するタグの要素の値を当てはめることにより、当該変換対象の構造化文書に対応した変換後の構造化文書を生成することを特徴とする請求項1記載の構造化文書変換装置。 - 情報生成部は、入力した対応定義情報に変換対象の構造化文書又はこれに施すべき文書構造変換を行った構造化文書におけるタグの属性が記述されていると、上記変換後の構造化文書における上記タグの属性をも規定したテンプレート情報及び検索テーブル情報を生成し、
プログラム生成部は、上記テンプレート情報に基づいて、上記変換後の構造化文書における全てのタグ、上記変換対象の構造化文書における末端タグ、その要素の値及びタグの属性を、上記変換後の構造化文書におけるタグ配置順にそれぞれ対応付けた逆引き表情報を生成するための逐次解析プログラムを生成し、
文書変換部は、文書解析部が生成した上記逆引き表情報に基づいて、上記変換後の構造化文書におけるタグ配置順で上記変換対象の構造化文書の対応するタグの要素の値及び属性の値を当てはめることにより、当該変換対象の構造化文書に対応した変換後の構造化文書を生成することを特徴とする請求項1記載の構造化文書変換装置。 - 構造化文書における要素間の計算処理を定義した計算定義情報を入力し、この情報を参照して要素間の計算処理を行って逆引き表情報における要素内容を更新する要素間計算部を備えたことを特徴とする請求項1記載の構造化文書変換装置。
- 構造化文書における反復要素の計算処理を定義した計算定義情報を入力し、この情報を参照して要素間の計算処理を行って逆引き表情報における要素内容を更新する反復要素計算部を備えたことを特徴とする請求項2記載の構造化文書変換装置。
- 情報生成部は、入力した対応定義情報に、変換後の構造化文書における要素の値をCSV形式で出力する際の出力順を規定する出力カラム番号が記述されていると、上記変換後の構造化文書における上記出力カラム番号をも規定したテンプレート情報及び検索テーブル情報を生成し、
プログラム生成部は、上記テンプレート情報に基づいて、上記変換後の構造化文書における全てのタグ、上記変換対象の構造化文書における末端タグ、その要素の値及び出力カラム番号を、上記変換後の構造化文書におけるタグ配置順にそれぞれ対応付けた逆引き表情報を生成するための逐次解析プログラムを生成し、
文書変換部は、文書解析部が生成した上記逆引き表情報に基づいて、上記変換後の構造化文書におけるタグ配置順で上記変換対象の構造化文書の対応するタグの要素の値及び属性の値を当てはめることにより当該変換対象の構造化文書に対応した変換後の構造化文書を生成し、当該変換後の構造化文書を上記出力カラム番号順に要素の値をソートしてCSV形式で出力することを特徴とする請求項1記載の構造化文書変換装置。 - 情報生成部は、入力した対応定義情報に、変換後の構造化文書における要素の値をパンチデータ形式で出力する際の出力順を規定する出力桁位置が記述されていると、上記変換後の構造化文書における上記出力カラム番号をも規定したテンプレート情報及び検索テーブル情報を生成し、
プログラム生成部は、上記テンプレート情報に基づいて、上記変換後の構造化文書における全てのタグ、上記変換対象の構造化文書における末端タグ、その要素の値及び出力桁位置を、上記変換後の構造化文書におけるタグ配置順にそれぞれ対応付けた逆引き表情報を生成するための逐次解析プログラムを生成し、
文書変換部は、文書解析部が生成した上記逆引き表情報に基づいて、上記変換後の構造化文書におけるタグ配置順で上記変換対象の構造化文書の対応するタグの要素の値及び属性の値を当てはめることにより当該変換対象の構造化文書に対応した変換後の構造化文書を生成し、当該変換後の構造化文書を上記出力桁位置順に要素の値をソートしてパンチデータ形式で出力することを特徴とする請求項1記載の構造化文書変換装置。 - 変換対象の構造化文書とこれに施すべき文書構造変換を行った構造化文書との間での末端タグの対応関係を示す対応定義情報、及び上記変換後の構造化文書の文書構造を示すスキーマを入力し、これらに基づいて上記変換後の構造化文書における全てのタグと上記変換対象の構造化文書における末端タグとの対応関係を示すテンプレート情報及び上記変換対象の構造化文書における要素名をキーとして上記変換後の構造化文書の対応する要素名を検索するための検索テーブル情報を生成する情報生成部、
上記テンプレート情報に基づいて上記変換後の構造化文書における全てのタグ、上記変換対象の構造化文書における末端タグ及びその要素の値を、上記変換後の構造化文書におけるタグ配置順にそれぞれ対応付けた逆引き表情報を生成するための逐次解析プログラムを生成するプログラム生成部、
上記プログラム生成部が生成した逐次解析プログラムに従って、上記テンプレート情報及び上記検索テーブル情報を用いて変換対象の構造化文書を文書先頭のタグから逐次解析し、当該構造化文書に応じた逆引き表情報を生成し上記記憶部に格納する文書解析部、
上記逆引き表情報に基づいて上記変換後の構造化文書におけるタグ配置順で上記変換対象の構造化文書の対応するタグの要素の値を当てはめることにより、当該変換対象の構造化文書に対応した変換後の構造化文書を生成する文書変換部
としてコンピュータを機能させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004184005A JP2006011549A (ja) | 2004-06-22 | 2004-06-22 | 構造化文書変換装置及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004184005A JP2006011549A (ja) | 2004-06-22 | 2004-06-22 | 構造化文書変換装置及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006011549A true JP2006011549A (ja) | 2006-01-12 |
Family
ID=35778783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004184005A Pending JP2006011549A (ja) | 2004-06-22 | 2004-06-22 | 構造化文書変換装置及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006011549A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007264792A (ja) * | 2006-03-27 | 2007-10-11 | Fujitsu Ltd | 音声ブラウザプログラム |
WO2008146781A1 (ja) * | 2007-05-28 | 2008-12-04 | Nec Corporation | 構造化文書変換装置 |
JP2013065307A (ja) * | 2011-09-19 | 2013-04-11 | Toshiba Corp | マッピングテーブル生成装置 |
US10127208B2 (en) | 2012-07-12 | 2018-11-13 | Fujitsu Limited | Document conversion device, document conversion method, and recording medium |
-
2004
- 2004-06-22 JP JP2004184005A patent/JP2006011549A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007264792A (ja) * | 2006-03-27 | 2007-10-11 | Fujitsu Ltd | 音声ブラウザプログラム |
WO2008146781A1 (ja) * | 2007-05-28 | 2008-12-04 | Nec Corporation | 構造化文書変換装置 |
JP2013065307A (ja) * | 2011-09-19 | 2013-04-11 | Toshiba Corp | マッピングテーブル生成装置 |
US10127208B2 (en) | 2012-07-12 | 2018-11-13 | Fujitsu Limited | Document conversion device, document conversion method, and recording medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107797991B (zh) | 一种基于依存句法树的知识图谱扩充方法及系统 | |
US5915259A (en) | Document schema transformation by patterns and contextual conditions | |
US8484552B2 (en) | Extensible stylesheet designs using meta-tag information | |
US7251777B1 (en) | Method and system for automated structuring of textual documents | |
CN113051285B (zh) | Sql语句的转换方法、系统、设备及存储介质 | |
Baumgartner et al. | Declarative information extraction, web crawling, and recursive wrapping with lixto | |
JP2007226452A (ja) | 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法 | |
US11669691B2 (en) | Information processing apparatus, information processing method, and computer readable recording medium | |
JP4815934B2 (ja) | テキストマイニング装置、テキストマイニング方法、テキストマイニングプログラム | |
CN114398138B (zh) | 界面生成方法、装置、计算机设备和存储介质 | |
Mahmud et al. | CSV-ANNOTATE: Generate annotated tables from CSV file | |
CN112597410A (zh) | 基于规则配置库对网页内容执行结构化提取的方法及装置 | |
JP2010282327A (ja) | フォーマット変換システムおよびフォーマット変換方法並びにプログラム | |
JP2006011549A (ja) | 構造化文書変換装置及びプログラム | |
JP2013218627A (ja) | 構造化文書からの情報抽出方法、装置、及びプログラム | |
JP4937709B2 (ja) | 構造化文書生成方法及び装置及びプログラム | |
JP2007164462A (ja) | 質問応答システム、質問応答方法及び質問応答プログラム | |
Kovačević et al. | Recognition of common areas in a Web page using a visualization approach | |
JP2003140960A (ja) | Xmlデータのデータ変換方法及びプログラム | |
EP1377917A2 (en) | Extensible stylesheet designs using meta-tag information | |
Maiti et al. | A novel method for performance evaluation of text chunking | |
JP2020115246A (ja) | 生成装置、ソフトウェアロボットシステム、生成方法及び生成プログラム | |
JP4543819B2 (ja) | 情報検索システム、情報検索方法及び情報検索プログラム | |
JP2006163820A (ja) | データ変換装置 | |
Yafi et al. | Syntax Recovery for Uniface as a Domain Specific Language |