(57)【特許請求の範囲】
【請求項１】
マークアップ言語により記述された、階層構造を有する文書の一部を選択する選択部と、
前記文書を記述したマークアップ言語のタグの構成を示すスキーマを受け付ける受付部と、
前記受付部で受け付けたスキーマを参照して、前記文書を構成する階層構造のうち、前記選択部で選択した文書の一部が配置された層のタグと、当該タグより上位の層のタグとを抽出し、抽出されたタグを下位の層に対応したものから順に組み合わせることにより、前記選択部で選択した文書の一部に付加すべきマークアップ言語のタグを少なくともひとつ生成する生成部と、
前記文書の一部が配置された層のタグを前記文書の一部に付加したフラグメント、前記文書の一部が配置された層のタグとその１つ上の層のタグとを前記文書の一部に付加したフラグメント、というように、前記生成部で生成したタグの組み合わせを前記文書の一部にそれぞれ付加したフラグメントをメモリに出力する出力部と、
を備えることを特徴とする文書処理装置。
【請求項２】
前記出力部から出力されたフラグメントのうちのひとつを選択し、マークアップ言語により記述された文書に対して、選択したひとつのフラグメントを挿入する挿入部をさらに備えることを特徴とする請求項１に記載の文書処理装置。
【請求項３】
コンピュータに備えられた選択部が、マークアップ言語により記述された、階層構造を有する文書の一部を選択するステップと、
コンピュータに備えられた受付部が、前記文書を記述したマークアップ言語のタグの構成を示すスキーマを受け付けるステップと、
コンピュータに備えられた生成部が、前記受付部で受け付けたスキーマを参照して、前記文書を構成する階層構造のうち、前記選択部で選択した文書の一部が配置された層のタグと、当該タグより上位の層のタグとを抽出し、抽出されたタグを下位の層に対応したものから順に組み合わせることにより、前記選択部で選択した文書の一部に付加すべきマークアップ言語のタグを少なくともひとつ生成するステップと、
コンピュータに備えられた出力部が、前記文書の一部が配置された層のタグを前記文書の一部に付加したフラグメント、前記文書の一部が配置された層のタグとその１つ上の層のタグとを前記文書の一部に付加したフラグメント、というように、前記生成部で生成したタグの組み合わせを前記文書の一部にそれぞれ付加したフラグメントをメモリに出力するステップと、
を備えることを特徴とする文書処理方法。
【請求項４】
マークアップ言語により記述された、階層構造を有する文書の一部を選択して、メモリに記憶するステップと、
前記文書を記述したマークアップ言語のタグの構成を示すスキーマを受け付けるステップと、
前記受け付けるステップで受け付けたスキーマを参照して、前記文書を構成する階層構造のうち、選択された文書の一部が配置された層のタグと、当該タグより上位の層のタグとを抽出し、抽出されたタグを下位の層に対応したものから順に組み合わせることにより、メモリに記憶した文書の一部に付加すべきマークアップ言語のタグを少なくともひとつ生成するステップと、
前記文書の一部が配置された層のタグを前記文書の一部に付加したフラグメント、前記文書の一部が配置された層のタグとその１つ上の層のタグとを前記文書の一部に付加したフラグメント、というように、前記生成するステップで生成したタグの組み合わせを前記文書の一部にそれぞれ付加したフラグメントをメモリに出力するステップと、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書処理技術に関し、特に、マークアップ言語により記述された文書を処理する文書処理方法および装置に関する。
【背景技術】
【０００２】
ＸＭＬは、ネットワークなどを介して他者とデータを共有するのに適した形式として注目されており、ＸＭＬ文書を作成、表示、編集するためのアプリケーションが開発されている（たとえば、特許文献１参照）。ＸＭＬ文書は、文書型定義などにより定義されたボキャブラリ（タグセット）に基づいて作成されている。
【特許文献１】特開２００１−２９０８０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＸＭＬ文書に文字等のデータを入力する場合に、ユーザの利便性を考慮すれば、データを容易に入力できる方が望ましい。
本発明はこうした状況に鑑みてなされたものであり、その目的は、マークアップ言語により記述された文書に対してデータを挿入する際に、ユーザの利便性を向上させる文書処理方法および装置を提供することにある。
【課題を解決するための手段】
【０００４】
上記課題を解決するために、本発明のある態様の文書処理装置は、マークアップ言語により記述された文書の一部を選択する選択部と、文書を記述したマークアップ言語の性質を受け付ける受付部と、受付部で受け付けた性質にもとづいて、選択部で選択した文書の一部に付加すべきマークアップ言語のタグを少なくともひとつ生成する生成部と、生成部で生成したタグの数に応じて、選択した文書の一部を複製し、複製した文書の一部のそれぞれに対して、生成した少なくともひとつのタグをそれぞれ付加してメモリに出力する出力部とを備える。【０００５】
「マークアップ言語」は、ＸＭＬの一形態、例えば、ＸＨＴＭＬ、ＳＶＧ、ＭａｔｈＭＬなどであってもよく、ＳＧＭＬ、ＨＴＭＬなどであってもよい。「マークアップ言語の性質」とは、文書を記述しているマークアップ言語を特定する項目であって、例えば、マークアップ言語の種類やマークアップ言語に含まれた構成要素の規則を含む。【０００６】
この態様によると、マークアップ言語により記述された文書から選択された一部に対して、少なくともひとつのタグを生成して付加するので、タグを新たに記述しなくても、マークアップ言語により記述されたデータとして出力できる。【０００７】
受付部で受け付けた文書を記述したマークアップ言語の性質は、文書に含まれたタグの構成であり、生成部は、文書に含まれたタグの構成の整合性を保つように、選択部で選択した文書の一部に付加すべきマークアップ言語のタグを少なくともひとつ生成してもよい。選択部で選択の対象となるべき文書は、階層構造を有し、生成部は、文書を構成した階層構造から、選択した文書の一部が配置された層のタグと、当該タグより上位の層のタグを抽出して、選択部で選択した文書の一部に付加すべきタグとしてもよい。文書に含まれたタグの構成を考慮しながらタグを生成するので、文書に含まれたタグの構成の整合性を保つことができる。【０００８】
出力部から出力され、かつタグが付加された少なくともひとつの文書の一部のうちのひとつを選択し、マークアップ言語により記述された文書に対して、選択したひとつの文書の一部を挿入する挿入部をさらに備えてもよい。選択したひとつの文書の一部を文書の様々な部分に挿入できる。【０００９】
本発明の別の態様は文書処理方法である。この方法は、マークアップ言語により記述された文書の一部を選択し、文書を記述したマークアップ言語の性質にもとづいて、選択した文書の一部に付加すべきマークアップ言語のタグを少なくともひとつ生成し、生成したタグの数に応じて、選択した文書の一部を複製し、複製した文書の一部のそれぞれに対して、生成した少なくともひとつのタグをそれぞれ付加してメモリに出力する。【００１０】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１１】
本発明によれば、マークアップ言語により記述された文書に対してデータを挿入する際に、ユーザの利便性を向上できる。
【図面の簡単な説明】
【００１２】
【図１】前提技術に係る文書処理装置の構成を示す図である。
【図２】文書処理装置により編集されるＸＭＬ文書の例を示す図である。
【図３】図２に示したＸＭＬ文書をＨＴＭＬで記述された表にマッピングする例を示す図である。
【図４（ａ）】図２に示したＸＭＬ文書を図３に示した表にマッピングするための定義ファイルの例を示す図である。
【図４（ｂ）】図２に示したＸＭＬ文書を図３に示した表にマッピングするための定義ファイルの例を示す図である。
【図５】図２に示したＸＭＬ文書を、図３に示した対応によりＨＴＭＬにマッピングして表示した画面の例を示す図である。
【図６】ユーザが定義ファイルを生成するために、定義ファイル生成部がユーザに提示するグラフィカルユーザインターフェースの例を示す図である。
【図７】定義ファイル生成部により生成された画面レイアウトの他の例を示す図である。
【図８】文書処理装置によるＸＭＬ文書の編集画面の一例を示す図である。
【図９】文書処理装置により編集されるＸＭＬ文書の他の例を示す図である。
【図１０】図９に示した文書を表示した画面の例を示す図である。
【図１１】実施例１に係るデータ挿入装置の構成を示す図である。
【図１２】図１２（ａ）−（ｃ）は、図１１のデータ挿入装置により挿入されるデータの例を示す図である。
【図１３】図１１のデータ挿入装置でのデータ挿入処理の手順を示すフローチャートである。
【図１４】図１１のデータ挿入装置でのデータ挿入処理の手順の他の例を示すフローチャートである。
【図１５】図１５（ａ）−（ｄ）は、図１１のデータ挿入装置により挿入されるデータの例を示す図である。
【図１６】図１１のデータ挿入装置でのデータ挿入処理の手順の他の例を示すフローチャートである。
【図１７】実施例１に係るデータ挿入装置の構成の他の例を示す図である。
【図１８】図１８（ａ）−（ｄ）は、図１７のデータ挿入装置により挿入されるデータの例を示す図である。
【図１９】図１９（ａ）−（ｅ）は、図１７のデータ挿入装置により挿入されるデータの他の例を示す図である。
【図２０】実施例２に係るデータ挿入装置の構成を示す図である。
【図２１】図２０のデータ挿入装置でのデータの取得手順を示すフローチャートである。
【図２２】図２２（ａ）−（ｄ）は、図２０のデータ挿入装置により挿入されるデータの例を示す図である。
【符号の説明】
【００１３】
２０  文書処理装置、２２  主制御ユニット、２４  編集ユニット、３０  ＤＯＭユニット、３２  ＤＯＭ提供部、３４  ＤＯＭ生成部、３６  出力部、４０  ＣＳＳユニット、４２  ＣＳＳ解析部、４４  ＣＳＳ提供部、４６  レンダリング部、５０  ＨＴＭＬユニット、５２，６２  制御部、５４，６４  編集部、５６，６６  表示部、６０  ＳＶＧユニット、７２  文書取得部、７４  名前空間ＵＲＩ取得部、７６  定義ファイル名生成部、８０  ＶＣユニット、８２  マッピング部、８４  定義ファイル取得部、８６  定義ファイル生成部、３００  データ挿入装置、３０２  ユーザインターフェース部、３０４  処理部、３０６  辞書記憶部、３０８  データ取得部、３１０  変換候補取得部、３１２  変換部、３１４  性質取得部、３１６  挿入部、３２０  位置決定部、３２２  ボキャブラリ取得部。
【発明を実施するための最良の形態】
【００１４】
本発明の前提となる技術を説明してから、本発明の実施例を説明する。【００１５】
（前提技術）
図１は、前提技術に係る文書処理装置２０の構成を示す。文書処理装置２０は、文書内のデータが階層構造を有する複数の構成要素に分類された構造化文書を処理するが、本前提技術では構造化文書の一例としてＸＭＬ文書を処理する例について説明する。文書処理装置２０は、主制御ユニット２２、編集ユニット２４、ＤＯＭユニット３０、ＣＳＳユニット４０、ＨＴＭＬユニット５０、ＳＶＧユニット６０、及び変換部の一例であるＶＣユニット８０を備える。これらの構成は、ハードウエアコンポーネントでいえば、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。【００１６】
主制御ユニット２２は、プラグインのロードや、コマンド実行のフレームワークを提供する。編集ユニット２４は、ＸＭＬ文書を編集するためのフレームワークを提供する。文書処理装置２０における文書の表示及び編集機能は、プラグインにより実現されており、文書の種別に応じて必要なプラグインが主制御ユニット２２又は編集ユニット２４によりロードされる。主制御ユニット２２又は編集ユニット２４は、処理対象となるＸＭＬ文書の名前空間を参照して、ＸＭＬ文書がいずれのボキャブラリにより記述されているかを判別し、そのボキャブラリに対応した表示又は編集用のプラグインをロードして表示や編集を実行させる。例えば、文書処理装置２０には、ＨＴＭＬ文書の表示及び編集を行うＨＴＭＬユニット５０、ＳＶＧ文書の表示及び編集を行うＳＶＧユニット６０など、ボキャブラリ（タグセット）ごとに表示系及び編集系がプラグインとして実装されており、ＨＴＭＬ文書を編集するときはＨＴＭＬユニット５０が、ＳＶＧ文書を編集するときはＳＶＧユニット６０が、それぞれロードされる。後述するように、ＨＴＭＬとＳＶＧの双方の構成要素を含む複合文書が処理対象となっている場合は、ＨＴＭＬユニット５０とＳＶＧユニット６０の双方がロードされる。【００１７】
このような構成によれば、ユーザは、必要な機能のみを選択してインストールし、後から適宜機能を追加又は削除することができるので、プログラムを格納するハードディスクなどの記録媒体の記憶領域を有効に活用することができ、また、プログラム実行時にも、メモリの浪費を防ぐことができる。また、機能拡張性に優れており、開発主体としても、プラグインの形で新たなボキャブラリに対応することが可能なので開発が容易となり、ユーザとしても、プラグインの追加により容易かつ低コストにて機能を追加することができる。【００１８】
編集ユニット２４は、ユーザインターフェースを介してユーザから編集指示のイベントを受け付け、そのイベントを適切なプラグインなどに通知するともに、イベントの再実行（リドゥ）又は実行の取消（アンドゥ）などの処理を制御する。【００１９】
ＤＯＭユニット３０は、ＤＯＭ提供部３２、ＤＯＭ生成部３４、及び出力部３６を含み、ＸＭＬ文書をデータとして扱うときのアクセス方法を提供するために定められた文書オブジェクトモデル（Document Object Model：ＤＯＭ）に準拠した機能を実現する。ＤＯＭ提供部３２は、編集ユニット２４に定義されているインタフェースを満たすＤＯＭの実装である。ＤＯＭ生成部３４は、ＸＭＬ文書からＤＯＭツリーを生成する。後述するように、処理対象となるＸＭＬ文書が、ＶＣユニット８０により他のボキャブラリにマッピングされる場合は、マッピング元のＸＭＬ文書に対応するソースツリーと、マッピング先のＸＭＬ文書に対応するデスティネーションツリーが生成される。出力部３６は、例えば編集終了時に、ＤＯＭツリーをＸＭＬ文書として出力する。【００２０】
ＣＳＳユニット４０は、ＣＳＳ解析部４２、ＣＳＳ提供部４４、及びレンダリング部４６を含み、ＣＳＳに準拠した表示機能を提供する。ＣＳＳ解析部４２は、ＣＳＳの構文を解析するパーサの機能を有する。ＣＳＳ提供部４４は、ＣＳＳオブジェクトの実装であり、ＤＯＭツリーに対してＣＳＳのカスケード処理を行う。レンダリング部４６は、ＣＳＳのレンダリングエンジンであり、ＣＳＳを用いてレイアウトされるＨＴＭＬなどのボキャブラリで記述された文書の表示に用いられる。【００２１】
ＨＴＭＬユニット５０は、ＨＴＭＬにより記述された文書を表示又は編集する。ＳＶＧユニット６０は、ＳＶＧにより記述された文書を表示又は編集する。これらの表示／編集系は、プラグインの形で実現されており、それぞれ、文書を表示する表示部（Canvas）５６、６６、編集指示を含むイベントを送受信する制御部（Editlet）５２、６２、編集コマンドを受けてＤＯＭに対して編集を行う編集部（Zone）５４、６４を備える。制御部５２又は６２が外部からＤＯＭツリーの編集コマンドを受け付けると、編集部５４又は６４がＤＯＭツリーを変更し、表示部５６又は６６が表示を更新する。これらは、ＭＶＣ（Model-View-Controller）と呼ばれるフレームワークに類似する構成をとっており、概ね、表示部５６及び６６が「View」に、制御部５２及び６２が「Controller」に、編集部５４及び６４とＤＯＭの実体が「Model」に、それぞれ対応する。本前提技術の文書処理装置２０では、ＸＭＬ文書をツリー表示形式で編集するだけでなく、それぞれのボキャブラリに応じた編集を可能とする。例えば、ＨＴＭＬユニット５０は、ＨＴＭＬ文書をワードプロセッサに類似した方式で編集するためのユーザインターフェースを提供し、ＳＶＧユニット６０は、ＳＶＧ文書を画像描画ツールに類似した方式で編集するためのユーザインターフェースを提供する。【００２２】
ＶＣユニット８０は、マッピング部８２、定義ファイル取得部８４、及び定義ファイル生成部８６を含み、あるボキャブラリにより記述された文書を、他のボキャブラリにマッピングすることにより、マッピング先のボキャブラリに対応した表示編集用プラグインで文書を表示又は編集するためのフレームワークを提供する。本前提技術では、この機能を、ボキャブラリコネクション（Vocabulary Connection：ＶＣ）と呼ぶ。定義ファイル取得部８４は、マッピングの定義を記述したスクリプトファイルを取得する。この定義ファイルは、ノードごとに、ノード間の対応（コネクション）を記述する。このとき、各ノードの要素値や属性値の編集の可否を指定してもよい。また、ノードの要素値や属性値を用いた演算式を記述してもよい。これらの機能については、後で詳述する。マッピング部８２は、定義ファイル取得部８４が取得したスクリプトファイルを参照して、ＤＯＭ生成部３４にデスティネーションツリーを生成させ、ソースツリーとデスティネーションツリーの対応関係を管理する。定義ファイル生成部８６は、ユーザが定義ファイルを生成するためのグラフィカルユーザインターフェースを提供する。【００２３】
ＶＣユニット８０は、ソースツリーとデスティネーションツリーの間のコネクションを監視し、表示を担当するプラグインにより提供されるユーザインタフェースを介してユーザから編集指示を受け付けると、まずソースツリーの該当するノードを変更する。ＤＯＭユニット３０が、ソースツリーが変更された旨のミューテーションイベントを発行すると、ＶＣユニット８０は、そのミューテーションイベントを受けて、ソースツリーの変更にデスティネーションツリーを同期させるべく、変更されたノードに対応するデスティネーションツリーのノードを変更する。デスティネーションツリーを表示／編集するプラグイン、例えばＨＴＭＬユニット５０は、デスティネーションツリーが変更された旨のミューテーションイベントを受けて、変更されたデスティネーションツリーを参照して表示を更新する。このような構成により、少数のユーザにより利用されるローカルなボキャブラリにより記述された文書であっても、他のメジャーなボキャブラリに変換することで、文書を表示することができるとともに、編集環境が提供される。【００２４】
文書処理装置２０により文書を表示又は編集する動作について説明する。文書処理装置２０が処理対象となる文書を読み込むと、ＤＯＭ生成部３４が、そのＸＭＬ文書からＤＯＭツリーを生成する。また、主制御ユニット２２又は編集ユニット２４は、名前空間を参照して文書を記述しているボキャブラリを判別する。そのボキャブラリに対応したプラグインが文書処理装置２０にインストールされている場合は、そのプラグインをロードして、文書を表示／編集させる。プラグインがインストールされていない場合は、マッピングの定義ファイルが存在するか否かを確認する。定義ファイルが存在する場合、定義ファイル取得部８４が定義ファイルを取得し、その定義に従って、デスティネーションツリーが生成され、マッピング先のボキャブラリに対応するプラグインにより文書が表示／編集される。複数のボキャブラリを含む複合文書である場合は、後述するように、それぞれのボキャブラリに対応したプラグインにより、文書の該当箇所がそれぞれ表示／編集される。定義ファイルが存在しない場合は、文書のソース又はツリー構造を表示し、その表示画面において編集が行われる。【００２５】
図２は、処理対象となるＸＭＬ文書の例を示す。このＸＭＬ文書は、生徒の成績データを管理するために用いられる。ＸＭＬ文書のトップノードである構成要素「成績」は、配下に、生徒ごとに設けられた構成要素「生徒」を複数有する。構成要素「生徒」は、属性値「名前」と、子要素「国語」、「数学」、「理科」、「社会」を有する。属性値「名前」は、生徒の名前を格納する。構成要素「国語」、「数学」、「理科」、「社会」は、それぞれ、国語、数学、理科、社会の成績を格納する。例えば、名前が「Ａ」である生徒の国語の成績は「９０」、数学の成績は「５０」、理科の成績は「７５」、社会の成績は「６０」である。以下、この文書で使用されているボキャブラリ（タグセット）を、「成績管理ボキャブラリ」と呼ぶ。【００２６】
本前提技術の文書処理装置２０は、成績管理ボキャブラリの表示／編集に対応したプラグインを有しないので、この文書をソース表示、ツリー表示以外の方法で表示するためには、前述したＶＣ機能が用いられる。すなわち、成績管理ボキャブラリを、プラグインが用意された別のボキャブラリ、例えば、ＨＴＭＬやＳＶＧなどにマッピングするための定義ファイルを用意する必要がある。ユーザ自身が定義ファイルを作成するためのユーザインターフェースについては後述することにして、ここでは、既に定義ファイルが用意されているとして説明を進める。【００２７】
図３は、図２に示したＸＭＬ文書をＨＴＭＬで記述された表にマッピングする例を示す。図３の例では、成績管理ボキャブラリの「生徒」ノードを、ＨＴＭＬにおける表（「TABLE」ノード）の行（「TR」ノード）に対応づけ、各行の第１列には属性値「名前」を、第２列には「国語」ノードの要素値を、第３列には「数学」ノードの要素値を、第４列には「理科」ノードの要素値を、第５列には「社会」ノードの要素値を、それぞれ対応付ける。これにより、図２に示したＸＭＬ文書を、ＨＴＭＬの表形式で表示することができる。また、これらの属性値及び要素値は、編集可能であることが指定されており、ユーザがＨＴＭＬによる表示画面上で、ＨＴＭＬユニット５０の編集機能により、これらの値を編集することができる。第６列には、国語、数学、理科、社会の成績の加重平均を算出する演算式が指定されており、生徒の成績の平均点が表示される。このように、定義ファイルに演算式を指定可能とすることにより、より柔軟な表示が可能となり、編集時のユーザの利便性を向上させることができる。なお、第６列は、編集不可であることが指定されており、平均点のみを個別に編集することができないようにしている。このように、マッピング定義において、編集の可否を指定可能とすることにより、ユーザの誤操作を防ぐことができる。【００２８】
図４（ａ）及び図４（ｂ）は、図２に示したＸＭＬ文書を図３に示した表にマッピングするための定義ファイルの例を示す。この定義ファイルは、定義ファイル用に定義されたスクリプト言語により記述される。定義ファイルには、コマンドの定義と、表示のテンプレートが記述されている。図４（ａ）（ｂ）の例では、コマンドとして、「生徒の追加」と「生徒の削除」が定義されており、それぞれ、ソースツリーにノード「生徒」を挿入する操作と、ソースツリーからノード「生徒」を削除する操作が対応付けられている。また、テンプレートとして、表の第１行に「名前」、「国語」などの見出しが表示され、第２行以降に、ノード「生徒」の内容が表示されることが記述されている。ノード「生徒」の内容を表示するテンプレート中、「text-of」と記述された項は「編集可能」であることを意味し、「value-of」と記述された項は「編集不可能」であることを意味する。また、ノード「生徒」の内容を表示する行のうち、第６列には、「(src:国語 + src:数学 + src:理科 + src:社会) div 4」という計算式が記述されており、生徒の成績の平均が表示されることを意味する。【００２９】
図５は、図２に示した成績管理ボキャブラリで記述されたＸＭＬ文書を、図３に示した対応によりＨＴＭＬにマッピングして表示した画面の例を示す。表９０の各行には、左から、各生徒の名前、国語の成績、数学の成績、理科の成績、社会の成績、及び平均点が表示されている。ユーザは、この画面上で、ＸＭＬ文書を編集することができる。たとえば、第２行第３列の値を「７０」に変更すると、このノードに対応するソースツリーの要素値、すなわち、生徒「Ｂ」の数学の成績が「７０」に変更される。このとき、ＶＣユニット８０は、デスティネーションツリーをソースツリーに追従させるべく、デスティネーションツリーの該当箇所を変更し、ＨＴＭＬユニット５０が、変更されたデスティネーションツリーに基づいて表示を更新する。したがって、画面上の表においても、生徒「Ｂ」の数学の成績が「７０」に変更され、更に、平均点が「５５」に変更される。【００３０】
図５に示した画面には、図４（ａ）（ｂ）に示した定義ファイルに定義されたように、「生徒の追加」及び「生徒の削除」のコマンドがメニューに表示される。ユーザがこれらのコマンドを選択すると、ソースツリーにおいて、ノード「生徒」が追加又は削除される。このように、本前提技術の文書処理装置２０では、階層構造の末端の構成要素の要素値を編集するのみではなく、階層構造を編集することも可能である。このようなツリー構造の編集機能は、コマンドの形でユーザに提供されてもよい。また、例えば、表の行を追加又は削除するコマンドが、ノード「生徒」を追加又は削除する操作に対応づけられてもよい。また、他のボキャブラリを埋め込むコマンドがユーザに提供されてもよい。この表を入力用テンプレートとして、穴埋め形式で新たな生徒の成績データを追加することもできる。以上のように、ＶＣ機能により、ＨＴＭＬユニット５０の表示／編集機能を利用しつつ、成績管理ボキャブラリで記述された文書を編集することが可能となる。【００３１】
図６は、ユーザが定義ファイルを生成するために、定義ファイル生成部８６がユーザに提示するグラフィカルユーザインタフェースの例を示す。画面左側の領域９１には、マッピング元のＸＭＬ文書がツリー表示されている。画面右側の領域９２には、マッピング先のＸＭＬ文書の画面レイアウトが示されている。この画面レイアウトは、ＨＴＭＬユニット５０により編集可能となっており、ユーザは、画面右側の領域９２において、文書を表示するための画面レイアウトを作成する。そして、例えば、マウスなどのポインティングデバイスにより、画面左側の領域９１に表示されたマッピング元のＸＭＬ文書のノードを、画面右側の領域９２に表示されたＨＴＭＬによる画面レイアウト中へドラッグ＆ドロップ操作を行うことにより、マッピング元のノードと、マッピング先のノードとのコネクションが指定される。例えば、要素「生徒」の子要素である「数学」を、ＨＴＭＬ画面の表９０の第１行第３列にドロップすると、「数学」ノードと、３列目の「ＴＤ」ノードの間にコネクションが張られる。各ノードには、編集の可否が指定できるようになっている。また、表示画面中には、演算式を埋め込むこともできる。画面の編集が終わると、定義ファイル生成部８６は、画面レイアウトとノード間のコネクションを記述した定義ファイルを生成する。【００３２】
ＸＨＴＭＬ、ＭａｔｈＭＬ、ＳＶＧなどの主要なボキャブラリに対応したビューワやエディタは既に開発されているが、図２に示した文書のようなオリジナルなボキャブラリで記述された文書に対応したビューワやエディタを開発するのは現実的でない。しかし、上記のように、他のボキャブラリにマッピングするための定義ファイルを作成すれば、ビューワやエディタを開発しなくても、ＶＣ機能を利用して、オリジナルなボキャブラリで記述された文書を表示・編集することができる。【００３３】
図７は、定義ファイル生成部８６により生成された画面レイアウトの他の例を示す。図７の例では、成績管理ボキャブラリで記述されたＸＭＬ文書を表示するための画面に、表９０と、円グラフ９３が作成されている。この円グラフ９３は、ＳＶＧにより記述される。後述するように、本前提技術の文書処理装置２０は、一つのＸＭＬ文書内に複数のボキャブラリを含む複合文書を処理することができるので、この例のように、ＨＴＭＬで記述された表９０と、ＳＶＧで記述された円グラフ９３とを、一つの画面上に表示することができる。【００３４】
図８は、文書処理装置２０によるＸＭＬ文書の編集画面の一例を示す。図８の例では、一つの画面が複数に分割されており、それぞれの領域において、処理対象となるＸＭＬ文書を異なる複数の表示形式により表示している。領域９４には、文書のソースが表示されており、領域９５には、文書のツリー構造が表示されており、領域９６には、図５に示したＨＴＭＬにより記述された表が表示されている。これらのいずれの画面上においても、文書の編集が可能であり、いずれかの画面上でユーザが編集を行うと、ソースツリーが変更され、それぞれの画面の表示を担当するプラグインが、ソースツリーの変更を反映すべく画面を更新する。具体的には、ソースツリーの変更を通知するミューテーションイベントのリスナーとして、それぞれの編集画面の表示を担当するプラグインの表示部を登録しておき、いずれかのプラグイン又はＶＣユニット８０によりソースツリーが変更されたときに、編集画面を表示中の全ての表示部が、発行されたミューテーションイベントを受け取って画面を更新する。このとき、プラグインがＶＣ機能により表示を行っている場合は、ＶＣユニット８０がソースツリーの変更に追従してデスティネーションツリーを変更した後、変更されたデスティネーションツリーを参照してプラグインの表示部が画面を更新する。【００３５】
例えば、ソース表示及びツリー表示を、専用のプラグインにより実現している場合は、ソース表示用プラグインとツリー表示用プラグインは、デスティネーションツリーを用いず、直接ソースツリーを参照して表示を行う。この場合、いずれかの画面において編集が行われると、ソース表示用プラグインとツリー表示用プラグインは、変更されたソースツリーを参照して画面を更新し、領域９６の画面を担当しているＨＴＭＬユニット５０は、ソースツリーの変更に追従して変更されたデスティネーションツリーを参照して画面を更新する。【００３６】
ソース表示及びツリー表示は、ＶＣ機能を利用して実現することもできる。すなわち、ソース、ツリー構造をＨＴＭＬによりレイアウトし、そのＨＴＭＬにＸＭＬ文書をマッピングして、ＨＴＭＬユニット５０により表示してもよい。この場合、ソース形式、ツリー形式、表形式の３つのデスティネーションツリーが生成されることになる。いずれかの画面において編集が行われると、ＶＣユニット８０は、ソースツリーを変更した後、ソース形式、ツリー形式、表形式の３つのデスティネーションツリーをそれぞれ変更し、ＨＴＭＬユニット５０は、それらのデスティネーションツリーを参照して、３つの画面を更新する。【００３７】
このように、一つの画面上に複数の表示形式で文書を表示することにより、ユーザの利便性を向上させることができる。例えば、ユーザは、ソース表示又はツリー表示により文書の階層構造を把握しつつ、表９０などを用いて視覚的に分かりやすい形式で文書を表示し、編集することができる。上記の例では、一つの画面を分割して複数の表示形式による画面を同時に表示したが、一つの画面に一つの表示形式による画面を表示し、表示形式をユーザの指示により切り替え可能としてもよい。この場合、主制御ユニット２２が、ユーザから表示形式の切り替え要求を受け付け、各プラグインに指示して表示を切り替える。【００３８】
図９は、文書処理装置２０により編集されるＸＭＬ文書の他の例を示す。図９に示したＸＭＬ文書では、ＳＶＧ文書の「foreignObject」タグの中にＸＨＴＭＬ文書が埋め込まれており、さらに、ＸＨＴＭＬ文書の中にＭａｔｈＭＬで記述された数式が入っている。このような場合、編集ユニット２４が、名前空間を参照して、適切な表示系に描画作業を振り分ける。図９の例では、編集ユニット２４は、まず、ＳＶＧユニット６０に四角形を描画させ、つづいて、ＨＴＭＬユニット５０にＸＨＴＭＬ文書を描画させる。さらに、図示しないＭａｔｈＭＬユニットに、数式を描画させる。こうして、複数のボキャブラリを包含する複合文書が適切に表示される。表示結果を図１０に示す。【００３９】
文書編集中、カーソル（キャリッジ）の位置に応じて、表示されるメニューを切り替えてもよい。すなわち、カーソルが、ＳＶＧ文書が表示された領域内に存在するときは、ＳＶＧユニット６０が提供するメニュー、又はＳＶＧ文書をマッピングするための定義ファイルに定義されたコマンドを表示し、カーソルが、ＸＨＴＭＬ文書が表示された領域内に存在するときは、ＨＴＭＬユニット５０が提供するメニュー、又はＸＨＴＭＬ文書をマッピングするための定義ファイルに定義されたコマンドを表示する。これにより、編集位置に応じて適切なユーザインターフェースを提供することができる。【００４０】
複合文書において、あるボキャブラリに対応する適切なプラグイン又はマッピング定義ファイルがなかった場合は、そのボキャブラリにより記述された部分は、ソース表示又はツリー表示されてもよい。従来、ある文書に他の文書を埋め込んだ複合文書を開くとき、埋め込まれた文書を表示するアプリケーションがインストールされていないと、その内容を表示することができなかったが、本前提技術では、表示用のアプリケーションが存在しなくても、テキストデータにより構成されたＸＭＬ文書をソース表示又はツリー表示することにより内容を把握することができる。これは、テキストベースであるＸＭＬなどの文書ならではの特徴といえる。【００４１】
データがテキストベースで記述されることの他の利点として、例えば、複合文書中の、あるボキャブラリにより記述される部分において、同一文書内の他のボキャブラリで記述された部分のデータを参照してもよい。また、文書内で検索を実行する時に、ＳＶＧなどの図に埋め込まれた文字列も検索対象とすることができる。【００４２】
あるボキャブラリにより記述された文書内に、他のボキャブラリのタグを用いてもよい。このＸＭＬ文書は、妥当（valid）ではないが、整形式（well-formed）であれば、有効なＸＭＬ文書として処理可能である。この場合、挿入された他のボキャブラリのタグは、定義ファイルによりマッピングされてもよい。例えば、ＸＨＴＭＬ文書中に、「重要」、「最重要」などのタグを使用し、これらのタグで囲まれた部分を強調表示してもよいし、重要度の順にソートして表示してもよい。【００４３】
図１０に示した編集画面において、ユーザにより文書が編集されると、編集された部分を担当するプラグイン又はＶＣユニット８０がソースツリーを変更する。ソースツリーには、ノードごとにミューテーションイベントのリスナーを登録できるようになっており、通常は、各ノードが属するボキャブラリに対応したプラグインの表示部又はＶＣユニット８０がリスナーとして登録される。ＤＯＭ提供部３２は、ソースツリーが変更されると、変更されたノードから上位の階層へたどって、登録されたリスナーがあれば、そのリスナーへミューテーションイベントを発行する。例えば、図９に示した文書において、＜ｈｔｍｌ＞ノードの下位のノードが変更された場合、＜ｈｔｍｌ＞ノードにリスナーとして登録されたＨＴＭＬユニット５０にミューテーションイベントが通知されるとともに、その上位の＜ｓｖｇ＞ノードにリスナーとして登録されたＳＶＧユニット６０にもミューテーションイベントが通知される。このとき、ＨＴＭＬユニット５０は、変更されたソースツリーを参照して表示を更新する。ＳＶＧユニット６０は、自身のボキャブラリに属するノードが変更されていないので、ミューテーションイベントを無視してもよい。【００４４】
編集の内容によっては、ＨＴＭＬユニット５０による表示の更新に伴って、全体のレイアウトが変わる可能性がある。この場合は、画面のレイアウトを管理する構成、例えば最上位のノードの表示を担当するプラグインにより、プラグインごとの表示領域のレイアウトが更新される。例えば、ＨＴＭＬユニット５０による表示領域が以前より大きくなった場合、ＨＴＭＬユニット５０は、まず自身の担当する部分を描画して、表示領域の大きさを決定する。そして、画面のレイアウトを管理する構成に、変更後の表示領域の大きさを通知し、レイアウトの更新を依頼する。画面のレイアウトを管理する構成は、通知を受けて、プラグインごとの表示領域を再レイアウトする。こうして、編集された部分の表示が適切に更新されるとともに、画面全体のレイアウトが更新される。【００４５】
（実施例１）
本発明の実施例１は、ＸＭＬおよびその他の言語で記述された文書（以下、「処理対象文書」という）をＸＨＴＭＬに変換して（以下、ＸＨＴＭＬに変換した文書を「ＸＨＴＭＬ文書」という）、画面等に表示し、ユーザからＸＨＴＭＬ文書に対して挿入すべき文字や記号等のデータを受け付け、当該データを処理対象文書に挿入するデータ挿入装置に関する。本実施例に係るデータ挿入装置は、文字の入力やコピー＆ペースト等において、単なるテキスト形式の文字列だけでなく、ＸＭＬ形式のタグが付加された文字列や、ＸＭＬ形式の階層構造を有する文字列（以下、「フラグメント」ともいう）等の挿入を受け付け、処理対象文書の階層構造の整合性を保つように挿入する。データ挿入装置は、処理対象文書を作成したボキャブラリ（以下、「処理対象ボキャブラリ」という）および処理対象ボキャブラリに含まれた構成要素の規則、ここではスキーマ（以下、「処理対象スキーマ」という）を保持している。さらに、処理対象文書でデータを挿入すべき位置の処理対象ボキャブラリおよび処理対象スキーマにもとづいて、挿入すべきデータを変換し、変換したデータを処理対象文書に挿入する。【００４６】
図１１は、実施例１に係るデータ挿入装置３００の構成を示す。データ挿入装置３００は、ユーザインターフェース部３０２、処理部３０４、辞書記憶部３０６、文書処理装置１００を含む。また、処理部３０４は、データ取得部３０８、変換候補取得部３１０、変換部３１２、性質取得部３１４、挿入部３１６を含む。ここで、データ挿入装置３００は特許請求の範囲における文書処理装置の一例であり、文書処理装置１００は前提技術で説明した文書処理装置１００に相当する。【００４７】
ユーザインターフェース部３０２は、ユーザからの指示を受け付ける。ここで、図示しない画面が、ＸＨＴＭＬ文書に変換された処理対象文書（ここで、ＸＨＴＭＬ文書と処理対象文書を統合する概念を単に「文書」というが、当該文書を一般的な意味での文書と区別せずに使用するものとする）を表示している。表示された文書に対して、ユーザがユーザインターフェース部３０２に所定の指示を入力する。所定の指示とは、例えば、文字や記号などのデータを文書に入力したりする指示や、文書の一部に記載された文字を文書の別の部分にコピー＆ペーストする指示である。なお、コピー＆ペーストは、カット＆ペーストやドラッグ＆ドロップであってもよく、つまり、文書に対して加工を施す処理であればよい。【００４８】
データ取得部３０８は、ユーザインターフェース部３０２を介して、文書に挿入すべきデータを受け付ける。ここで挿入されるデータは、前述の入力された文字やコピー＆ペーストされた文字であってもよい。【００４９】
辞書記憶部３０６は、データ取得部３０８で入力したデータを変換するための辞書を予め記憶する。辞書記憶部３０６は、「ひらがな」を「漢字」等に変換するための辞書（以下、「一般辞書」という）だけでなく、ＭａｔｈＭＬやＳＶＧに対応した辞書も記憶している。変換候補取得部３１０は、辞書記憶部３０６で記憶した辞書にもとづいて、データ取得部３０８で受け付けたデータを変換する。例えば、データ取得部３０８で受け付けたデータが「るーと２」である場合に、変換候補取得部３１０は、一般辞書を使用して、テキスト形式の「ルート２」に変換し、さらにＭａｔｈＭＬの辞書を使用して、ＭａｔｈＭＬ形式のタグが付加された「ルート２」、すなわち＜ｍｓｑｒｔ＞＜ｍｒｏｗ＞２＜／ｍｒｏｗ＞＜／ｍｓｑｒｔ＞という文字列に変換する。また、データ取得部３０８で受け付けたデータが「えん」である場合に、変換候補取得部３１０は、一般辞書を使用して、テキスト形式の「円」に変換し、さらにＳＶＧの辞書を使用して、ＳＶＧ形式の「ｃｉｒｃｌｅ」に変換する。さらに、変換候補取得部３１０は、複数の辞書を使用して変換したデータをそれぞれ画面に表示する。【００５０】
性質取得部３１４は、処理対象文書の中のデータを挿入すべき位置における当該処理対象文書を記述したマークアップ言語の性質、例えば、処理対象ボキャブラリや処理対象スキーマを受け付ける。処理対象文書がひとつの処理対象ボキャブラリで記述されている場合、性質取得部３１４は、当該処理対象ボキャブラリをそのまま取得するが、処理対象文書が複数の処理対象ボキャブラリで記述されている場合、性質取得部３１４は、データを挿入すべき位置における処理対象ボキャブラリを取得する。なお、処理対象ボキャブラリの取得のために、処理対象文書の中に含まれた名前空間宣言が使用され、処理対象スキーマの取得のために、例えば、処理対象文書に付属の仕様書が使用される。【００５１】
変換部３１２は、変換候補取得部３１０が画面に表示した複数種類のデータに対して、ユーザから複数種類のデータのひとつを選択する指示を受け付ける。さらに、性質取得部３１４で受け付けた処理対象ボキャブラリや処理対象スキーマにもとづいて、ユーザによって選択されたデータが処理対象文書に挿入可能であるかを判断し、挿入可能であれば、当該データの挿入を決定する。すなわち、変換候補取得部３１０と変換部３１２は、データ取得部３０８で受け付けたデータを変換する。例えば、変換部３１２は、性質取得部３１４で受け付けた処理対象ボキャブラリがＭａｔｈＭＬである場合、ユーザからＭａｔｈＭＬ形式のタグが付加された「ルート２」が選択されれば、ＭａｔｈＭＬに対応するように、ＭａｔｈＭＬ形式のタグが付加された「ルート２」に決定する。なお、テキスト形式の「ルート２」であってもよい。【００５２】
また、変換部３１２は、性質取得部３１４で受け付けた処理対象スキーマの規定によりＭａｔｈＭＬの＜ｍｓｑｒｔ＞タグの挿入が許されない場合に、テキスト形式の「ルート２」に決定する。さらに、変換部３１２は、処理対象文書に応じたタグを選択したデータに付加して出力する。ここで、付加するタグの具体例については後述する。一方、変換部３１２は、性質取得部３１４で受け付けた処理対象ボキャブラリや処理対象スキーマにもとづいて、ユーザが選択したデータに決定できない場合、例えば、処理対象ボキャブラリがＭａｔｈＭＬであるにもかかわらずＳＶＧ形式の「ｃｉｒｃｌｅ」が選択された場合に、変換を実行しなくてもよい。その際、画面を介してユーザにその旨を通知する。【００５３】
なお、変換部３１２は、変換候補取得部３１０の代わりに、性質取得部３１４で受け付けた処理対象ボキャブラリや処理対象スキーマにもとづいて、変換候補取得部３１０で変換した複数種類のデータの優先順位を決定し、図示しない画面を介して変換した複数種類のデータを優先順位に従って表示してもよい。例えば、処理対象ボキャブラリや処理対象スキーマに一致したデータをまず表示し、次に処理対象ボキャブラリや処理対象スキーマに反しないデータを表示し、最後に処理対象ボキャブラリや処理対象スキーマに反するデータを表示してもよい。【００５４】
挿入部３１６は、変換部３１２で選択したデータを図示しない処理対象文書に挿入する。
なお、以上の処理を実行するにあたって、処理部３０４は、文書処理装置１００に含まれた所定の機能を使用するが、その説明は省略する。例えば、処理部３０４は、文書処理装置１００のうちのＣＳＳユニット１４０、ＨＴＭＬユニット１５０、ＳＶＧユニット１６０を使用する。【００５５】
図１２（ａ）−（ｃ）は、データ挿入装置３００により挿入されるデータの例を示す。図１２（ａ）は、ユーザが文字を入力する画面を示す。ここでは、処理対象文書からＸＨＴＭＬに変換されたＸＨＴＭＬ文書が画面に表示されており、ユーザは「るーと２」を入力している。ユーザが所定のインターフェースを介して文字の変換を指示すると、変換候補ウインドウ４００の中に「１」としてＭａｔｈＭＬ形式のタグが付加された「ルート２」が表示され、「２」としてテキスト形式であり、かつカタカナの「ルート２」が表示され、「３」としてテキスト形式であり、かつひらがなの「るーと２」が表示されている。【００５６】
図１２（ｂ）は、図１２（ａ）の変換候補ウインドウ４００に示された変換候補の中で、「１」のＭａｔｈＭＬ形式のタグが付加された「ルート２」が選択された場合に、処理対象文書に挿入されるべき文字列を示す。なお、図ではＸＭＬ文書の一部を記載する。ここで、ＭａｔｈＭＬ形式のタグが付加された「ルート２」は、＜ｍｓｑｒｔ＞から＜／ｍｓｑｒｔ＞で囲まれた部分であるが、それを挟んで付加された＜ｃｈａｐｔｅｒ＞、＜ｐａｒａｇｒａｐｈ＞、＜ｓｅｃｔｉｏｎ＞は、前述の変換部３１２で付加されたタグであって、処理対象文書に応じたタグに相当する。すなわち、この例では、挿入位置におけるタグセットが、＜ｃｈａｐｔｅｒ＞、＜ｐａｒａｇｒａｐｈ＞、＜ｓｅｃｔｉｏｎ＞を含むように予め規定されていると仮定しており、変換部３１２は、処理対象文書の階層構造の整合性が保たれるように、また処理対象スキーマが規定されている場合には当該スキーマに準拠するように、これらのタグを付加している。図１２（ｃ）は、図１２（ａ）の変換候補ウインドウ４００に示された変換候補の中で、「２」のテキスト形式の「ルート２」が選択された場合に、処理対象文書に挿入されるべき文字列を示す。ここでは、テキストの「ルート２」に処理対象ボキャブラリや処理対象スキーマに応じたタグが付加されている。【００５７】
図１３は、データ挿入装置３００でのデータ挿入処理の手順を示すフローチャートである。変換部３１２は、データ取得部３０８で取得したデータを変換する際の候補のうち、ユーザが選択したデータを受け付ける（Ｓ１０）。性質取得部３１４は、処理対象文書での当該データの挿入位置を特定する（Ｓ１２）。また、性質取得部３１４は、処理対象ボキャブラリを取得する（Ｓ１４）。さらに、性質取得部３１４は、処理対象スキーマを取得する（Ｓ１６）。変換部３１２は、データが処理対象ボキャブラリや処理対象スキーマに対応していれば（Ｓ１８のＹ）、挿入部３１６はデータを変換してから、処理対象文書に挿入する（Ｓ２０）。一方、変換部３１２は、データが処理対象ボキャブラリや処理対象スキーマに対応していなければ（Ｓ１８のＮ）、画面を介して変換できない旨を通知する（Ｓ２２）。なお、変換部３１２がテキスト形式などの処理対象文書に挿入できる形式に変換してから、挿入部３１６が自動的に挿入してもよい。【００５８】
図１４は、データ挿入装置３００でのデータ挿入処理の手順の他の例を示すフローチャートである。フローチャートの説明の前に、当該処理の概略を説明する。当該処理は、図１１に示したデータ挿入装置３００と同じタイプのデータ挿入装置３００でなされるが、一部処理の内容がこれまでと異なる。ここでは、コピー＆ペーストの処理を対象にする。データ取得部３０８で受け付けたデータには、所定のタグが予め付加されている。変換部３１２は、付加されたタグと性質取得部３１４で受け付けた処理対象スキーマにもとづいて、データに付加されたタグを変更する。その際、データ取得部３０８で取得されたデータに付加されたタグから、そのデータがＸＭＬデータ（フラグメント）であると判断できる場合は、変換部３１２はＸＭＬフラグメントとして挿入を試みる。一方、処理対象スキーマを含むマークアップ言語の性質によって、ＸＭＬフラグメントとして挿入できない場合は、タグを除去してテキストデータとして挿入する。変換部３１２は、必要に応じて、名前空間を補完してもよい。例えば、挿入されるフラグメントの属する名前空間が、挿入される位置の前後のフラグメントの属する名前空間とは異なる場合がある。このような場合、変換部３１２は、フラグメントに付加されるタグに、名前空間を記述するようにしてもよい。例えば、＜ｓｅｃｔｉｏｎ＞＜／ｓｅｃｔｉｏｎ＞というタグを付加する際に、＜ｓｅｃｔｉｏｎ  ｘｍｌｎｓ：＝”名前空間ＵＲＩ”＞＜／ｓｅｃｔｉｏｎ＞というタグを付加して挿入してもよい。【００５９】
データ取得部３０８は、タグが付加されたデータであって、文書に挿入すべきデータを受け付ける（Ｓ４０）。性質取得部３１４は、処理対象文書での当該データの挿入位置を特定する（Ｓ４２）。また、性質取得部３１４は、処理対象スキーマを取得する（Ｓ４４）。変換部３１２が、データがＸＭＬフラグメントであると解釈した場合（Ｓ４６のＹ）であって、挿入部３１６がＸＭＬフラグメントして挿入できる場合（Ｓ４８のＹ）は、ＸＭＬフラグメントとして挿入する（Ｓ５０）。一方、データがＸＭＬフラグメントであると解釈できない場合（Ｓ４６のＮ）、あるいは挿入部３１６がＸＭＬフラグメントして挿入できない場合（Ｓ４８のＮ）は、挿入部３１６がデータをテキストとして挿入する（Ｓ５２）。【００６０】
図１５（ａ）−（ｄ）は、データ挿入装置３００により挿入されるデータの例を示す。これらは、図１４で説明した処理に対応した画面表示およびソース表示を示す。図１５（ａ）は、処理対象文書をＸＨＴＭＬ文書として表示した画面を示す。図示のごとく、１行目に「これがセクション１。」と記載されており、２行目に「これがセクション２。」と記載されている。図１５（ｂ）は、図１５（ａ）に対応したＸＭＬでのソースを示す。図ではＸＭＬ文書の一部を記載する。図示のごとく、＜ｓｅｃｔｉｏｎ＞と＜／ｓｅｃｔｉｏｎ＞のタグの間に、前述の文字が記述されている。図１５（ｃ）は、図１５（ａ）の１行目に記載された「これがセクション１。」をコピーし、３行目にペーストした場合の画面を示す。図１５（ｄ）は、図１５（ｃ）に対応したＸＭＬでのソースを示す。ユーザがコピーの対象として「これがセクション１。」を選択すれば、その前後に＜ｓｅｃｔｉｏｎ＞と＜／ｓｅｃｔｉｏｎ＞のタグが付加されて、データ取得部３０８に入力される。変換部３１２は、タグの内容からＸＭＬと解釈できるので、そのまま変換せずに、処理対象文書に挿入する。なお、変換部３１２は、所定のタグ、例えば＜ｐａｒａｇｒａｐｈ＞と＜／ｐａｒａｇｒａｐｈ＞を付加してから、処理対象文書に挿入してもよい。【００６１】
図１６は、データ挿入装置３００でのデータ挿入処理の手順の他の例を示すフローチャートである。フローチャートの説明の前に、当該処理の概略を説明する。図１４では、データ取得部３０８で受け付けたデータに付加されたタグと性質取得部３１４で取得した処理対象スキーマから、処理対象ボキャブラリを特定したが、図１６では、変換部３１２がデータ取得部３０８で受け付けたデータに付加されたタグと性質取得部３１４で取得した処理対象ボキャブラリから、処理対象スキーマを特定する。さらに、変換部３１２は、特定した処理対象スキーマに対応するように付加されたタグを変更する。【００６２】
データ取得部３０８は、タグが付加されたデータであって、文書に挿入すべきデータを受け付ける（Ｓ６０）。性質取得部３１４は、処理対象文書での当該データの挿入位置を特定する（Ｓ６２）。また、性質取得部３１４は、処理対象ボキャブラリを取得する（Ｓ６４）。変換部３１２が、付加されたタグと処理対象ボキャブラリにもとづいて、処理対象スキーマを取得する（Ｓ６６）。変換部３１２は、データが処理対象ボキャブラリや処理対象スキーマに対応していれば（Ｓ６８のＹ）、挿入部３１６はデータを変換してから、処理対象文書に挿入する（Ｓ７０）。一方、変換部３１２は、データが処理対象ボキャブラリや処理対象スキーマに対応していなければ（Ｓ６８のＮ）、挿入部３１６がデータをテキストとして挿入する（Ｓ７２）。【００６３】
図１７は、実施例１に係るデータ挿入装置３００の構成の他の例を示す。図１７のデータ挿入装置３００の説明の前に、当該装置における処理の概略を説明する。ここでは、定義ファイル取得部１８４で取得したマッピングの定義を記述したスクリプトファイル（以下、「ＶＣＤ」という）を使用して、処理対象ボキャブラリを特定する。ユーザは、画面に表示されたＸＨＴＭＬ文書において、挿入すべき文字と挿入位置を指定する。データ挿入装置３００は、ＶＣＤにもとづいて、処理対象文書で文字を挿入すべき位置を特定する。さらに、特定した位置における処理対象ボキャブラリを取得する。図１７のデータ挿入装置３００は、図１１のデータ挿入装置３００と比較して、位置決定部３２０、ボキャブラリ取得部３２２を含む。【００６４】
位置決定部３２０は、図１のＶＣユニット１８０からＶＣＤを受け付ける。また、データ取得部３０８で受け付けたＸＨＴＭＬ文書の中の文字を挿入すべき位置も取得する。さらに、ＶＣＤに記述されたマッピングの対応関係を使用して、ＸＨＴＭＬ文書の中の文字を挿入すべき位置に対応した処理対象文書の中の文字を挿入すべき位置を特定する。ボキャブラリ取得部３２２は、処理対象文書の中のデータを挿入すべき位置における処理対象ボキャブラリを特定する。これに続く処理は、図１１と同様であるので、説明を省略する。【００６５】
図１８（ａ）−（ｄ）は、図１７のデータ挿入装置３００により挿入されるデータの例を示す。図１８（ａ）は、画面表示を示す。ここでは、２行２列に配置されたセル４０２を示す。図１８（ｂ）は、図１８（ａ）に対応したソース表示を示す。図１８（ａ）での４つのセル４０２は、データを含んでいないので、これに対応して４つの＜ｔｄ  ／＞が記述されている。このような状況下で、図１８（ｃ）のごとくユーザは、左上に配置されたセル４０２に「セル」と入力する。図１７の位置決定部３２０は、左上に配置されたセル４０２が図１８（ｂ）の中のひとつの＜ｔｄ  ／＞に対応することを認識する。【００６６】
ボキャブラリ取得部３２２は、「セル」の変換候補として、＜ｔｄ＞のタグ、＜ｔｒ＞と＜ｔｄ＞のタグ、＜ｔａｂｌｅ＞と＜ｔｒ＞と＜ｔｄ＞のタグ、＜ｂｏｄｙ＞と＜ｔａｂｌｅ＞と＜ｔｒ＞と＜ｔｄ＞のタグをそれぞれ付加した４種類の変換候補を取得する。変換部３１２は、変換を実行する際に、タグの構成より上述の４種類の変換候補のうち、後者の２つは除外されるべきであると判断される。なぜなら、ＸＨＴＭＬの規則において＜ｔａｂｌｅ＞の中に＜ｔａｂｌｅ＞をさらに入れることができないからである。そのため、ユーザは、上述の４種類の変換候補のうちで、前者の２つのうちのいずれかを選択する。図１８（ｃ）は、＜ｔｄ＞のタグを選択した場合であり、図１８（ｂ）のソース表示のうち、＜ｔｒ＞＜ｔｄ  ／＞＜ｔｄ  ／＞＜／ｔｒ＞が、＜ｔｒ＞＜ｔｄ＞セル＜／ｔｄ＞＜ｔｄ  ／＞＜／ｔｒ＞に変換される。図１８（ｄ）は、＜ｔｒ＞と＜ｔｄ＞のタグを選択した場合であり、図１８（ｂ）のソース表示に、＜ｔｒ＞＜ｔｄ  ／＞＜ｔｄ  ／＞＜／ｔｒ＞が、付加される。【００６７】
図１９（ａ）−（ｅ）は、図１７のデータ挿入装置３００により挿入されるデータの他の例を示す。ここでは、図１８（ａ）−（ｄ）と異なって画面にセル４０２が表示されていない状態を開始状態とする。それが図１９（ａ）である。図１９（ｂ）は、ユーザが「セル」と入力し、さらにそのままテキストとして表示された場合である。図１９（ｃ）は、そのときのソース表示である。一方、図１９（ｄ）は、図１９（ｂ）と同様に「セル」と入力されたが、変換部３１２がセル４０２の入力と解釈した場合の画面表示である。このような場合に、図１９（ｅ）のようなソース表示が実現される。このように、処理対象文書の階層構造の整合性を保ちつつ、階層構造の複数種類の層にデータを挿入できる。【００６８】
本発明の実施例によれば、データを処理対象文書に挿入する際に、処理対象ボキャブラリや処理対象スキーマを考慮してデータを変換してから、処理対象文書に挿入するので、ユーザが処理対象ボキャブラリや処理対象スキーマを意識しなくても正確にデータを挿入できる。データに付加されたタグを処理対象ボキャブラリに応じて変更してから、処理対象文書に挿入するので、ユーザが処理対象ボキャブラリを意識しなくても正確にデータを挿入できる。データに付加されたタグを処理対象スキーマに応じて変更してから、処理対象文書に挿入するので、ユーザが処理対象スキーマを意識しなくても正確にデータを挿入できる。また、ユーザがデータを挿入する際に、処理対象ボキャブラリや処理対象スキーマを意識せずに処理を実行できるので、ユーザの利便性を向上できる。処理対象文書を表示する際のマークアップ言語の種類と、処理対象ボキャブラリとの関係にもとづいて、処理対象ボキャブラリを特定できる。処理対象ボキャブラリと受け付けたデータに付加されたタグから、処理対象スキーマを特定するので、処理対象スキーマを受け付けなくても、データを適切に挿入できる。処理対象文書の階層構造に矛盾せずにデータを挿入できる。【００６９】
（実施例２）
本発明の実施例２は、処理対象文書をＸＨＴＭＬに変換したＸＨＴＭＬ文書を画面等に表示し、ユーザからＸＨＴＭＬ文書の一部の選択を受け付け、受け付けた一部をＸＨＴＭＬ文書の別の部分に挿入するデータ挿入装置に関する。本発明に係るデータ挿入装置は、コピーだけでなく、カットの場合にも対応できる。コピーによって選択された文字等はクリップボードに記憶されるが、データ挿入装置は、処理対象文書のタグ構造から、選択した文字が配置された層のタグと、当該タグより上位の層のタグを抽出し、それらの組み合わせを変えながら、複数種類の文字の組み合わせを生成する。【００７０】
図２０は、実施例２に係るデータ挿入装置３００の構成を示す。データ挿入装置３００は、処理部３０４、メモリ３３４、文書処理装置１００を含み、また処理部３０４は、データ取得部３０８、性質取得部３１４、タグ生成部３３０、タグ付加部３３２、変換部３１２、挿入部３１６を含む。ここで、図１１と同様に、データ挿入装置３００は特許請求の範囲における文書処理装置の一例であり、文書処理装置１００は前提技術で説明した文書処理装置１００に相当する。【００７１】
データ取得部３０８は、ユーザインターフェース部３０２を介して、ユーザから処理対象文書の一部を選択する旨の指示を受け付ける。ここで、実施例１と同様に、処理対象文書は、階層構造を有する。また、選択は、処理対象文書の一部をコピーやカットするために実行される。性質取得部３１４は、処理対象文書の性質として、当該文書に含まれたタグの構成を受け付ける。【００７２】
タグ生成部３３０は、性質取得部３１４で受け付けたタグの構成にもとづいて、データ取得部３０８で選択した処理対象文書の一部に付加すべきタグを少なくともひとつ生成する。すなわち、処理対象文書に含まれたタグの構成の整合性を保つように、データ取得部３０８で選択した処理対象文書の一部に付加すべきマークアップ言語のタグを少なくともひとつ生成する。具体的には、処理対象文書を構成した階層構造から、選択した文書の一部が配置された層のタグと、当該タグより上位の層のタグを抽出する。詳細は、具体例を挙げて後述するが、上位の層のタグとは、選択した文書の一部が配置された層よりも上位の層に配置されているが、ルート要素よりも下位の層に配置されたタグである。さらに、抽出したタグは、下位の層に対応したものから順に組み合わせられ、組み合わされるべきタグの数を変えることによって、複数種類のタグの組み合わせが生成される。【００７３】
タグ付加部３３２は、タグ生成部３３０で生成したタグの組み合わせの数に応じて、選択した処理対象文書の一部を複製し、複製した文書の一部のそれぞれに対して、複数種類のタグの組み合わせをそれぞれ対応させつつ付加する。すなわち、文書の一部の内容はひとつであるが、異なった複数のタグが付加されることによって、複数の「文書の一部」が生成される。これは、複数のフラグメントが生成されることに相当する。メモリ３３４は、タグ付加部３３２から出力された複数の「文書の一部」を保持する。【００７４】
変換部３１２は、ユーザインターフェース部３０２を介して、ユーザからメモリ３３４に記憶した「文書の一部」をペーストする旨の指示を受け付けた場合に、メモリ３３４に記憶した複数種類の「文書の一部」を読み出す。さらに、ユーザの指示によって、複数種類の「文書の一部」からひとつを選択する。挿入部３１６は、選択したひとつに付加されたタグにもとづいて、処理対象文書のタグの構成を保つように、処理対象文書に挿入する。なお、図１１と同様に、以上の処理を実行するにあたって、処理部３０４は、文書処理装置１００に含まれた所定の機能を使用する。【００７５】
図２１は、データ挿入装置３００でのデータの取得手順を示すフローチャートである。データ取得部３０８は、ユーザインターフェース部３０２からの指示にもとづいて、処理対象文書の一部を選択する（Ｓ８０）。性質取得部３１４は、処理対象文書に含まれたタグの構造を取得する。タグ生成部３３０は、データ取得部３０８で選択された文書の一部に対して、階層構造で当該文書の一部を配置した層のタグを抽出する（Ｓ８２）。タグ生成部３３０は、さらに上位の層のタグを検索する（Ｓ８４）。検索したタグがルート要素のタグに相当しなければ（Ｓ８６のＮ）、ステップ８２からの処理を繰り返し実行し、複数種類のタグを抽出する。一方、検索したタグがルート要素のタグに相当すれば（Ｓ８６のＹ）、タグ付加部３３２は、タグ生成部３３０で抽出したタグの数に応じて、データ取得部３０８で選択された文書の一部を複製する（Ｓ８８）。さらに、抽出したタグの組み合わせを変えながら、複製された文書の一部にタグを付加する（Ｓ９０）。メモリ３３４は、タグが付加された文書の一部を記憶する（Ｓ９２）。【００７６】
図２２（ａ）−（ｄ）は、データ挿入装置３００により挿入されるデータの例を示す。図２２（ａ）は、処理対象文書のソース表示である。ここでは、＜ｃｈａｐｔｅｒ＞をルート要素として、＜ｐａｒａｇｒａｐｈ＞、＜ｓｅｃｔｉｏｎ＞と続く階層構造を有する。図２２（ｂ）は、図２２（ａ）の処理対象文書の画面表示である。図２２（ｃ）は、コピーやカットを目的として、ユーザが図２２（ｂ）の画面表示の一部を選択した場合の画面表示であり、反転した部分がユーザによって選択された部分に相当する。図２２（ｄ）は、図２２（ｃ）の画面表示に対応した処理対象文書のソース表示である。図２２（ｃ）と同様に反転した部分がユーザによって選択された部分である。【００７７】
選択された部分は、処理対象文書の階層構造のうち、＜ｓｅｃｔｉｏｎ＞の層に対応する。そのため、タグ生成部３３０は、それより上位の層であって、かつルート要素のタグでない＜ｐａｒａｇｒａｐｈ＞も抽出する。最終的に、選択した部分の前後に挿入するタグとして、＜ｓｅｃｔｉｏｎ＞・・・＜／ｓｅｃｔｉｏｎ＞の組み合わせと、＜ｐａｒａｇｒａｐｈ＞＜ｓｅｃｔｉｏｎ＞・・・＜／ｓｅｃｔｉｏｎ＞＜／ｐａｒａｇｒａｐｈ＞の組み合わせを生成する。さらに、タグ付加部３３２は、選択された部分を複製によってふたつ生成し、それらに対して、２種類のタグの組み合わせのいずれかを付加する。【００７８】
本発明の実施例によれば、処理対象文書から選択された一部に対して、タグを生成して付加するので、タグを新たに記述しなくても、マークアップ言語で記述されたデータとして挿入できる。また、タグの記述を必要としないので、ユーザの利便性を向上できる。また、処理対処文書のタグの構成を考慮してタグを生成するので、処理対象文書の階層構造の整合性を保持できる。また、複数種類のタグを生成するだけなので、それらのうちのひとつを選択する動作を省略できる。また、選択した部分を処理対象文書のさまざまな部分に挿入できる。【００７９】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。【００８０】
前提技術では、ＸＭＬ文書を処理する例について説明したが、前提技術の文書処理装置１００は、他のマークアップ言語、例えば、ＳＧＭＬ、ＨＴＭＬなどで記述された文書も同様に処理可能である。【００８１】
実施例１では、コピー＆ペーストされるデータが文字列であって、変換部３１２は、当該文字列が挿入位置での処理対象ボキャブラリに反すれば、当該文字を挿入しないと決定した。しかしこれに限らず例えば、変換部３１２は、コピー＆ペーストされるデータが所定の図形であっても、ＳＶＧの形式のデータに変換して、すなわちＳＶＧに対応したタグセットを付加して、処理対象文書に挿入してもよい。また、所定対象文書の中の挿入位置において、挿入すべきデータに対応したボキャブラリが定義されていない場合に、変換部３１２は、挿入すべきデータに対応したボキャブラリを名前空間宣言して、ボキャブラリを定義してもよい。本変形例によれば、図形なども処理対象文書に挿入できる。つまり、処理対象文書の階層構造に反することなくデータを挿入できればよい。【００８２】
実施例２では、性質取得部３１４が処理対象文書の性質として、処理対象文書のタグの構成を取得しているが、これに限らず例えば、処理対象ボキャブラリや処理対象スキーマを取得してもよい。本変形例によれば、処理対象文書に規定されたさまざまな規則に対応できる。つまり、処理対象に規定された規則であればよい。
【産業上の利用可能性】
【００８３】
本発明は、マークアップ言語により記述された文書を処理する文書処理装置に利用することができる。
【図１】
0004627530.tif 000002
【図２】
0004627530.tif 000003
【図３】
0004627530.tif 000004
【図４（ａ）】
0004627530.tif 000005
【図４（ｂ）】
0004627530.tif 000006
【図５】
0004627530.tif 000007
【図６】
0004627530.tif 000008
【図７】
0004627530.tif 000009
【図８】
0004627530.tif 000010
【図９】
0004627530.tif 000011
【図１０】
0004627530.tif 000012
【図１１】
0004627530.tif 000013
【図１２】
0004627530.tif 000014
【図１３】
0004627530.tif 000015
【図１４】
0004627530.tif 000016
【図１５】
0004627530.tif 000017
【図１６】
0004627530.tif 000018
【図１７】
0004627530.tif 000019
【図１８】
0004627530.tif 000020
【図１９】
0004627530.tif 000021
【図２０】
0004627530.tif 000022
【図２１】
0004627530.tif 000023
【図２２】
0004627530.tif 000024