(57)【要約】【課題】文書構造変換において出力する文書データを変換後の文書型定義に従った妥当なものとなるように出力し、妥当性検証のステップを省略することによって、文書変換にかかる全体の時間を短縮する。【解決手段】本発明は、第１の文書型定義Ｄ１に基づいて形成された第１の構造化文書Ｆ１を第２の文書型定義Ｄ２に基づいて形成された第２の構造化文書Ｆ３に変換する文書変換方法であって、文書型定義Ｄ１及び文書型定義Ｄ２を解析し、相違する文書型定義を抽出し、解析の結果に応じて、文書変換処理の処理結果である構造化文書Ｆ３が文書型定義Ｄ２に矛盾することのないような変換ルールを記述した変換テンプレートＴ２を生成し、変換テンプレートＴ２を用いて文書変換処理を行う。【選択図】図１
2007265429.tif 000002
【特許請求の範囲】
【請求項１】
第１の文書型定義に基づいて形成された第１の構造化文書を、第２の文書型定義に基づいて形成された第２の構造化文書に変換する文書変換システムであって、
前記第１の構造化文書は、文字列、及び前記第１の構造化文書の所定要素として前記文字列の役割を表現する文書タグを含む第１文書構造を有しており、
前記文書タグ、前記第１文書構造と前記第２の文書型定義にしたがった第２文書構造との相違部分の条件、及び前記第１文書構造から前記第２文書構造への変換内容を含むテーブルデータを記憶する記憶部と、
前記テーブルデータに基づいて、前記第１文書構造を前記第２の文書型定義にしたがった第２文書構造に変換する変換ルールを記述した変換テンプレートを生成する変換テンプレート生成部と、
前記相違部分の条件に合致する要素に関しては、前記変換テンプレート生成部によって生成された前記変換テンプレートにしたがって、前記第１文書構造を前記第２文書構造に変換する文書構造変換部と
を備えたことを特徴とする文書変換システム。
【請求項２】
前記第１の構造化文書及び前記第２の構造化文書を、ファイルデータとして保存するファイル記録部を備え、
前記文書構造変換部は、前記ファイル記録部から読み出した第１の構造化文書を変換することを特徴とする請求項１に記載の文書変換システム。
【請求項３】
通信ネットワークに接続され、該通信ネットワーク上からの変換要求及び第１の構造化
文書を取得する受信部と、
前記文書構造変換部が変換した第２の構造化文書を前記通信ネットワーク上に送出する送信部と
を有することを特徴とする請求項１または２に記載の文書変換システム。
【請求項４】
前記第１の構造化文書における誤った記述を修正し、前記文書構造変換部で読み取りが可能となるように前記第１の構造化文書を整形する整形化部を有することを特徴とする請求項１乃至３のいずれかに記載の文書変換システム。
【請求項５】
前記変換テンプレート生成部は、ＸＳＬに基づいて前記変換テンプレートを生成し、
前記文書構造変換部は、ＸＳＬＴ変換エンジンにより、前記第１文書構造を前記第２文
書構造に変換することを特徴とする請求項１に記載の文書変換システム。
【請求項６】
前記変換内容は、前記第２の構造化文書おいて、前記文書タグに続けて前記文字列を直接記述することができない場合、ｄｉｖタグを用いて前記文字列を囲むことを含むことを特徴とする請求項５に記載の文書変換システム。
【請求項７】
第１の文書型定義に基づいて形成された第１の構造化文書を、コンピュータを用いて第２の文書型定義に基づいて形成された第２の構造化文書に変換する文書変換方法であって、
前記第１の構造化文書は、文字列、及び前記第１の構造化文書の所定要素として前記文字列の役割を表現する文書タグを含む第１文書構造を有しており、
前記コンピュータが、前記文書タグ、前記第１文書構造と前記第２の文書型定義にしたがった第２文書構造との相違部分の条件、及び前記第１文書構造から前記第２文書構造への変換内容を含むテーブルデータに基づいて、前記第１文書構造を前記第２の文書型定義にしたがった第２文書構造に変換する変換ルールを記述した変換テンプレートを生成するステップ(１)と、
前記コンピュータが、前記相違部分の条件に合致する要素に関しては、前記変換テンプレート生成部によって生成された前記変換テンプレートにしたがって、前記第１文書構造を前記第２文書構造に変換するステップ(２)と
を有することを特徴とする文書変換方法。
【請求項８】
前記第１の構造化文書及び前記第２の構造化文書は、ファイルデータとしてファイル記録部に保存され、
前記ステップ(２)では、前記コンピュータが、前記ファイル記録部から読み出した第１の構造化文書を変換することを特徴とする請求項７に記載の文書変換方法。
【請求項９】
前記コンピュータが、通信ネットワーク上からの変換要求及び第１の構造化文書を取得するステップと、
前記コンピュータが、前記ステップ(２)において変換された第２の構造化文書を前記通信ネットワーク上に送出するステップと
を有することを特徴とする請求項７または８に記載の文書変換方法。
【請求項１０】
前記コンピュータが、前記第１の構造化文書における誤った記述を修正し、前記ステップ(２)において前記第１の構造化文書の読み取りが可能となるように前記第１の構造化文書を整形するステップを有することを特徴とする請求項７乃至９のいずれかに記載の文書変換方法。
【請求項１１】
前記ステップ（１）では、前記コンピュータが、ＸＳＬに基づいて前記変換テンプレートを生成し、
前記ステップ（２）では、前記コンピュータが、ＸＳＬＴ変換エンジンにより、前記第１文書構造を前記第２文書構造に変換することを特徴とする請求項７に記載の文書変換方法。
【請求項１２】
前記変換内容は、前記第２の構造化文書おいて、前記文書タグに続けて前記文字列を直接記述することができない場合、ｄｉｖタグを用いて前記文字列を囲むことを含むことを特徴とする請求項１１に記載の文書変換方法。
【請求項１３】
第１の文書型定義に基づいて形成された第１の構造化文書を第２の文書型定義に基づいて形成された第２の構造化文書に変換する文書変換プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記第１の構造化文書は、文字列、及び前記第１の構造化文書の所定要素として前記文字列の役割を表現する文書タグを含む第１文書構造を有しており、
前記コンピュータに、
前記文書タグ、前記第１文書構造と前記第２の文書型定義にしたがった第２文書構造との相違部分の条件、及び前記第１文書構造から前記第２文書構造への変換内容を含むテーブルデータに基づいて、前記第１文書構造を前記第２の文書型定義にしたがった第２文書構造に変換する変換ルールを記述した変換テンプレートを生成するステップ(１)と、
前記相違部分の条件に合致する要素に関しては、前記変換テンプレート生成部によって生成された前記変換テンプレートにしたがって、前記第１文書構造を前記第２文書構造に変換するステップ(２)と
を有する処理を実行させることを特徴とする文書変換プログラムを記録したコンピュータ
読み取り可能な記録媒体。
【請求項１４】
前記第１の構造化文書及び前記第２の構造化文書は、ファイルデータとしてファイル記録部に保存され、
前記ステップ(２)では、前記コンピュータに、前記ファイル記録部から読み出した第１の構造化文書を変換させることを特徴とする請求項１３に記載の文書変換プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１５】
前記コンピュータに、
通信ネットワーク上からの変換要求及び第１の構造化文書を取得させるステップと、
前記ステップ(２)において変換された第２の構造化文書を前記通信ネットワーク上に送出させるステップと
を有することを特徴とする請求項１３または１４に記載の文書変換プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１６】
前記コンピュータに、前記第１の構造化文書における誤った記述を修正し、前記ステップ(２)において前記第１の構造化文書の読み取りが可能となるように前記第１の構造化文書を整形させるステップを有することを特徴とする請求項１３乃至１５のいずれかに記載
の文書変換プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１７】
前記ステップ（１）では、前記コンピュータに、ＸＳＬに基づいて前記変換テンプレートを生成させ、
前記ステップ（２）では、前記コンピュータに、ＸＳＬＴ変換エンジンにより、前記第１文書構造を前記第２文書構造に変換させることを特徴とする請求項１３に記載の文書変換プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１８】
前記変換内容は、前記第２の構造化文書おいて、前記文書タグに続けて前記文字列を直接記述することができない場合、ｄｉｖタグを用いて前記文字列を囲むことを含むことを特徴とする請求項１７に記載の文書変換プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１の文書型定義に基づいて形成された第１の構造化文書を第２の文書型定義に基づいて形成された第２の構造化文書に変換する文書変換システム、変換方法、変換プログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【背景技術】
【０００２】
従来より、テキスト文書ファイルなどにおけるテキストデータを単なる文字列として扱うだけでなく、文書のレイアウトや属性等の論理構造を表現することのできる構造化文書が提案されている。この構造化文書の形式としては、例えば、ISO（International Standardization Organization）規格8879のSGMLやW3C（World wide Web Consortium）が仕様を制定したXMLがある。SGMLやXMLでは、文書の論理構造を文書型定義（DTD: Document Type Definition）により指定し、表題、著者名、序文、及び本文のような文書構成要素としての役割を、文書タグと呼ばれる構造要素織別子を用いて表現することができる。
【０００３】
構造化文書では、構造識別子に対して、それぞれ固有の意味や役割等の特性を持たせる必要がある場合があり、この特性を示すために、構造識別子に付加情報（属性）を付加することができる。
【０００４】
また、構造化文書を画面に表示、或いは紙に印刷するための書式情報を記述するためのスタイルシートの形式が提案されている。スタイルシートの形式としては、例えばISO規格10179のDSSSL（Document Style Semantics and Specification Language）やW3Cが策定したXSL（eXtensible Stylesheet Language）がある。
【０００５】
DSSSLやXSLでは、SGMLやXMLを構成する構造識別子に対する条件を表現するパターンとそのパターンを満たす構造識別子に対するアクションの組を指定することにより、文書の書式情報を記述する。
【０００６】
また、スタイルシートは書式情報を与えると同時に文書構造を変換する仕組みを持つ。XSLのうち、構造化文書の特定のパターンを取りだす仕様をXSLT（XSL Transformation）という。XSLTの機能を利用すれば、XML文書を所定の条件に従って変換し、例えばHTMLなどの別形式の文書として出力することができる。
【０００７】
構造化文書は、文書データ（テキスト）を構造的に意味のある単位に分割して要素と属性を用いてマーク付けを行ったものである。XMLにおいて、文書データの構造を定義する方法をスキーマといい、スキーマの定義には文書型定義（DTD）を使うのが一般的である。スキーマは、文書を構成する要素がどんな要素をどの順序で何回内容として持つのか、またどんな属性を持つのかを定義する。構造化文書はそれだけではデータの定義がないため、例えば何らかの理由でデータが欠落しても、そのエラーを自動的にチェックすることができない。そこで、データの表示やデータ交換をするためには文書型定義を行い、定義に従った文書を記述する必要がある。
【０００８】
図１１は、XMLで記述された構造化文書Ｆ１を例に、従来の文書変換の処理フローの一例を示したものである。同図に示すように、一般に、構造化文書の変換処理は、主として文書構造変換処理Ｓ１０１と、妥当性検証処理Ｓ１０２の２つのステップからなる。
【０００９】
文書構造変換処理Ｓ１０１は、パターンマッチング的に要素や属性を抜き出して新しい要素や属性に置換したり、新たな要素、属性、テキストを追加することによって新しい文書を作成するステップであり、変換テンプレートＴ１に記述された変換ルールに基づいて行われる。この変換テンプレートＴ１は、構造変換のルールは予めXSLファイル（変換テンプレートＴ１）として作成しておく。なお、文書構造変換処理Ｓ１０１のためのXSLT変換エンジンには、既存の公開ソフトウェア（Xalan-C++等）を使用することができる。
【００１０】
妥当性検証処理Ｓ１０２は、XSLT変換処理の出力結果（構造化文書Ｆ２）が変換後の文書型定義Ｄ２に従っていることを確認するステップであり、変換後の文書型定義Ｄ２と既存の公開ソフトウェア（XML4C等）を用いて実施する。妥当性検証処理Ｓ１０２の結果から、ＯＫとなれば新しい構造化文書Ｆ３の完成であり、ＮＧとなればエラー内容に基づき、構造化文書Ｆ２について文書構造修正処理Ｓ１０４を行い、改めて妥当性検証処理Ｓ１０２を実施する。
【００１１】
図１２（ａ）は、文書型定義Ｄ１で定義された構造化文書Ｆ１を変換テンプレートＴ１に基づいて構造化文書Ｆ３に変換する従来例を示す説明図である。同図では、１回目の変換（丸で囲んだ１）後の構造化文書Ｆ２は、文書型定義Ｄ２に矛盾しており、その矛盾を修正（丸で囲んだ２）して構造化文書Ｆ３を生成している。また、図１２（ａ）の文書例において、UL要素及びul要素は番号無しの箇条書き段落（順不同リスト）を定義し、各箇条書き項目は下位のLI要素及びli要素によってそれぞれ定義される。
【００１２】
変換後の要素では、ul要素及びli要素がそれぞれUL要素とLI要素に対応する例である。変換前の構造化文書Ｆ１では、３つの箇条書きからなるリストを記述する。矛盾を含む変換後の構造化文書Ｆ２は単純に対応する要素が置換されている。
【００１３】
ここで、変換後の文書型定義Ｄ２において、ul要素の下位には、li要素がただ１つしか定義できないといったルールが定めてあった場合、変換後の構造化文書Ｆ２において、各li要素を別々のul要素の子要素とする（それぞれulタグの入れ子で囲み直す）ことによって、変換後の文書型定義Ｄ２に合致する妥当な構造化文書Ｆ３に修正している。
【００１４】
図１２（ｂ）は、従来の変換テンプレートＴ１の記述例である。同図に示すように、変換前の構造化文書Ｆ１から矛盾を含む変換後の構造化文書Ｆ２への変換（丸で囲んだ１）に関する変換ルールとなっている。
【００１５】
以下、変換テンプレートＴ１の処理内容について説明する。変換テンプレートＴ１はそれぞれパターン指定とテンプレート指定の２つの部分からなる。
【００１６】
変換処理では、構造化文書の中からパターン指定によって指示された文書パターン（タグ）を抽出し、この抽出した文書パターンに対して、テンプレート指定によって指示された処理内容に従って、追加、削除、置換処理を行い、新しい文書を生成する。
【００１７】
従来の変換テンプレートＴ１において、<xsl:template match>、<xsl:apply-template>、<xsl:value-of>はそれぞれXSL仕様で定義された要素の一つである。
【００１８】
<xsl:template match>を使った(1)及び(3)はそれぞれのパターン指定であり、(1)ではUL要素を、(3)ではLI要素の抽出を意味する。また、(2)及び(4)はテンプレート指定である。まず、(1)のパターン指定に従って、UL要素を抽出し、(2)のテンプレート指定を実施する。
【００１９】
(2)のテンプレート指定は、先ずulの開始タグを記述し、LI要素に対するテンプレートルールの処理を行った後に、ulの終了タグを記述することを意味する。
【００２０】
LI要素に対するテンプレートルールは(3)及び(4)であり、(3)のパターン指定によってLI要素を抽出する。次に、(4)のテンプレート指定によって、先ずliの開始タグを記述し、LI要素以下をテキストに変換して記述し、最後にliの終了タグを記述することを意味する。変換前の文書３０１では、LI要素が３つあるため、上記の(3)のパターン指定に該当する３箇所が抽出され、それぞれ(4)のテンプレート指定の処理を実施して、処理が完了する。
【非特許文献１】XSL Transformations (XSLT)  Version 1.0、［ｏｎｌｉｎｅ］、１９９９年１１月、Ｗ３Ｃ、［平成１９年５月２８日検索］、インターネット＜URL: http://www.w3.org/TR/xslt＞
【発明の開示】
【発明が解決しようとする課題】
【００２１】
しかしながら、上述したように、変換前の文書型定義Ｄ１が変換後の文書型定義Ｄ２と矛盾する仕様（例えば、変換後の文書型定義Ｄ２において禁止されている仕様）を含む場合、変換テンプレートＴ１に従って、要素や属性を抽出し、対応する要素や属性へ置換（変換）や追加を行っただけでは、変換後の文書型定義Ｄ２と矛盾する文書構造を残してしまうという問題がある。
【００２２】
また、従来の構造化文書変換方法では、文書構造変換処理Ｓ１０１と妥当性検証処理Ｓ１０２の２つのステップはどちらも文書データのルート要素から順番に末端までデータ構造に従って要素や属性をサーチするため、文書修正処理Ｓ１０４の回数に伴って、処理に時間がかかるという問題点があった。
【００２３】
また、妥当性検証処理Ｓ１０２において、ＮＧとなった場合には、ＮＧ内容に基づいて文書構造修正処理Ｓ１０４をオフラインで行わなければならないという問題があった。
【００２４】
そこで、本発明は、上記問題点を鑑みてなされたものであり、文書構造変換において出力する文書データを変換後の文書型定義に従った妥当なものとなるように出力し、妥当性検証のステップを省略することによって、文書変換にかかる全体の時間を短縮することを目的とする。
【課題を解決するための手段】
【００２５】
上記課題を解決するために本発明は、第１の文書型定義に基づいて形成された第１の構造化文書を第２の文書型定義に基づいて形成された第２の構造化文書に変換する際に、前記第１の文書型定義及び前記第２の文書型定義を解析し、相違する文書型定義を抽出し、前記解析の結果に応じて、文書変換処理の処理結果である前記第２の構造化文書が前記第２の文書型定義に矛盾することのないような変換ルールを記述した変換テンプレートを生成し、前記変換テンプレートを用いて文書変換処理を行うことを特徴とする。
【００２６】
本発明によれば、変換後（第２）の文書型定義に違反する出力ロジックがあれば、それを修正するための処理内容を変換テンプレートに反映しておくことにより、文書構造変換処理結果である第２の構造化文書が変換後の文書型定義に従った妥当なものとすることができる。この結果、従来行っていた、変換後における妥当性検証ステップを省略することができ、文書変換にかかる全体の時間を短縮することができる。
【発明の効果】
【００２７】
以上説明したように本発明によれば、構造化文書の変換において、変換テンプレートを妥当なものに作り替えることによって、変換後の文書型定義に対する妥当性検証のステップを省略するため、文書構造変換の全体の時間を短縮できる。
【発明を実施するための最良の形態】
【００２８】
（文書変換方法）
以下、本発明の文書変換方法の実施形態について説明する。図１は、本実施形態に係る文書変換方法の概要を示す概念図である。
【００２９】
同図に示すように、変換テンプレートＴ２は、変換前の文書型定義（第１の文書型定義）Ｄ１と、変換後の文書型定義（第２の文書型定義）Ｄ２を解釈して、変換後の文書型定義Ｄ２に従った結果を出力するために妥当な変換ルールが記述されたものである。文書構造変換処理Ｓ１０１では、変換テンプレートＴ２の記述にしたがって、変換前の構造化文書（第１の構造化文書）Ｆ１の文書構造を変換し、新しい構造化文書（第２の構造化文書）Ｆ３を生成する。
【００３０】
かかる変換テンプレート２は、以下の手順により作成することができる。なお、本実施形態において、変換前の文書型定義Ｄ１及び変換後の文書型定義Ｄ２は、ＸＭＬやＨＴＭＬなど、文書を構成する文字列の論理構造を定義する識別子（マークタグ）を有する文書データである。
【００３１】
ここでは、予め識別子対応表と、変換ルールを作成しておく。表１は、本実施形態に係るパターン識別子対応表と変換ルールを併せて記述したテーブルデータである。
【表１】
2007265429.tif 000003
表１に示すように、識別子対応表は、UL要素とul要素というように、同一の論理構造を定義する要素同士を対応付けたものである。また、変換ルールは、変換後の論理構造を定義する差替えテンプレートと、テンプレートを適用するための条件とから構成されている。
【００３２】
識別子対応表は、大文字と小文字の関係にある要素同士や、同一内容の引数を用いる要素同士、同一の機能を有する要素同士というように対応付けて作成する。この識別子対応表に従って、変換前の論理構造と変換後の論理構造とを比較して、両者の相違部分を検出する。例えば、図１２に示すように、構造化文書Ｆ１中のUL要素とLI要素とから形成される論理構造の文書型定義と、構造化文書Ｆ３中のul要素とli要素とから形成される論理構造の文書型定義とを比較し、相違部分を検出する。
【００３３】
次いで、この検出された相違部分の条件を解析する。図１２（ａ）に示した例では、各LI要素が複数（２以上）ある場合には、各LI要素に対して、UL要素がそれぞれ入れ子状態となるように構成されている。したがって、この例では、（LI≧２）が条件となる。そして、相違部分の条件とこれに対応する変換後の論理構造とに基づいて変換ルールを作成し、これを変換テンプレートＴ２に反映させる。
【００３４】
本実施形態では、変換テンプレートＴ２は、パターン指定とテンプレート指定とから構成される。パターン指定は、変換すべき識別子を指定するものであり、ここでは、識別子対応表に列記された識別子となる。また、テンプレート指定は、表１の変換ルールを反映させたものであり、変換後の論理構造を定義する差替え用テンプレートと、差替え用テンプレートを適用する条件から構成されている。
【００３５】
図２（ａ）及び（ｂ）は、本実施形態に係る変換テンプレートＴ２の記述例として、テンプレートルールＴ１２，Ｔ２２を示すものであり、いずれも図１２に示す矛盾を修正し、１回の変換（丸で囲んだ３）のみによって、変換後の構造化文書Ｆ３を出力する例である。本実施形態に係るテンプレートルールＴ１２では、(5)及び(7)がそれぞれのパターン指定であり、(5)では、UL要素を、(7)では、LI要素の抽出を記述している。また、(6)及び(8)は、テンプレート指定である。
【００３６】
図２（ａ）に示す例では、先ず、(5)のパターン指定に従って、UL要素を抽出し、(6)のテンプレート指定を実施する。(6)のテンプレート指定は、カレントの要素（UL）から子要素（LI）にテンプレート適用対象を移動させることを意味する。LI要素に対するテンプレートルールは(7)，(8)である。
【００３７】
(7)のパターン指定によってLI要素を抽出し、(8)のテンプレート指定によって、先ずulの開始タグを記述し、さらにliの開始タグを記述し、LI要素以下をテキストに変換して記述し、最後にliの終了タグとulの終了タグをこの順番で記述することを指示している。
【００３８】
変換前の構造化文書Ｆ１では、LI要素が３つあるため、上記の(7)のパターンを指定に該当する３箇所が抽出され、それぞれ(8)のテンプレート指定の処理を実行して、処理が完了する。
【００３９】
図２（ｂ）に示すテンプレートルールＴ２２においては、<xsl:for-each>はXSL仕様で定義された要素の一つである。(9)は、パターン指定であり、UL要素の抽出を指示する。(10)はテンプレート指定であり、複数のLI要素を繰り返して処理することを指示する。処理の内容は、先ず、ulの開始タグを記述し、さらにliの開始タグを記述し、LI要素以下をテキストに変換して記述し、最後にliの終了タグとulの終了タグをこの順番で記述することを指示している。変換前の構造化文書Ｆ１では、LI要素が３つあるため、上記の(10)のテンプレート指定がある<xsl:for-each>要素によって３つのLI要素に対する処理をくり返した後に処理が完了する。
【００４０】
次いで、他の変換テンプレートの例について説明する。図３（ａ）及び（ｂ）は、body要素とblockquote要素に関する変換例を示す説明図であり、同図（ａ）は、変換前（第１）の構造化文書Ｆ３１、矛盾を含む変換後の文書Ｆ３２、及び矛盾を修正した変換後（第２）の構造化文書Ｆ３３を示し、同図（ｂ）は、従来の変換テンプレートＴ３１及び本実施形態に係る変換テンプレートＴ３２を示している。
【００４１】
文書例において、body要素及びBODY要素はドキュメントの本体を表し、blockquote要素及びBLOCKQUOTE要素は、文字列のブロックを引用として表示することを指示する。div要素は、スタイルシートを適用するブロックを指定することを指示するが、スタイルシートは必ずしも適用しなくてもよい。
【００４２】
本実施形態では、前記表１に示すように、単にbody要素とblockquote要素が包含することのできる要素としてdiv要素を使用するものである。変換前後において、body要素及びblockquote要素がそれぞれBODY要素とBLOCKQUOTE要素に対応する例である。
【００４３】
変換前の文書Ｆ３１は、BODY要素の配下の文字列をそのままドキュメント本文として表示し、さらに続けてBLOCKQUOTE要素の配下にある文字列のブロックを引用として表示する。矛盾を含む変換後の文書Ｆ３２は、単純に対応する要素を置換したものである。
【００４４】
ここで、変換後の文書型定義Ｄ２において、body要素及びblockquote要素の配下には直接文字列を記述することはできないといったルールが定めてあった場合、矛盾を含む変換後の構造化文書Ｆ３２は、変換後の文書型定義Ｄ２と矛盾することになる。矛盾を修正した変換後の構造化文書Ｆ３３では、矛盾を含む変換後の構造化文書Ｆ３２においてbody要素とblockquote要素のそれぞれにdiv要素を介在させることによって、変換後の文書型定義Ｄ２に合致する文書に修正する。
【００４５】
図３（ｂ）は、変換テンプレートルールの記述例である。図３（ａ）に示した変換前の文書Ｆ３１から矛盾を含む変換後の文書Ｆ３２への変換（丸で囲んだ４）に関する変換テンプレートルールを記載したものが、従来の変換テンプレートルールＴ３１であり、変換前の構造化文書Ｆ３１から矛盾を修正した変換後の構造化文書Ｆ３３への変換（丸で囲んだ６）に関する変換ルールを記載したものが、修正した変換テンプレートルールＴ３２である。
【００４６】
従来の変換テンプレートルールＴ３１について、（１１）及び（１３）は、それぞれのパターン指定であり、（１１）ではBODY要素を、（１３）では、BLOCKQUOTE要素の抽出を指示する。また、（１２）及び（１４）はテンプレート指定である。
【００４７】
先ず、（１１）のパターン指定に従って、BODY要素を抽出し、（１２）のテンプレート指定を実施する。（１２）のテンプレート指定は、先ずbodyの開始タグを記述し、カレントの要素（BODY）から子要素（BLOCKQUOTE）にテンプレート適用対象を移動させ、子要素（BLOCKQUOTE）に対するテンプレートルールの処理を行った後に、bodyの終了タグを記述することを意味する。
【００４８】
BLOCKQUOTE要素に対するテンプレートルールは、（１３）、（１４）である。
【００４９】
（１３）のパターン指定に従って、BLOCKQUOTE要素を抽出し、（１４）のテンプレート指定を実施する。（１４）のテンプレート指定は、先ずblockquoteの開始タグを記述し、カレントの要素（BLOCKQUOTE）から子要素にテンプレート適用対象を移動させ、子要素に対するテンプレートルールの処理を行った後に、blockquoteの終了タグを記述することを指示する。
【００５０】
従来の変換テンプレートルールＴ３１は、BODY要素とBLOCKQUOTE要素をそれぞれ単純にbody要素とblockquote要素に変換している。
【００５１】
本実施形態に係る変換テンプレートルールＴ３２において、（１５）及び（１７）はそれぞれのパターン指定であり、（１５）ではBODY要素を、（１７）ではBLOCKQUOTE要素の抽出を指示する。また、（１６）及び（１８）は、テンプレート指定である。先ず、（１５）のパターンに従って、BODY要素を抽出し、（１６）のテンプレート指定を実施する。（１６）のテンプレート指定は、先ず、bodyの開始タグを記述し、さらにdivの開始タグを記述し、カレントの要素（BODY）から子要素（BLOCKQUOTE）にテンプレート適用対象を移動させ、子要素（BLOCKQUOTE）に対するテンプレートルールの処理を行った後に、div及びbodyの終了タグをこの順で記述することを意味する。
【００５２】
BLOCKQUOTE要素に対するテンプレートルールは、（１７）、（１８）である。
【００５３】
（１７）のパターン指定に従って、BLOCKQUOTE要素を抽出し、（１８）のテンプレート指定を実施する。（１８）のテンプレート指定は、先ずblockquoteの開始タグを記述し、さらにdivの開始タグを記述し、カレントの要素（BLOCKQUOTE）から子要素にテンプレート適用対象を移動させ、子要素に対するテンプレートルールの処理を行った後に、div及びblockquoteの終了タグをこの順で記述することを意味する。変換テンプレートルールＴ３２によって、BODY要素とBLOCKQUOTE要素をそれぞれbody要素とblockquote要素に変換するとともに、body要素とblockquote要素にそれぞれdiv要素を介在させることができる。
【００５４】
さらに、本実施形態に係る変換テンプレートルールＴ２の作成例について説明する。図４（ａ）及び（ｂ）は、ol要素とli要素に関する変換例の説明図であり、同図（ａ）は、変換前（第１）の構造化文書Ｆ４１、矛盾を含む変換後の構造化文書Ｆ４２、及び矛盾を修正した変換後（第２）の構造化文書Ｆ４３を示し、同図（ｂ）は、従来の変換テンプレートＴ４１及び本実施形態に係る変換テンプレートＴ４２を示している。
【００５５】
ol要素及びOL要素は番号付きの箇条書きブロック（序列リスト）を作成し、各箇条書き項目は回のli要素及びLI要素によってそれぞれ定義される。変換前の文書Ｆ４１は、OL要素の配下にLI要素が存在する部分と、LI要素が存在しない部分がある例である。
【００５６】
図４（ａ）に示すように、矛盾を含む変換後の構造化文書Ｆ４２は、単純に対応する要素を置換している。ここで、変換後文書型定義においてol要素の配下には少なくとも１つ以上のli要素が必要であるといったルールが定めてある場合、矛盾を含む変換後の構造化文書Ｆ４２は、変換後の文書型定義に矛盾することとなる。
【００５７】
矛盾を修正した変換後の構造化文書Ｆ４３の例では、変換後の構造化文書Ｆ４２において、li要素を持たないol要素をdiv要素に置換することによって、変換後の文書型定義に合致する文書に修正する。
【００５８】
図４（ｂ）は、変換テンプレートルールＴ４２の例である。図４（ａ）に示した変換前の構造化文書Ｆ４１から矛盾を含む変換後の構造化文書Ｆ４２への変換（丸で囲んだ７）に関する変換ルールを記載したものが、図４（ｂ）に記載した従来の変換テンプレートルールＴ４１であり、変換前の構造化文書Ｆ４１から矛盾を修正した変換後の構造化文書Ｆ４１への変換（丸で囲んだ９）に関する変換ルールを記載したものが、図４（ｂ）に記載した変換テンプレートルールＴ４２である。
【００５９】
図４に示すように、従来の変換テンプレートルールＴ４１も、上記同様に、OL要素及びLI要素の抽出を指示するパターン指定と。各パターン指定に対応したテンプレート指定とから構成されている。この従来の変換テンプレートルールＴ４１では、OL要素とLI要素をそれぞれ単純にol要素とli要素に変換している。
【００６０】
本実施形態に係る変換テンプレートルールＴ４２において、（１９）及び（２１）はそれぞれのパターン指定であり、（１９）ではOL要素を（２１）ではLI要素の抽出を意味する。また、（２０）及び（２２）はテンプレート指定である。
【００６１】
先ず、（１９）のパターン指定に従って、OL要素を抽出し、（２０）のテンプレート指定を実施する。
【００６２】
図４（ｂ）において、<xsl:choose>，<xsl:when>，<xsl:otherwise>はそれぞれXSL仕様で定義された要素の一つである。これら３つの要素を組み合わせて場合分けをした処理を行う。（２０）のテンプレート指定において、test属性に記述した条件式（"cout(LI)!=`0`"）の結果が真（TRUE）であれば、<xsl:when>要素内の処理を実施し、偽（FALSE）であれば、<xsl:otherwise>要素内の処理を実施する。
【００６３】
条件式（"cout(LI)!=`0`"）はLI要素の数量をカウントし、１つ以上のLI要素が存在する場合には真（TRUE）となる。その場合には、<xsl:when>要素のテンプレートに従って、先ずolの開始タグを記述し、LI要素に対するテンプレートルールの処理を行った後、olの終了タグを記述することを意味する。
【００６４】
また、条件式（"cout(LI)!=`0`"）は、LI要素の数量が０であった場合には、偽（FALSE）となり、その場合には、<xsl:otherwise>要素のテンプレートに従って、先ずdivの開始タグを記述し、カレントの要素（OL）から子要素にテンプレート適用対象を移動させ、子要素に対するテンプレートルールの処理を行った後、divの終了タグを記述すること意味する。変換テンプレートルールＴ４２によって、ol要素の配下にli要素が存在しない場合には、ol要素をdiv要素へ置換することができる。
【００６５】
なお、上述した本実施形態に係る文書変換方法においては、図５に示すような変更を加えることができる。図５は、XMLに従っていない構造化文書、例えばｉモード用コンパクトＨＴＭＬ文書を、変換前（第１）の構造化文書として用いた場合に関する変換処理の実施例である。本変更では、上述した実施形態において、整形化ツールによる整形化処理Ｓ２０１が付加されている。
【００６６】
この変更例において、文書構造変換ツールとしてXSLTエンジンを動作させるためには、文書がXMLの文書型定義（DTD）に従っている必要がある。XML文書はXML宣言などの宣言文を持ち、全ての要素が正しく入れ子構造になるように厳密に記述しなければならない。XMLに従っていない構造化文書Ｆ１をXML仕様に従わせるために、整形化Ｓ２０１（Well-fomed化）を行う。整形化Ｓ２０１では、次のような内容の処理を行う。
【００６７】
すなわち、開始タグと終了タグの入れ子関係を正しくしたり、終了タグの無いものに終了タグを追加したり、空要素がある場合に、’/’を入れたり（例：<BR/>）、属性値をダブルクォーテーションで括ったり、属性値が省略されているものに属性値を追加したり、要素名と属性名を全て小文字に修正したりする。
【００６８】
そして、図５に示すように、先ず、変換前の構造化文書Ｆ１をXML仕様に従うように整形化Ｓ２０１の処理を行う。この整形化Ｓ２０１の処理には、フリーソフトウェア（HTML Tidy等）を使うことができる。整形化Ｓ２０１された文書に対して文書構造変換Ｓ１０１を実施し、新しい構造化文書Ｆ３を作成する。変換テンプレートＴ２は変換前の文書型定義Ｄ１と変換後の文書型定義Ｄ２を解釈して、変換後の文書型定義Ｄ２に従った結果を出力するように妥当な変換ルールを記述する。構造化文書Ｆ１を整形化Ｓ２０１して、新しい構造化文書Ｆ３へ変換するには、文書構造変換Ｓ１０１を１回だけ実施すれば処理が完了する。
【００６９】
（文書変換プログラム及び文書変換システム）
上述した文書変換方法は、所定のコンピュータ言語で記述されたプログラムを、パーソナルコンピュータやワークステーション等の汎用コンピュータ上で実行することにより実現することができる。このような文書変換プログラムをコンピュータで実行した場合、当該コンピュータは、文書変換システムとして機能することとなる。
【００７０】
図６は、文書変換プログラムをコンピュータ１上で実行し、文書変換システムとして機能するコンピュータ１の内部構造を示すブロック図である。同図に示すように、コンピュータ１は、周知のように、ハードディスク１１や、プリンター用インターフェース１２、ディスプレイ用インターフェース１３、入出力デバイス１４、メモリ１５、通信デバイス１６、及びＣＰＵ１７、及びこれらの各デバイスを接続するバス１８等を備えている。
【００７１】
ハードディスク１１は、各データを格納する記録媒体であり、入出力デバイス１４から読み込まれた各種ファイルデータを格納するとともに、ＣＰＵ１７からの要求に応じてデータをメモリ１５やＣＰＵ１７に出力する。また、各デバイスの処理結果であるデータの格納も行う。また、このハードディスク１１には、文書変換プログラムファイルＰ１を格納しており、ＣＰＵ１７からの起動命令により当該文書変換プログラムファイルＰ１を読み出し、ＣＰＵ１７上で実行する。
【００７２】
プリンター用インターフェース１２は、コンピュータ１と外部のプリンター等を接続するデバイスであり、ＣＰＵ１７等の要求に応じて、ファイル印刷等を行う。また、ディスプレイ用インターフェース１３は、ＣＰＵ１７で生成された表示用データに基づいて映像を表示するものであり、操作画面や、処理結果が表示される。
【００７３】
通信デバイス１６は、ＬＡＮボードやモデム等の通信装置であり、通信回線を通じてコンピュータ１を、インターネットやイーサネット（登録商標）等の通信ネットワーク２０に接続し、データの送受信を行うものである。この通信デバイス１６を介して、コンピュータ１は、外部の他の端末からデータを受信したり、変換した文書ファイルを送信したりすることができる。
【００７４】
入出力デバイス１４は、フロッピー（登録商標）ディスクドライブやＣＤ−ＲＯＭドライブ等、ファイルデータを外部の記録媒体に対して読み出し・書き込みするデバイスであり、本実施形態では、変換テンプレートＴ２や、変換前後の文書型定義Ｄ１，Ｄ２、変換前後の構造化文書Ｆ１，Ｆ３が入出される。
【００７５】
メモリ１５は、ＣＰＵ１７が処理を実行する際にデータを一時的に記憶する主記憶装置であり、ハードディスク１１から読み出されたデータを保持したり、ＣＰＵ１７における処理結果を保持したりする。
【００７６】
ＣＰＵ１７は、中央演算器であり、ハードディスク１１から読み出された文書変換プログラムファイルＰ１を実行することにより、文書型定義解析部１７ａや、変換テンプレート生成部１７ｂ、文書構造変換部１７ｃ、整形部１７ｄ、ファイル入出力部１７ｅ、通信処理部１７ｆ、表示用データ生成部１７ｇ、印刷処理部１７ｈとして機能する。
【００７７】
文書型定義解析部１７ａは、変換前の文書型定義Ｄ１及び変換後の文書型定義を解析し、相違する文書型定義を抽出するものであり、本実施形態では、変換前の文書型定義の識別子と、変換後の文書型定義の識別子との対応付けをする識別子対応表を記憶する識別子対応表記憶部と、文書型定義Ｄ１の識別子により定義された第１の論理構造を抽出するとともに、文書型定義Ｄ２の識別子により定義された第２の論理構造を抽出する論理構造抽出部と、識別子対応表に従って、第１の論理構造と第２の論理構造とを比較し、両者の相違部分を検出し、この検出された相違部分の条件を解析する条件検出部とを有する。
【００７８】
識別子対応表記憶部は、ＣＰＵ１７内部のキャッシュメモリにより実現することができるが、ハードディスク１１やメモリ１５を補助的に用いることができる。
【００７９】
論理構造抽出部は、文書型定義Ｄ１及びＤ２に含まれるデータを順次読み、識別子対応表に列記された識別子との照合を行い、合致するものが検出された際に、その下位にある論理構造をそれぞれ参照し、パターンの抽出を行う。
【００８０】
条件検出部は、変換前後の文書型定義Ｄ１及びＤ２に定められたルールを比較し、その相違が生じる条件を検出する。例えば、UL要素の下位にあるLI要素がいくつある場合にパターンの相違が生じるかなどを検出する。
【００８１】
変換テンプレート生成部１７ｂは、文書型定義解析部による解析結果に応じて、文書変換処理の処理結果である構造化文書Ｆ２が文書型定義Ｄ２に矛盾することのないような変換ルールを記述した変換テンプレートＴ２を生成するものであり、本実施形態では、前記相違部分の条件とこれに対応する変換後の論理構造（Ｄ２から抽出されたパターン）とに基づいて変換ルールを作成し、識別子対応表と変換ルールを関連付け、変換テンプレートの形式に変換する。
【００８２】
文書構造変換部１７ｃは、変換テンプレートを用いて文書変換処理を行うものであり、識別子対応表に列記された識別子を置換するとともに、識別子に付加された引数を変換する。また、前記条件に合致する識別子に関しては、差替えテンプレートに従って、論理構造の追加、削除、変換を行う。
【００８３】
整形部１７ｄは、文書構造変換部における変換を可能とするために、第１の構造化文書Ｆ１を整形するものであり、構造化文書Ｆ１における誤った記述を修正する（XMLのように整形化された文書の場合には不要。）。具体的には、上述したように、開始タグと終了タグの入れ子関係を正しくしたり、終了タグの無いものに終了タグを追加したり、空要素がある場合に、’/’を入れたり（例：<BR/>）、属性値をダブルクォーテーションで括ったり、属性値が省略されているものに属性値を追加したり、要素名と属性名を全て小文字に修正したりする。
【００８４】
ファイル入出力部１７ｅは、ファイルの入出力を制御するものであり、ハードディスク１１や入出力デバイス１４の動作制御を行うものである。具体的には、変換前の構造化文書Ｆ１や変換テンプレートＴ２、識別子対応表等のファイルの読み出しを行わせたり、構造化文書Ｆ３をハードディスク１１に保存したり、入出力デバイス１４においてフロッピー（登録商標）ディスクやＣＤ−Ｒ等に書き込みを行わせる。また、このファイル入出力部１７ｅは、必要に応じて各ファイルについて、通信処理部１７ｆや印刷処理部１７ｈに対する入出力を行う。
【００８５】
通信処理部１７ｆは、通信デバイス１６の動作を制御するものであり、通信デバイス１６を通じてネットワーク２０に接続され、変換前の構造化文書Ｆ１や変換後の構造化文書Ｆ１を外部の端末機に対して送受信したり、他の端末機から変換要求を受信したりする。
【００８６】
表示用データ生成部１７ｇは、ディスプレイ表示用の画像データを生成するとともに、ディスプレイ用インターフェース１３の動作制御を行うものであり、ディスプレイ用インターフェース１３を通じて外部のディスプレイ装置に画像データを表示させる。この表示用データとしては、文書変換プログラムに従って生成されるグラフィックデータが含まれ、各処理のための操作画面や、各ファイルの閲覧画面等を表示するために用いられる。
【００８７】
印刷処理部１７ｈは、変換後の構造化文書Ｆ１をプリンター用インターフェース１２の動作制御を行い、外部のプリンターに印刷処理を行わせるものである。
【００８８】
（動作）
以上説明した文書変換プログラムを、パーソナルコンピュータ等の汎用コンピュータ上で実行することにより、文書変換システムを実現することができる。この文書変換システムの動作について、図７を用いて説明する。図７は、文書変換システムの動作手順を示すフロー図である。
【００８９】
図７に示すように、変換前の文書型定義Ｄ１を読込み、解析を行う（Ｓ２０１）。具体的には、入出力デバイス１４やハードディスク１１からファイルを読み出し、文書型定義解析部１７において解析を行う。次いで、同様にして変換後の文書型定義Ｄ２の読込、解析を行う（Ｓ２０２）。その後、変換テンプレートの生成を行う（Ｓ２０３）。具体的には、文書型定義解析部１７ａにおいて、変換前の文書型定義Ｄ１及び変換後の文書型定義Ｄ２を解析し、相違する文書型定義を抽出する。
【００９０】
次いで、変換前の構造化文書Ｆ１の読込みを行い（Ｓ２０４）、必要に応じて、読み込んだ構造化文書Ｆ１の整形化を行い（Ｓ２０５）、整形化された文書について文書構造変換を行う（Ｓ２０６）。
【００９１】
そして、変換された構造化文書Ｆ３の出力を行う（Ｓ２０７）。この出力としては、入出力デバイス１４やハードディスク１１に対する書き込みや、通信デバイス１６によるネットワーク２０への送信、プリンター用インターフェース１３を通じての印刷が含まれる。
【００９２】
（文書変換プログラムを記録したコンピュータ読み取り可能な記録媒体）
以上説明した文書変換プログラムは、コンピュータ１で読み取り可能な記録媒体に記録することができる。このコンピュータ読み取り可能な記録媒体としては、図８に示すような、フロッピー（登録商標）ディスク２１６や、ＣＤ−ＲＯＭ２１７、ＲＯＭ２１８、カセットテープ等の磁気テープ２１９がある。
【００９３】
そして、このような文書変換プログラムを記録したコンピュータ読み取り可能な記録媒体によれば、図９に示すように、この記録媒体を介して、ノート型パーソナルコンピュータや、デスクトップ型パーソナルコンピュータ、ワークステーション等の汎用コンピュータ３０により文書変換を行うことができる。
【００９４】
例えば、図９に示すように、変換対象の構造化文書Ｆ１がファイルに保存されている場合、文書変換装置として、上述した文書変換プログラムをインストールした、汎用コンピュータ３０を用い、ローカルなディスクに保存された構造化文書の変換を行う。
【００９５】
なお、上述した実施形態では、構造化文書Ｆ１やＦ３を蓄積するハードディスク１１や演算処理を行うＣＰＵ１７等が一つのコンピュータに内蔵されている場合を例に説明したが、本発明は、これに限定されるものではない。例えば、上述した各装置を複数のコンピュータに分散させることもできる。
【００９６】
図１０は、上述した各装置を複数のコンピュータに分散させた場合を示す説明図である。同図に示すように、変換対象の構造化文書Ｆ１を、Web上に配置され
たコンテンツサーバ４０１に蓄積させ、クライアント端末機４０３からの変換要求に応じて、変換用サーバ４０２で変換処理を行うようにしてもよい。
【００９７】
この場合においては、上述した文書変換プログラムを変換用サーバ４０２にインストールするとともに、変換用サーバ４０２に、通信ネットワークに接続され、通信ネットワークを通じて、クライアント端末４０３からの変換要求を受信するとともに、コンテンツサーバ４０１から構造化文書Ｆ１を取得する受信部と、変換後の構造化文書Ｆ３を通信ネットワークを介してクライアント端末４０３に送出する送信部とを設ける。これらの送信部及び受信部は、上述した通信デバイス１６を用いることができる。
【図面の簡単な説明】
【００９８】
【図１】本実施形態に係る文書変換方法の概要を示す概念図である。
【図２】本実施形態に係る変換テンプレートの記述例を示す説明図である。
【図３】本実施形態に係る他の変換テンプレートの作成例を示す説明図である。
【図４】本実施形態に係る他の変換テンプレートの作成例を示す説明図である。
【図５】本実施形態の変更例に係る文書変換方法の概要を示す概念図である。
【図６】本実施形態に係る文書変換プログラムを実行した汎用コンピュータの内部構造を示すブロック図である。
【図７】本実施形態に係る文書変換プログラムを実行した汎用コンピュータの動作を示すフロー図である。
【図８】本実施形態に係る文書変換プログラムを記録したコンピュータ読み取り可能な記録媒体を示す斜視図である。
【図９】本実施形態に係る文書変換プログラムを実行した汎用コンピュータの動作を示す概念図である。
【図１０】本実施形態に係る文書変換プログラムを実行した汎用コンピュータにおいて、ネットワークを通じて変換処理を行う場合の動作を示す概念図である。
【図１１】従来の文書変換方法の概要を示す概念図である。
【図１２】従来の変換テンプレートの作成例を示す説明図である。
【符号の説明】
【００９９】
１…汎用コンピュータ、１１…ハードディスク、１２…プリンター用インターフェース、１３…ディスプレイ用インターフェース、１４…入出力デバイス、１５…メモリ、１６…通信デバイス、１７…ＣＰＵ、２０…通信ネットワーク
Ｄ１…変換前（第１）の文書型定義、Ｄ２…変換後（第２）の文書型定義
Ｆ１，Ｆ３１，Ｆ４１…変換前（第１）の構造化文書、Ｆ２，Ｆ３２，Ｆ４２…変換後の矛盾を含む構造化文書、Ｆ３，Ｆ３３，Ｆ４３…新しい変換後（第２）の構造化文書、Ｔ１，Ｔ３１，Ｔ４１…従来のテンプレート、Ｔ２，Ｔ１２，Ｔ２２，Ｔ３２，Ｔ４２…変換テンプレート
【図１】
2007265429.tif 000004
【図２】
2007265429.tif 000005
【図３】
2007265429.tif 000006
【図４】
2007265429.tif 000007
【図５】
2007265429.tif 000008
【図６】
2007265429.tif 000009
【図７】
2007265429.tif 000010
【図８】
2007265429.tif 000011
【図９】
2007265429.tif 000012
【図１０】
2007265429.tif 000013
【図１１】
2007265429.tif 000014
【図１２】
2007265429.tif 000015