(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）であれば、有効なＸＭＬ文書として処理可能である。この場合、挿入された他のボキャブラリのタグは、ＶＣ定義ファイルによりマッピングされ、ＶＣユニット１８０により処理されてもよい。例えば、ＸＨＴＭＬ文書中に、「重要」、「最重要」などのタグを使用し、これらのタグで囲まれた部分を強調表示してもよいし、重要度の順にソートして表示してもよい。【００４４】
データがテキストベースで記述されることの他の利点として、例えば、複合文書中の、あるボキャブラリにより記述される部分において、同一文書内の他のボキャブラリで記述された部分のデータを参照することができる。例えば、計算式などにおいて他のボキャブラリで記述されたデータを参照することもできるし、ＨＴＭＬ文書内で検索を実行する時に、文書中のＳＶＧなどの図に埋め込まれた文字列も検索対象とすることもできる。通常、あるアプリケーションで作成した文書中に、他のアプリケーションで作成したデータや文書などを埋め込む場合、アプリケーションは、埋め込まれたデータのフォーマットを把握しておらず、データを正しく解釈することができないので、埋め込まれたデータはいわゆるブラックボックスとして扱われ、内容を参照することができない。しかしながら、このような複合文書を扱うアプリケーションが、埋め込まれたデータのフォーマットを把握し、内容を正しく解釈することができれば、埋め込まれたデータを、文書中の他の部分から参照することが可能となる。ＸＭＬ文書は、テキストベースで記述されるため、上述したような機能を実現するのに適している。以下、第２の実施の形態として、このような機能を実現する文書処理装置１００について説明する。【００４５】
（第２の実施の形態）
図１１は、本発明の第２の実施の形態に係る文書処理装置１００の全体構成を示す。本実施の形態の文書処理装置１００は、図１に示した第１の実施の形態の文書処理装置１００の構成に加えて、他のデータを参照した計算処理を実行するプラグインである計算ユニット１９０を更に備える。計算ユニット１９０は、計算式などを記述するためのボキャブラリである「Calculation」ボキャブラリで記述された文書を処理する。計算ユニット１９０は、処理対象となる文書に含まれる構成要素の要素値又は属性値が、他のデータを参照した計算式により記述されているときに、参照先のデータを取得して計算式を実行し、計算結果をその要素値又は属性値に代入する。参照先のデータは、参照元と同一のボキャブラリで記述されていてもよいし、異なるボキャブラリで記述されていてもよい。また、他の文書に記述されたデータを参照してもよい。他の文書のデータを参照する場合、文書処理装置１００は、参照先のデータが記述された文書を読み込んで、参照先のデータを取得すればよい。その他の構成及び動作は第１の実施の形態と同様であり、同様の構成には同じ符号を付している。【００４６】
計算ユニット１９０は、計算用のボキャブラリで記述された計算用の定義ファイルを取得する計算定義ファイル取得部１９２と、計算定義ファイルに記述された計算式を実行する実行部１９４とを含む。文書が読み込まれたときに、その文書に計算定義ファイルを外部参照すべき旨が記述されていた場合は、計算定義ファイル取得部１９２がその計算定義ファイルを取得し、実行部１９４が記述された計算式を実行して、計算結果を代入する。また、計算式が参照しているデータが更新されたとき、実行部１９４は、参照先データが格納されたノードが更新された旨のミューテーションイベントを受信し、計算式を再実行して参照元のデータに代入する。参照元のデータが更新されると、そのノードの表示を担当するプラグインが表示を更新し、計算結果が表示に反映される。【００４７】
図１２は、本実施の形態の文書処理装置１００により処理される文書の例を示す。このＸＭＬ文書は、出張旅費を申請するために用いられる。このＸＭＬ文書は、旅費精算用のボキャブラリである「ryohi」と、社員データ管理用のボキャブラリである「office」とにより記述されている。文書の冒頭部分には、この文書をＶＣ定義ファイル「ryohiseisan.vcd」を参照してＶＣ機能により表示すべきことと、計算定義ファイル「ryohiseisan.calc」を参照して計算を実行すべきことが宣言されている。【００４８】
トップノードである構成要素「ryohiseisan」は、「ryohi」ボキャブラリの構成要素であり、配下に、「office」ボキャブラリの構成要素である「person」及び「persondb」と、「ryohi」ボキャブラリの構成要素である「period」、「place」、「business」、「items」、及び「total-price」とを有している。構成要素「person」は、出張旅費の申請者のデータを格納し、配下に、申請者の所属する部門コードを格納する「department-code」、申請者の所属部署名を格納する「department- name」、申請者のランクを格納する「rank」、申請者の社員番号を格納する「number」、申請者の氏名を格納する「name」、及び申請者の電話番号を格納する「tel」を有する。構成要素「persondb」は社員のデータを格納しており、その配下に設けられた複数の構成要素「record」の属性値として、社員番号「number」、氏名「name」、電話番号「tel」がそれぞれ格納されている。構成要素「period」は出張期間を格納しており、属性値「start」に開始日が、属性値「end」に終了日が格納される。構成要素「place」は、出張の用務先を格納する。構成要素「business」は、出張の用件を格納する。構成要素「items」は出張旅費の詳細を格納しており、配下に設けられた複数の構成要素「item」の属性値として、日付「datetime」、出発地「route-start」、到着地「route-end」、種別「type」、金額「price」が格納される。構成要素「total-price」は、出張旅費の総額を格納する。出張旅費の総額は、後述するように、計算用の定義ファイルに記述された計算式にしたがって計算される。【００４９】
図１３は、図１２に示したＸＭＬ文書をＶＣ機能により表示するためのＶＣ定義ファイルの例を示す。ＶＣ定義ファイル「ryohisaisan.vcd」には、コマンドの定義と、表示用のテンプレートが記述されている。図１３の例では、コマンドとして、「経路の追加」と「経路の削除」が定義されており、それぞれ、ソースツリーにノード「ryohi:item」を挿入する操作と、ソースツリーからノード「ryohi:item」を削除する操作が対応付けられている。表示用のテンプレートは、実際には図１３に示したＶＣ定義ファイルの「変換テンプレート」の部分に記述されているが、ここでは図１４及び図１５に分割して示す。【００５０】
図１４は、図１３に示したＶＣ定義ファイル中に記述されている表示用のテンプレートの例を示す。図１２に示したＸＭＬ文書は、図１４に示したテンプレートにしたがってＨＴＭＬ文書に変換されて表示される。なお、テンプレート中、表示のスタイルを記述した部分は省略している。社員番号を格納した「office:person/office:number」には、編集可能であることを示す「text-of」が指定されており、社員の氏名を格納した「office:person/office:name」及び内線番号を格納した「office:person/office:tel」には、編集不可能であることを示す「value-of」が指定されている。後述するように、ユーザが社員番号を変更したときに、計算ユニット１９０が氏名及び内線番号を自動的に変更するので、氏名及び内線番号は編集不可能とされている。【００５１】
図１５は、図１３に示したＶＣ定義ファイル中に記述されている表示用のテンプレートのうち、出張旅費の経路の詳細を格納した構成要素「ryohi: item」を表示するためのテンプレートの例を示す。出張旅費の詳細を表示した表において、経路の詳細を表示する行のそれぞれに、経路を追加するための「追加」ボタンと、経路を削除するための「削除」ボタンが表示される。「追加」ボタンは、図１３に示したＶＣ定義ファイル中のコマンド「経路の追加」に、「削除」ボタンは、「経路の削除」に、それぞれ対応付けられており、ユーザがボタンをクリックすることにより、該当するコマンドが実行される。【００５２】
図１６は、図１２に示したＸＭＬ文書に適用される計算定義ファイルの例を示す。この計算定義ファイルは、計算式を記述するためのボキャブラリにより記述されている。最初の要素「calc:bind」には、ノード「ryohi:ryohiseisan/office:person/office: name」に、ノード「office:persondb」の配下の第「office:number」番目のノード「office:record」の属性値「name」が代入されることが記述されている。すなわち、申請者の社員番号が変更されたときに、社員名簿中に記述された、その社員番号の社員の氏名が、申請者の氏名に代入される。二番目の要素「calc:bind」には、同様に、申請者の社員番号が変更されたときに、その社員番号の社員の内線番号が、申請者の内線番号に代入されることが記述されている。三番目の要素「calc:bind」には、ノード「ryohi:ryohiseisan/ryohi: total-price」に、ノード「ryohi:item」の属性値「price」の合計値が代入されることが記述されている。すなわち、出張旅費の各詳細の金額の合計値が、出張旅費の総額に代入される。【００５３】
図１７は、図１２に示した文書を、図１３から図１５に示したＶＣ定義ファイルにしたがって表示した画面の例を示す。詳細を表示するテーブルの２行目には、図１２に示した文書の要素「ryohi:items」の配下の二番目の要素「ryohi:item」の内容が表示されている。文書中では、属性値「route-start」、「route-end」、「type」には値がないが、図１５に示したＶＣ定義ファイルに記述された定義にしたがって、値がないときの代替テキストが表示されている。【００５４】
図１８は、図１７に示した編集画面において、社員番号が変更されたときの画面の例を示す。ユーザが、申請者の社員番号の欄を「１８２１」から「１３１８」に書き換えると、まず、ソースツリーの対応するノードが「１３１８」に変更される。このとき、このノードが変更された旨のミューテーションイベントが計算ユニット１９０に対して発行される。計算ユニット１９０の実行部１９４は、ミューテーションイベントを受けて、計算定義ファイルに記述された規則にしたがって、ソースツリーを変更する。ここでは、申請者の氏名と内線番号が変更される。ソースツリーが変更されると、その旨のミューテーションイベントがＶＣユニット１８０に対して発行され、ＶＣユニット１８０がデスティネーションツリーを変更する。さらに、デスティネーションツリーが変更された旨のミューテーションイベントがＨＴＭＬユニット１５０に対して発行され、ＨＴＭＬユニット１５０により表示が更新される。【００５５】
図１９は、図１７に示した編集画面において、出張の詳細項目が追加され、さらに交通費の金額が変更されたときの画面の例を示す。ユーザが、追加ボタンをクリックすると、ＶＣ定義ファイルに記述されたコマンドの定義にしたがって、ソースツリーにノード「ryohi:item」が追加され、出張の詳細項目の行が追加される。さらに、ユーザが、交通費の金額を記入すると、計算定義ファイルに記述された定義にしたがって、計算ユニット１９０の実行部１９４が出張旅費の総額を更新する。そして、上述した手順と同様に、表示が更新される。【００５６】
図２０は、本実施の形態の文書処理装置１００により処理される文書の別の例を示す。このＸＭＬ文書は、ボキャブラリ「sample」と、計算用ボキャブラリ「calculation」とにより記述されている。文書の冒頭部分には、この文書をＶＣ定義ファイル「embed.vcd」を参照してＶＣ機能により表示すべきことと、計算ユニット１９０により計算を実行すべきことが宣言されている。【００５７】
トップノードである構成要素「sample」は、「sample」ボキャブラリの構成要素であり、子要素として、構成要素「value」と、構成要素「value-total-abs」と、構成要素「value-total-ref」とを含む。構成要素「value」は、計算式で参照される値を格納する。構成要素「value-total-abs」及び構成要素「value-total-ref」は、構成要素「value」の要素値の合計を格納する。構成要素「value-total-abs」及び「value-total-ref」は、それぞれ属性値「calc:expression」を含む。属性値「calc:expression」には、構成要素「value」の合計値を計算する計算式が記述されており、この計算結果が要素値として格納される。構成要素「value-total-abs」の属性値「calc:expression」には、参照先のノードが絶対パスで記述されており、構成要素「value-total-ref」の属性値「calc:expression」には、参照先のノードが相対パスで記述されているが、これらは両方とも同じノード「sample:value」を参照しているので、同じ合計値が算出される。【００５８】
属性「calc:expression」は、名前空間接頭辞を付した大域（グローバル）属性として指定されている。大域属性は、任意のボキャブラリの構成要素に、同じ意味を持つ属性として指定可能である。すなわち、任意のボキャブラリの構成要素に対して、ボキャブラリ「calculation」において計算式を表現する属性「expression」として機能する。これにより、属性値として記述された計算式の値が、計算ユニット１９０により計算され、その構成要素の要素値に代入される。【００５９】
図２１は、図２０に示したＸＭＬ文書をＶＣ機能により表示するためのＶＣ定義ファイルの例を示す。ＶＣ定義ファイル「embed.vcd」には、コマンドの定義と、表示用のテンプレートが記述されている。図２０の例では、コマンドとして、「ノードの削除」と「式属性削除スクリプト」が定義されており、それぞれ、ソースツリーからノード「sample:sample/sample:value-total-abs」を削除する操作と、ノード「sample:sample/sample:value-total-abs」から、計算式を記述した属性「calc:expression」を削除する操作が対応付けられている。【００６０】
図２２は、図２０に示した文書を、図２１に示したＶＣ定義ファイルにしたがって表示した画面の例を示す。計算用プラグインにより計算された、一番目の構成要素「sample:value」の要素値「１００」、二番目の構成要素「sample:value」の要素値「２００」、三番目の構成要素「sample:value」の要素値「３００」の合計値が、計算ユニット１９０の実行部１９４により計算され、構成要素「sample:value- total-abs」及び「value-total-ref」に代入されて表示されている。【００６１】
図２３は、図２２に示した編集画面において、サンプル値１が変更されたときの画面の例を示す。ユーザが、サンプル値１の欄を「１００」から「５００」に書き換えると、まず、ソースツリーの対応するノード「sample:sample/sample:value」の要素値が「５００」に変更される。このとき、このノードが変更された旨のミューテーションイベントが計算ユニット１９０に対して発行される。計算ユニット１９０の実行部１９４は、ミューテーションイベントを受けて、構成要素「sample:sample/sample:value-total-abs」及び構成要素「sample: sample/sample:value-total-ref」の属性値に記述された計算式にしたがって、ソースツリーを変更する。ここでは、サンプル値の合計値が変更される。ソースツリーが変更されると、その旨のミューテーションイベントがＶＣユニット１８０に対して発行され、ＶＣユニット１８０がデスティネーションツリーを変更する。さらに、デスティネーションツリーが変更された旨のミューテーションイベントがＨＴＭＬユニット１５０に対して発行され、ＨＴＭＬユニット１５０により表示が更新される。【００６２】
このように、本実施の形態の文書処理装置１００によれば、計算定義ファイルに記述された計算式や、ＸＭＬ文書の構成要素に大域属性として記述された計算式において、他の任意のデータを参照することができる。これにより、文書内のデータを有効に活用することが可能となる。計算式は、任意の形式であってよく、例えば、複数の構成要素の間でデータを同期させるために、同一のデータを代入させる計算式であってもよいし、算術式、文字列の操作などであってもよい。【００６３】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。【００６４】
実施の形態では、ＸＭＬ文書を処理する例について説明したが、本実施の形態の文書処理装置１００は、他のマークアップ言語、例えば、ＳＧＭＬ、ＨＴＭＬなどで記述された文書も同様に処理可能である。
【産業上の利用可能性】
【００６５】
本発明は、マークアップ言語により記述された文書を処理する文書処理装置に利用可能である。
【図１】
2005098660.tif 000002
【図２】
2005098660.tif 000003
【図３】
2005098660.tif 000004
【図４】
2005098660.tif 000005
【図５】
2005098660.tif 000006
【図６】
2005098660.tif 000007
【図７】
2005098660.tif 000008
【図８】
2005098660.tif 000009
【図９】
2005098660.tif 000010
【図１０】
2005098660.tif 000011
【図１１】
2005098660.tif 000012
【図１２】
2005098660.tif 000013
【図１３】
2005098660.tif 000014
【図１４】
2005098660.tif 000015
【図１５】
2005098660.tif 000016
【図１６】
2005098660.tif 000017
【図１７】
2005098660.tif 000018
【図１８】
2005098660.tif 000019
【図１９】
2005098660.tif 000020
【図２０】
2005098660.tif 000021
【図２１】
2005098660.tif 000022
【図２２】
2005098660.tif 000023
【図２３】
2005098660.tif 000024
【国際調査報告】
2005098660.tif 000025
2005098660.tif 000026