(57)【特許請求の範囲】
【請求項１】
構造化文書の出力形式としてバイナリ形式が指定されているか否かを判断する判断手段と、
前記出力形式としてバイナリ形式が指定されている場合には、前記構造化文書の形式を変換するために用いられるテンプレートから順次、前記構造化文書に対する処理命令を取得する取得手段と、
前記取得手段が取得した処理命令が、前記構造化文書中の一部を出力する命令である場合、該一部の出力形式が前記テンプレート内で指定されているか否かを判断する手段と、
前記一部の出力形式が前記テンプレート内で指定されている場合には、該出力形式に対して予め対応付けられているバイナリ変換を該一部に対して行い、該バイナリ変換の結果を、出力データを格納するためのファイルに書き込む書き込み手段と、
前記一部の出力形式が前記テンプレート内で指定されていない場合には、該一部を前記ファイルに書き込む手段と
を備えることを特徴とする文書変換装置。
【請求項２】
前記判断手段は、前記テンプレート内に記述されている前記構造化文書の出力形式を参照することで、前記構造化文書の出力形式としてバイナリ形式が指定されているか否かを判断することを特徴とする請求項１に記載の文書変換装置。
【請求項３】
前記判断手段は、前記構造化文書の出力形式を変換した後の文書の構造を定義したスキーマ定義内に記述されている前記構造化文書の出力形式を参照することで、前記構造化文書の出力形式としてバイナリ形式が指定されているか否かを判断することを特徴とする請求項１に記載の文書変換装置。
【請求項４】
前記書き込み手段は、複数種の出力形式と、該出力形式のデータをバイナリ表現する為のバイナリ変換の名称と、が登録されている一覧表の情報を保持しており、
該一覧表の情報を参照して、前記テンプレート内で指定されている前記一部の出力形式に対応するバイナリ変換の名称を特定し、該特定した名称を有するバイナリ変換を該一部に対して行い、該バイナリ変換の結果を前記ファイルに書き込むことを特徴とする請求項１乃至３の何れか１項に記載の文書変換装置。
【請求項５】
前記判断手段は、前記取得手段が取得した処理命令が、前記構造化文書中の文字列を出力する命令であれば、該文字列の出力形式が前記テンプレート内で指定されているか否かを判断し、
前記書き込み手段は、前記文字列の出力形式が前記テンプレート内で指定されている場合には、該出力形式に対して予め対応付けられているバイナリ変換を該文字列に対して行い、該バイナリ変換の結果を前記ファイルに書き込み、
前記書き込む手段は、前記文字列の出力形式が前記テンプレート内で指定されていない場合には、該文字列を前記ファイルに書き込む
ことを特徴とする請求項１乃至４の何れか１項に記載の文書変換装置。
【請求項６】
文書変換装置が行う文書変換方法であって、
前記文書変換装置が有する第１の判断手段が、構造化文書の出力形式としてバイナリ形式が指定されているか否かを判断する判断工程と、
前記文書変換装置が有する取得手段が、前記出力形式としてバイナリ形式が指定されている場合には、前記構造化文書の形式を変換するために用いられるテンプレートから順次、前記構造化文書に対する処理命令を取得する取得工程と、
前記文書変換装置が有する第２の判断手段が、前記取得工程で取得した処理命令が、前記構造化文書中の一部を出力する命令である場合、該一部の出力形式が前記テンプレート内で指定されているか否かを判断する工程と、
前記文書変換装置が有する第１の書き込み手段が、前記一部の出力形式が前記テンプレート内で指定されている場合には、該出力形式に対して予め対応付けられているバイナリ変換を該一部に対して行い、該バイナリ変換の結果を、出力データを格納するためのファイルに書き込む書き込み工程と、
前記文書変換装置が有する第２の書き込み手段が、前記一部の出力形式が前記テンプレート内で指定されていない場合には、該一部を前記ファイルに書き込む工程と
を備えることを特徴とする文書変換方法。
【請求項７】
コンピュータを、請求項１乃至５の何れか１項に記載の文書変換装置が有する各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書変換技術に関するものである。
【背景技術】
【０００２】
文書を記述する言語として、標準化団体であるW3Cが仕様を策定しているXML言語がある。このXML言語を用いれば、要素、属性などの構成部品（ノード）によって構造化された文書を記述することがでる。
【０００３】
XML言語で記述された文書はテキスト形式であるが、同じ文書をバイナリ形式で表現する技術がある。代表的な形式としては、ITU-Tで標準化されているFast infoset (ITU-T X.891)がある。Fast infosetによれば、ボキャブラリテーブル、ノードのデータ型情報を使って、XML言語で記述された文書をより小さいサイズで表現することができる。
【０００４】
一方、変換方法を記述したテンプレートを用いて、文書を別形式の構造化文書に変換するものとしては、次のようなものがある。即ち、標準化団体であるW3Cが仕様を策定しているテンプレート記述言語であるXSLT 1.0（非特許文献１を参照）、Apacheソフトウェア財団が開発したVTL(Velocityテンプレート言語)（非特許文献２を参照）等がある。
【０００５】
ユーザは、XSLT 1.0でテンプレートを記述し、テンプレートエンジンとよばれる変換処理を行うプログラムにテンプレートと変換対象の構造化文書を指定することで、別形式の構造化文書に変換することができる。
【０００６】
さらに、テンプレートを使用して、XML言語で記述した文書を圧縮する技術がある（特許文献１を参照）。
【特許文献１】特開２００４−２５８７７３号公報
【非特許文献１】XML Transformations (XSLT) Version 1.0 - W3C Recommendation 16 November 1999
【非特許文献２】Apache Jakarta Project VTL (Velocity Template Language) Reference
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来、XSLT 1.0などのテンプレート記述言語で記述されたテンプレートを使用して、XML言語などで記述された構造化文書を、XML言語、XHTML言語などで記述された別形式の構造化文書に変換することができた。
【０００８】
しかしながら、変換後の構造化文書がIEEE 754の浮動小数点表示表現等、文字列以外のデータ表現が可能なFast infosetのようなバイナリXML形式の文書の場合、テンプレートを使って直接変換することはできない。
【０００９】
この場合、一旦、テンプレートで変換可能なテキスト形式のXMLに変換した後、バイナリXMLのエンコーダを使ってバイナリXML形式にする必要があった。従って、構造化文書の解析・出力などを伴う変換処理を複数回行う必要があり、特に、計算処理速度が遅い装置では十分な変換速度が実現できない、という性能上の問題があった。
【００１０】
本発明は以上の問題に鑑みてなされたものであり、構造化文書データの形式をより簡便に他の形式に変換する為の技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の目的を達成するために、例えば、本発明の文書変換装置は以下の構成を備える。
【００１２】
即ち、構造化文書の出力形式としてバイナリ形式が指定されているか否かを判断する判断手段と、
前記出力形式としてバイナリ形式が指定されている場合には、前記構造化文書の形式を変換するために用いられるテンプレートから順次、前記構造化文書に対する処理命令を取得する取得手段と、
前記取得手段が取得した処理命令が、前記構造化文書中の一部を出力する命令である場合、該一部の出力形式が前記テンプレート内で指定されているか否かを判断する手段と、
前記一部の出力形式が前記テンプレート内で指定されている場合には、該出力形式に対して予め対応付けられているバイナリ変換を該一部に対して行い、該バイナリ変換の結果を、出力データを格納するためのファイルに書き込む書き込み手段と、
前記一部の出力形式が前記テンプレート内で指定されていない場合には、該一部を前記ファイルに書き込む手段と
を備えることを特徴とする。
【００１３】
本発明の目的を達成するために、例えば、本発明の文書変換方法は以下の構成を備える。
【００１４】
即ち、文書変換装置が行う文書変換方法であって、
前記文書変換装置が有する第１の判断手段が、構造化文書の出力形式としてバイナリ形式が指定されているか否かを判断する判断工程と、
前記文書変換装置が有する取得手段が、前記出力形式としてバイナリ形式が指定されている場合には、前記構造化文書の形式を変換するために用いられるテンプレートから順次、前記構造化文書に対する処理命令を取得する取得工程と、
前記文書変換装置が有する第２の判断手段が、前記取得工程で取得した処理命令が、前記構造化文書中の一部を出力する命令である場合、該一部の出力形式が前記テンプレート内で指定されているか否かを判断する工程と、
前記文書変換装置が有する第１の書き込み手段が、前記一部の出力形式が前記テンプレート内で指定されている場合には、該出力形式に対して予め対応付けられているバイナリ変換を該一部に対して行い、該バイナリ変換の結果を、出力データを格納するためのファイルに書き込む書き込み工程と、
前記文書変換装置が有する第２の書き込み手段が、前記一部の出力形式が前記テンプレート内で指定されていない場合には、該一部を前記ファイルに書き込む工程と
を備えることを特徴とする。
【発明の効果】
【００１５】
本発明の構成によれば、構造化文書データの形式をより簡便に他の形式に変換することができる。
【発明を実施するための最良の形態】
【００１６】
以下、添付図面を参照し、本発明の好適な実施形態について詳細に説明する。
【００１７】
［第１の実施形態］
図１は、本実施形態に係る文書変換装置のハードウェア構成例を示すブロック図である。なお、図１には、以下の説明で主に用いる構成のみを記しており、文書変換装置の構成全てを記したものではない。従って、以下の説明は、図１に示した構成に限定したものではない。
【００１８】
図１に示す如く、本実施形態に係る文書変換装置は、文書変換装置本体１００（以下、単に文書変換装置１００と呼称する）、記憶装置１４０により構成されている。
【００１９】
先ず、記憶装置１４０について説明する。
【００２０】
記憶装置１４０は、ハードディスクドライブ装置に代表される大容量情報記憶装置であって、ここには不図示のＯＳ（オペレーティングシステム）に加え、テンプレート１４１のデータ（テンプレートデータ）、変換元文書１４２のデータが保存されている。
【００２１】
テンプレート１４１のデータ（以下、単にテンプレート１４１と呼称する）は、変換元文書１４２の形式を変換する変換処理の具体的な処理内容（変換処理内容）が記述されたものである。
【００２２】
変換元文書１４２は、後述する変換処理の対象となる文書データであって、後述するように、構造化文書データである。
【００２３】
次に、文書変換装置１００について説明する。
【００２４】
文書変換装置１００は、ＣＰＵ１３０と、メモリ１１０とで構成されている。
【００２５】
ＣＰＵ１３０は、メモリ１１０内に格納されている各プログラムや、記憶装置１４０からメモリ１１０にロードされたデータを用いて、文書変換装置１００全体の制御を行うと共に、文書変換装置１００が行うものとして説明する後述の各処理を実行する。
【００２６】
メモリ１１０は、ＲＡＭやＲＯＭなどにより構成されている。メモリ１１０には、文書変換処理部１１１、出力形式取得部１１２、処理命令取得部１１３、出力データ型取得部１１４、テンプレート解析部１１５、変換元文書解析部１１７、文書出力部１１９、型付データ出力部１２２が格納されている。加えて、メモリ１１０には、非型付データ出力部１２３、変換アルゴリズム選択部１２４、データ変換部１２５、ノード識別子生成部１２６が格納されている。これらの各部はコンピュータプログラムで構成されており、コンピュータプログラムは互いにデータ通信を行うことができる。なお、以下の説明では、これら各部を動作の主体として説明することもあるが、実際には、ＣＰＵ１３０が各部に対応するコンピュータプログラムを実行することで、各部に対応する処理が成される。
【００２７】
また、メモリ１１０には、ＣＰＵ１３０による制御に従って記憶装置１４０からロードされたデータを一時的に記憶するためのエリアも備わっている。
【００２８】
図２は、W3Cコンソーシアムが策定しているXSLT 1.0 言語で記述されたテンプレート１４１の構成例を示す図である。本実施形態では、テンプレート１４１には図２に示す如く、XSLTの仕様で定められている通常の記述の他に、次のような情報も記述されている。即ち、バイナリXML出力用の命令を定義するための名前空間定義２０１、出力するバイナリXMLの形式２０２、XML文書を構成する単位である要素・属性のデータ型の指定２０３、２０４、２０５が記述されている。
【００２９】
図３は、W3Cコンソーシアムが策定しているマークアップ言語であるXML 1.0言語で記述された変換元文書１４２の構成例を示す図である。
【００３０】
以下では、テンプレート１４１として図２に示した構成を有するもの、変換元文書１４２として図３に示した構成を有するものを用いる。しかし、以下の説明は係る構成に限定したものではなく、その構成が変わったとしても、以下の説明は当業者であれば適宜変形することは容易である。
【００３１】
図８は、ＣＰＵ１３０がメモリ１１０に格納されているコンピュータプログラムを実行することでなされる、変換元文書１４２の形式を変換する処理（文書変換方法）のフローチャートである。
【００３２】
まず、文書変換装置１００が有する不図示の操作部や、メモリ１１０内に格納されている不図示の他のアプリケーションから、変換対象の文書データ、文書データの変換に用いるテンプレートの指定指示が、文書変換装置１００に入力される。
【００３３】
従って、ステップＳ８０１では、文書変換処理部１１１は係る指定指示を受けると、指定されたテンプレート、文書データを記憶装置１４０からメモリ１１０にロードする。本実施形態では、このロードされるテンプレートは上記テンプレート１４１であり、ロードされる文書データは上記変換元文書１４２である。
【００３４】
次にステップＳ８０２では、文書変換処理部１１１は、テンプレート解析部１１５に対して、ステップＳ８０１でメモリ１１０にロードしたテンプレート１４１の解析を要求する。
【００３５】
ステップＳ８０３では、係る要求を受けたテンプレート解析部１１５は、ステップＳ８０１でメモリ１１０にロードしたテンプレート１４１の解析を行う。解析結果はメモリ１１０上に展開する。
【００３６】
図４は、テンプレート解析部１１５による解析結果、即ち、テンプレート１４１の解析結果を、メモリ１１０上にツリー構造として展開した場合の展開例を示す図である。係るツリー構造は、テンプレート１４１に記述されている処理命令の各単位（各テンプレート要素）を、ツリーの各ノード（４０１〜４１１）として展開したものである。なお、テンプレート１４１に対する解析結果は、図４に示したような構造でメモリ１１０上に展開することに限定するものではなく、テンプレート１４１の構造を変形しない限りは、如何なる構造でメモリ１１０上に展開しても良い。
【００３７】
図８に戻って、次に、ステップＳ８０４では、文書変換処理部１１１は、変換元文書１４２の形式をどのような形式に変換して出力するのか（出力形式）を取得する要求を、出力形式取得部１１２に対して行う。
【００３８】
ステップＳ８０５では、出力形式取得部１１２は、ステップＳ８０３で解析した結果、即ち、テンプレート１４１の解析結果のツリーから、出力形式を定義した”output”ノード４０１を検索し、その出力形式名を文書変換処理部１１１に通知する。本実施形態では、ITU-Tで仕様が策定されているバイナリXMLの形式の一つFast infoset(ITU-T X.891)が、bx:format=”fast-infoset”という文字列として指定されている。
【００３９】
次に、ステップＳ８０６では、文書変換処理部１１１は、ステップＳ８０５で出力形式取得部１１２から受けた出力形式がバイナリXMLであるのか、テキストXMLであるのかを判断する。係る判断の結果、バイナリＸＭＬである場合には処理をステップＳ８０７に進める。ステップＳ８０７における処理については図９，１０を用いて後述する。一方、テキストＸＭＬである場合には処理をステップＳ８０８に進める。
【００４０】
ステップＳ８０８では、文書変換処理部１１１は、変換元文書１４２をテキストＸＭＬ形式に変換してから出力する処理、即ち、テキスト出力用文書変換処理を行う。係る処理は、一般的なXSLTプロセッサの実装と同様、W3CのXSLT 1.0の仕様に沿って行われるため、詳細な記述は省略する。
【００４１】
図９は、上記ステップＳ８０７における処理の詳細を示すフローチャートである。
【００４２】
ステップＳ９０１では、文書変換処理部１１１は、変換元文書解析部１１７に対して、変換元文書１４２の解析を要求する。
【００４３】
ステップＳ９０２では、係る要求を受けた変換元文書解析部１１７は、上記ステップＳ８０１でメモリ１１０にロードした変換元文書１４２の解析を行う。
【００４４】
図５は、変換元文書解析部１１７による解析結果、即ち、変換元文書１４２の解析結果を、メモリ１１０上にツリー構造として展開した場合の展開例を示す図である。係るツリー構造は、変換元文書１４２の文書の各構成単位（文書要素）を、ツリーの各ノード（５０１〜５０８）として展開している。なお、変換元文書１４２に対する解析結果は、図５に示したような構造でメモリ１１０上に展開することに限定するものではなく、変換元文書１４２の構造を変形しない限りは、如何なる構造でもってメモリ１１０上に展開しても良い。
【００４５】
図９に戻って次に、ステップＳ９０３では、文書変換処理部１１１は、ステップＳ８０３で解析した結果、即ち、テンプレート１４１の解析結果のツリーから処理命令を取得する要求を、処理命令取得部１１３に対して行う。
【００４６】
ステップＳ９０４では、係る要求を受けた処理命令取得部１１３は、テンプレート１４１の解析結果のツリーから処理命令を順次取得し、取得した処理命令を文書変換処理部１１１に返信する。即ち、処理命令取得部１１３は、outputノード（命令）４０１、templateノード（命令）４０２、elementノード（命令）４０３、・・・、value-of（命令）ノード４１１までを順次、文書変換処理部１１１に返信する。
【００４７】
そして、処理命令取得部１１３が取得した処理命令毎に、ステップＳ９０５〜ステップＳ９１２の一連の処理を行う。
【００４８】
処理命令取得部１１３から受けた処理命令がvalue-of命令のように、変換元文書１４２の一部を参照するような処理命令であれば、処理をステップＳ９０６を介してステップＳ９１３に進める。そしてステップＳ９１３では、文書変換処理部１１１は、処理命令取得部１１３から受けた処理命令が指し示す参照箇所を取得する。例えば、value-of命令（４０６、４０８、４１１）による参照箇所は、”／root／inputs／input1”、”／root／inputs／input2”、”／root／inputs／input3”となる。従って、処理命令取得部１１３から受けた処理命令がvalue-of命令（４０６、４０８、４１１）である場合には、文書変換処理部１１１は、図５に示した解析結果から、”12345”、“123456789”、“-118.625”を取得する。
【００４９】
一方、処理命令取得部１１３から受けた処理命令が、変換元文書１４２の一部を参照するものではない場合には、処理をステップＳ９０６を介してステップＳ９０７に進める。
【００５０】
次に、処理命令取得部１１３から受けた処理命令が変換元文書１４２の一部を出力するもの（対応テンプレート要素）ではない場合、ステップＳ９０７を介してステップＳ９１４に進める。対応テンプレート要素には、例えば、stylesheet命令４００、output命令４０１、template命令４０２のような処理命令がある。
【００５１】
ステップＳ９１４では、文書変換処理部１１１は、処理命令取得部１１３から受けた処理命令に対応する処理を実行する。
【００５２】
一方、処理命令取得部１１３から受けた処理命令がstylesheet命令４００、output命令４０１、template命令４０２のように変換元文書１４２の一部を出力するものである場合、ステップＳ９０７を介してステップＳ９１１に進める。
【００５３】
図１０は、ステップＳ９１１における処理の詳細を示すフローチャートである。
【００５４】
先ず、ステップＳ１００１では、文書変換処理部１１１は、文書出力部１１９に対してデータ出力要求を送出する。
【００５５】
ステップＳ１００２では、文書出力部１１９は、処理命令取得部１１３が取得した処理命令が、変換元文書１４２の要素内の文字列または属性値を出力する命令であるか否かを判断する。係る判断の結果、処理命令取得部１１３が取得した処理命令が、変換元文書１４２の要素内の文字列または属性値を出力する命令である場合には処理をステップＳ１００９に進め、否である場合には処理をステップＳ１００３に進める。
【００５６】
例えば、処理命令取得部１１３が取得した処理命令がvalue-of命令（４０６、４０８、４１１）である場合、上記ステップＳ９１３では、文字列（４０６、４０８）、属性値（４１１）が取得される。従って、この場合には、処理はステップＳ１００２を介してステップＳ１００９に進める。
【００５７】
ステップＳ１００９では、文書出力部１１９は、出力データ型取得部１１４に対して、出力するデータの型の取得要求を送出する。
【００５８】
ステップＳ１０１０では、出力データ型取得部１１４は、係る取得要求を受けると、ステップＳ８０３で解析した結果、即ち、テンプレート１４１の解析結果のツリーから、出力対象のデータの型を取得する。
【００５９】
例えば、出力データ型取得部１１４は、value-of処理命令４０６によって出力する文字列のデータ型が要求された場合、element処理命令４０５の”bx:type=”short””で定義されているデータ型”short”を取得する。同様に、value-of処理命令４０８によって出力する文字列のデータ型が要求された場合、element処理命令４０７の”bx:type=”int””で定義されている”int”を取得する。また、value-ofノード４１１内のvalue-of処理命令によって出力する文字列のデータ型が要求された場合、attribute処理命令４１０の”bx:type=”float””で定義されている”float”を取得する。
【００６０】
そしてこのようにして取得したデータの型を、文書出力部１１９に返信（返却）する。
【００６１】
次に、以上のデータの型の取得が成功した場合、即ち、出力するデータの型が指定されている場合には、処理はステップＳ１０１１を介してステップＳ１０１２に進む。一方、出力するデータの型が指定されていない場合には、処理はステップＳ１０１１を介してステップＳ１０１６に進む。
【００６２】
ステップＳ１０１２では、文書出力部１１９は、出力データ型取得部１１４から受けた型を型付データ出力部１２２に通知すると共に、型が指定されたデータの生成を要求する。
【００６３】
ステップＳ１０１３では、型付データ出力部１２２は、係る要求を受けると、文書出力部１１９から通知された型を変換アルゴリズム選択部１２４に通知すると共に、変換アルゴリズム識別子、変換処理名の取得要求を送出する。
【００６４】
ステップＳ１０１４では、変換アルゴリズム選択部１２４は、係る要求を受けると、自身が保持する変換アルゴリズム一覧表のデータを参照し、型付データ出力部１２２から通知された型に対応する変換アルゴリズム識別子、変換処理名を取得する。そして取得した変換アルゴリズム識別子、変換処理名を、型付データ出力部１２２に返信する。
【００６５】
図６は、変換アルゴリズム選択部１２４が保持する変換アルゴリズム一覧表の構成例を示す図である。
【００６６】
図６に示す如く、変換アルゴリズム一覧表には、変換アルゴリズム識別子に対応するデータ型、変換処理名が、変換アルゴリズム識別子毎に、エントリとして登録されている。変換アルゴリズム識別子は、文字列をバイナリ表現に変換する際に使用するアルゴリズムを一意に識別する為の識別子である。変換処理名は、データ変換部１２５が実行可能なデータ変換を指し示す為のものである。例えば、データ変換部１２５が複数種のデータ変換を実行する事が可能である場合に、変換処理名とは、それぞれのデータ変換に用いる関数名や関数へのポインタである。
【００６７】
従って、図６に示した変換アルゴリズム一覧表を用いる場合、変換アルゴリズム選択部１２４は、型付データ出力部１２２から型”short”を受けると、変換アルゴリズム識別子＝１、変換処理名＝「変換処理１」を型付データ出力部１２２に返信する。
【００６８】
図１０に戻って、ステップＳ１０１５では、型付データ出力部１２２は、変換アルゴリズム選択部１２４から受けた変換アルゴリズム識別子と、予め定められたデータ長と、をノード識別子生成部１２６に通知し、ノード識別子の生成を要求する。そして処理をステップＳ１００４に進める。
【００６９】
一方、ステップＳ１０１６では、文書出力部１１９は、非型付データ出力部１２３に、型の指定のないデータの生成を要求する。
【００７０】
ステップＳ１０１７では、非型付データ出力部１２３は、予め定められたデータ長をノード識別子生成部１２６に通知し、文字列を示すノード識別子の生成を要求する。
【００７１】
一方、処理命令取得部１１３が取得した処理命令が、変換元文書１４２の要素内の文字列、属性値以外を出力する命令である場合には、処理をステップＳ１００３に進める。例えば、要素の生成（xsl:element）、属性の生成(xsl:attribute)の場合には、処理をステップＳ１００３に進める。
【００７２】
ステップＳ１００３では、文書出力部１１９は、出力するデータの種別に応じて、ノード識別子生成部１２６にノード識別子の生成を要求する。
【００７３】
ステップＳ１００４では、ノード識別子生成部１２６は、ステップＳ１００３，Ｓ１０１５，Ｓ１０１７によって要求されたノード識別子を生成し、文書出力部１１９に返信する。即ち、ステップＳ１００３，Ｓ１０１５，Ｓ１０１７では、ノード識別子を生成するための様々な情報を収集している。
【００７４】
ノード識別子とは、XML形式の文書全体、文書を構成する要素、属性、文字列などのノードをバイナリ形式のデータ内で識別するための識別子である。前述したFast infosetの仕様では、ノード種別、バイナリ表現への変換に使用する変換アルゴリズムの識別子、ノード名、変換後のデータ長、子ノードの有無で決定される。
【００７５】
ステップＳ１００５において、文書出力部１１９は、ノード識別子生成部１２６から受けたノード識別子を、メモリ１１０上に保持されている、出力するデータを格納するためのファイル（変換後ファイル）に書き込む。
【００７６】
ステップＳ１００６では先ず、出力するデータの型が指定されている場合、即ち、型付データ出力部１２２が変換アルゴリズム選択部１２４から変換アルゴリズム識別子、変換処理名を取得している場合には、文書出力部１１９はこのうち変換処理名を取得する。例えば、型としてshort型が指定されていた場合、文書出力部１１９は、変換処理名として「変換処理１」を取得する。
【００７７】
そして文書出力部１１９は、データ変換部１２５にこの取得した変換処理名に対応する変換処理を行わせるべく、この変換処理名を通知する。これにより、出力対象の文字列に対して、取得した変換処理名に対応するバイナリ変換を行うことができる。
【００７８】
次にステップＳ１００７では、データ変換部１２５は、出力対象の文字列に対して、文書出力部１１９から通知された変換処理名に対応するバイナリ変換を行う。そして、バイナリ変換結果を文書出力部１１９に返信する。なお、出力するデータの型が指定されていない場合には、ステップＳ１００６，Ｓ１００７では、何も処理は行わない。即ち、出力対象の文字列に対するバイナリ変換処理は行わない。
【００７９】
次にステップＳ１００８では、文書出力部１１９は、変換していない出力対象の文字列のデータ、若しくはバイナリ変換を行った結果としてのデータを、変換後ファイルに書き込む。なお、書き込んだデータが要素内容、属性、文書の最後だった場合は、Fast infosetの仕様に従ってターミネータ(F(16))を書き込む。
【００８０】
以上の処理により、変換後ファイルには、変換元文書１４２の形式変換結果（変換処理結果、処理結果）が格納されていることになる。
【００８１】
以下に、図４に示す如く展開されたテンプレート１４１の解析結果を用いて、図８〜図１０のフローチャートに従った処理を実行することで、具体的にどのような順序でFast infoset形式のデータが変換後ファイルに書き込まれるかのかを示す。
1.  文書全体の識別子
E0 00 00 01 00 (16)
2.  “root”要素の識別子
3C 03 72 6F 6F 74 (16) (属性なし、要素名が”root”)
3.  “outputs”要素の識別子
6F 75 74 70 75 74 73 (16) (属性なし、要素名が”outputs”)
4.  “output1”要素の識別子
3C 06 6F 75 74 70 75 74 31 (16)（属性なし、要素名が”output1”）
5.  “output1”要素の要素内容の識別子
8C 09 (16)（short型アルゴリズムでバイナリ化、2バイト長）
6.  “output1”要素の要素内容のバイナリ表現
30 39 (16) (“12345”のshort型表現)
7.  “output1”要素のターミネータ
F0 (16)
8.  “output2”要素の識別子
3C 06 6F 75 74 70 75 74 32 (16) （属性なし、要素名が”output2”）
9.  “output2”要素の要素内容の識別子
8C 0E 01 (16)（int型アルゴリズムでバイナリ化、4バイト長）
10.  “output2”要素の要素内容のバイナリ表現
07 5B CD 15 (16) (“123456789”のint型表現)
11.  “output2”要素のターミネータ
F0 (16)
12.  “output3”要素の識別子
7C 06 6F 75 74 70 75 74 33 (16)（属性あり、要素名が”output3”）
13.  “value”属性の識別子
78 04 76 61 6C 75 65 (16)（属性名が”value”）
14.  “value”属性の属性値の識別子
8C 1A 01 (16)（float型アルゴリズムでバイナリ化、4バイト長）
15.  “value”属性の属性値のバイナリ表現
C2 ED 40 00 (16) (“-118.625”のfloat型表現)
16.  “value”属性、”output3”要素、”output”要素、”root”要素のターミネータ
FF FF (16)
17.  文書全体のターミネータ
F0 (16)
図７Ｂは、上記の順番で書き出されたFast infoset形式の変換後ファイルの内容を記述した図である。図７Ａは、図７Ｂに示した変換後ファイルの内容をテキスト表現で記述した結果を示す図である。
【００８２】
以上の説明により、本実施形態によれば、テンプレートを使って、構造化文書から圧縮率の高いバイナリXML形式等の文書に変換する際に、変換元の文書から中間形式の文書を生成することなく、直接バイナリXML形式等の文書を生成することができる。これにより、変換性能が向上する。
【００８３】
［第２の実施形態］
第１の実施形態では、データ出力処理において出力データ型取得部１１４が要素、属性などのノードのデータ型を、ステップＳ１０１０において、テンプレートの解析結果から取得した。これは、出力データ型取得部１１４が、テンプレート中の”bx:type”で指定されるデータ型の定義を検索することによって実現している。
【００８４】
XML文書では、ノードのデータ型をスキーマ言語とよばれる言語で定義することができる。
【００８５】
本実施形態では、第１の実施形態に係る文書変換装置１００の構成に、変換先文書の構造を定義した、ＸＭＬスキーマ言語で記述されているスキーマ定義からノードのデータ型を取得するスキーマ解析部を追加する。そして、出力データ型取得部１１４からスキーマ解析部を呼び出すと、スキーマ解析部がスキーマを解析し、ノードのデータ型を出力データ型取得部１１４に返却する処理を追加する。これにより、テンプレートにデータ型の記述を行うことなく文書の変換を行うことができる。
【００８６】
その他の構成、処理の流れについては、第１の実施形態と同じである。
【００８７】
図１１に変換後の文書のスキーマを、ISOで策定されているスキーマ言語であるRelax NG言で記述した例を示す。１１０１〜１１０３の記述はそれぞれ、output1要素がshort型、output2要素がint型、output3要素のvalue属性がfloat型であることを定義している。
【００８８】
これを参照することにより、出力データ型取得部１１４は、各ノードのデータ型を検索することができる。
【００８９】
図１２に本実施形態で使用するテンプレートの構成例を示す。第１の実施形態とは異なり、テンプレートにはデータ型の定義をする必要はない。
【００９０】
［第３の実施形態］
第１の実施形態では、データ出力処理において出力データ型取得部１１４が要素、属性などのノードのデータ型を、ステップＳ１０１０において、テンプレートの解析結果から取得した。これは、出力データ型取得部１１４が、テンプレート中の”bx:type”で指定されるデータ型の定義を検索することによって実現している。
【００９１】
本実施形態では、第１の実施形態に係る文書変換装置１００の構成において、データ型の定義を、テンプレート定義ではなく、あらかじめ用意したデータ型一覧表に登録しておき、データ型一覧表からデータ型を取得するデータ型一覧表検索部を追加する。
【００９２】
この場合、出力データ型取得部１１４からデータ型一覧表検索部を呼び出すと、データ型一覧表検索部がデータ型一覧表を検索し、ノードのデータ型を出力データ型取得部１１４に返却する処理を追加する。これにより、テンプレートにデータ型の記述を行うことなく文書の変換を行う。
【００９３】
その他の構成、処理の流れについては第１の実施形態と同じである。
【００９４】
図１３に、本実施形態で使用する変換後文書のデータ型一覧表の構成例を示す。データ型一覧表は、ノード名、データ型から構成される。なお、この例では、ノード名をW3Cで策定されているXPath言語で記述している。
【００９５】
［その他の実施形態］
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給する。係る記憶媒体は言うまでもなく、コンピュータ読み取り可能な記憶媒体である。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【００９６】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９７】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００９８】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【００９９】
【図１】本発明の第１の実施形態に係る文書変換装置のハードウェア構成例を示すブロック図である。
【図２】W3Cコンソーシアムが策定しているXSLT 1.0 言語で記述されたテンプレート１４１の構成例を示す図である。
【図３】W3Cコンソーシアムが策定しているマークアップ言語であるXML 1.0言語で記述された変換元文書１４２の構成例を示す図である。
【図４】テンプレート解析部１１５による解析結果、即ち、テンプレート１４１の解析結果を、メモリ１１０上にツリー構造として展開した場合の展開例を示す図である。
【図５】変換元文書解析部１１７による解析結果、即ち、変換元文書１４２の解析結果を、メモリ１１０上にツリー構造として展開した場合の展開例を示す図である。
【図６】変換アルゴリズム選択部１２４が保持する変換アルゴリズム一覧表の構成例を示す図である。
【図７Ａ】図７Ｂに示した変換後ファイルの内容をテキスト表現で記述した結果を示す図である。
【図７Ｂ】本発明の第１の実施形態で説明した順番で書き出されたFast infoset形式の変換後ファイルの内容を記述した図である。
【図８】ＣＰＵ１３０がメモリ１１０に格納されているコンピュータプログラムを実行することでなされる、変換元文書１４２の形式を変換する処理（文書変換方法）のフローチャートである。
【図９】ステップＳ８０７における処理の詳細を示すフローチャートである。
【図１０】ステップＳ９１１における処理の詳細を示すフローチャートである。
【図１１】変換後の文書のスキーマを、ISOで策定されているスキーマ言語であるRelax NG言で記述した例を示す図である。
【図１２】本発明の第２の実施形態で使用するテンプレートの構成例を示す図である。
【図１３】本発明の第３の実施形態で使用する変換後文書のデータ型一覧表の構成例を示す図である。
【図１】
0005142638.tif 000002
【図２】
0005142638.tif 000003
【図３】
0005142638.tif 000004
【図４】
0005142638.tif 000005
【図５】
0005142638.tif 000006
【図６】
0005142638.tif 000007
【図７Ａ】
0005142638.tif 000008
【図７Ｂ】
0005142638.tif 000009
【図８】
0005142638.tif 000010
【図９】
0005142638.tif 000011
【図１０】
0005142638.tif 000012
【図１１】
0005142638.tif 000013
【図１２】
0005142638.tif 000014
【図１３】
0005142638.tif 000015