名前が「A」である生徒の国語の成績は「90」、数学の成績は「50」、理科の成績は「75」、社会の成績は「60」である。以下、この文書で使用されているボキャブラリ(タグセット)を、「成績管理ボキャブラリ」と呼ぶ。[0028]本前提技術の文書処理装置20は、成績管理ボキャブラリの表示/編集に対応したプラグインを有しないので、この文書をソース表示、ツリー表示以外の方法で表示するためには、前述したVC機能が用いられる。成績管理ボキャブラリを、プラグインが用意された別のボキャブラリ、例えば、HTMLやSVGなどにマッピングするための定義ファイルを用意する必要がある。ユーザ自身が定義ファイルを作成するためのユーザインターフェースについては後述することにして、ここでは、既に定義ファイルが用意されているとして説明を進める。[0029]図3は、図2に示したXML文書をHTMLで記述された表にマッピングする例を示す。図3の例では、成績管理ボキャブラリの「生徒」ノードを、HTMLにおける表(「TABLE」ノード)の行(「TR」ノード)に対応づけ、各行の第1列には属性値「名前」を、第2列には「国語」ノードの要素値を、第3列には「数学」ノードの要素値を、第4列には「理科」ノードの要素値を、第5列には「社会」ノードの要素値を、それぞれ対応付ける。これにより、図2に示したXML文書を、HTMLの表形式で表示することができる。これらの属性値及び要素値は、編集可能であることが指定されており、ユーザがHTMLによる表示画面上で、HTMLユニット50の編集機能により、これらの値を編集することができる。成績の加重平均を算出する演算式が指定されており、生徒の成績の平均点が表示される。このように、定義ファイルに演算式を指定可能とすることにより、より柔軟な表示が可能となり、編集時のユーザの利便性を向上させることができる。第6列は、編集不可であることが指定されており、平均点のみを個別に編集することができないようにしている。このように、マッピング定義において、編集の可否を指定可能とすることにより、ユーザの誤操作を防ぐことができる。[0030]図4(a)及び図4(b)は、図2に示したXML文書を図3に示した表にマッピングするための定義ファイルの例を示す。この定義ファイルは、定義ファイル用に定義されたスクリプト言語により記述される。定義ファイルには、コマンドの定義と、表示のテンプレートが記述されている。図4(a)(b)の例では、コマンドとして、「生徒の追加」と「生徒の削除」が定義されており、それぞれ、ソースツリーにノード「生徒」を挿入する操作と、ソースツリーからノード「生徒」を削除する操作が対応付けられている。見出しが表示され、第2行以降に、ノード「生徒」の内容が表示されることが記述されている。ノード「生徒」の内容を表示するテンプレート中、「text-of」と記述された項は「編集可能」であることを意味し、「value-of」と記述された項は「編集不可能」であることを意味する。4」という計算式が記述されており、生徒の成績の平均が表示されることを意味する。[0031]図5は、図2に示した成績管理ボキャブラリで記述されたXML文書を、図3に示した対応によりHTMLにマッピングして表示した画面の例を示す。表90の各行には、左から、各生徒の名前、国語の成績、数学の成績、理科の成績、社会の成績、及び平均点が表示されている。ユーザは、この画面上で、XML文書を編集することができる。第2行第3列の値を「70」に変更すると、このノードに対応するソースツリーの要素値、すなわち、生徒「B」の数学の成績が「70」に変更される。このとき、VCユニット80は、デスティネーションツリーをソースツリーに追従させるべく、デスティネーションツリーの該当箇所を変更し、HTMLユニット50が、変更されたデスティネーションツリーに基づいて表示を更新する。したがって、画面上の表においても、生徒「B」の数学の成績が「70」に変更され、更に、平均点が「55」に変更される。[0032]図5に示した画面には、図4(a)(b)に示した定義ファイルに定義されたように、「生徒の追加」及び「生徒の削除」のコマンドがメニューに表示される。ユーザがこれらのコマンドを選択すると、ソースツリーにおいて、ノード「生徒」が追加又は削除される。このように、本前提技術の文書処理装置20では、階層構造の末端の構成要素の要素値を編集するのみではなく、階層構造を編集することも可能である。このようなツリー構造の編集機能は、コマンドの形でユーザに提供されてもよい。表の行を追加又は削除するコマンドが、ノード「生徒」を追加又は削除する操作に対応づけられてもよい。他のボキャブラリを埋め込むコマンドがユーザに提供されてもよい。この表を入力用テンプレートとして、穴埋め形式で新たな生徒の成績データを追加することもできる。以上のように、VC機能により、HTMLユニット50の表示/編集機能を利用しつつ、成績管理ボキャブラリで記述された文書を編集することが可能となる。[0033]図6は、ユーザが定義ファイルを生成するために、定義ファイル生成部86がユーザに提示するグラフィカルユーザインタフェースの例を示す。画面左側の領域91には、マッピング元のXML文書がツリー表示されている。画面右側の領域92には、マッピング先のXML文書の画面レイアウトが示されている。この画面レイアウトは、HTMLユニット50により編集可能となっており、ユーザは、画面右側の領域92において、文書を表示するための画面レイアウトを作成する。マウスなどのポインティングデバイスにより、画面左側の領域91に表示されたマッピング元のXML文書のノードを、画面右側の領域92に表示されたHTMLによる画面レイアウト中へドラッグ&ドロップ操作を行うことにより、マッピング元のノードと、マッピング先のノードとのコネクションが指定される。要素「生徒」の子要素である「数学」を、HTML画面の表90の第1行第3列にドロップすると、「数学」ノードと、3列目の「TD」ノードの間にコネクションが張られる。各ノードには、編集の可否が指定できるようになっている。表示画面中には、演算式を埋め込むこともできる。画面の編集が終わると、定義ファイル生成部86は、画面レイアウトとノード間のコネクションを記述した定義ファイルを生成する。[0034]XHTML、MathML、SVGなどの主要なボキャブラリに対応したビューワやエディタは既に開発されているが、図2に示した文書のようなオリジナルなボキャブラリで記述された文書に対応したビューワやエディタを開発するのは現実的でない。上記のように、他のボキャブラリにマッピングするための定義ファイルを作成すれば、ビューワやエディタを開発しなくても、VC機能を利用して、オリジナルなボキャブラリで記述された文書を表示・編集することができる。[0035]図7は、定義ファイル生成部86により生成された画面レイアウトの他の例を示す。図7の例では、成績管理ボキャブラリで記述されたXML文書を表示するための画面に、表90と、円グラフ93が作成されている。この円グラフ93は、SVGにより記述される。後述するように、本前提技術の文書処理装置20は、一つのXML文書内に複数のボキャブラリを含む複合文書を処理することができるので、この例のように、HTMLで記述された表90と、SVGで記述された円グラフ93とを、一つの画面上に表示することができる。[0036]図8は、文書処理装置20によるXML文書の編集画面の一例を示す。図8の例では、一つの画面が複数に分割されており、それぞれの領域において、処理対象となるXML文書を異なる複数の表示形式により表示している。領域94には、文書のソースが表示されており、領域95には、文書のツリー構造が表示されており、領域96には、図5に示したHTMLにより記述された表が表示されている。これらのいずれの画面上においても、文書の編集が可能であり、いずれかの画面上でユーザが編集を行うと、ソースツリーが変更され、それぞれの画面の表示を担当するプラグインが、ソースツリーの変更を反映すべく画面を更新する。具体的には、ソースツリーの変更を通知するミューテーションイベントのリスナーとして、それぞれの編集画面の表示を担当するプラグインの表示部を登録しておき、いずれかのプラグイン又はVCユニット80によりソースツリーが変更されたときに、編集画面を表示中の全ての表示部が、発行されたミューテーションイベントを受け取って画面を更新する。このとき、プラグインがVC機能により表示を行っている場合は、VCユニット80がソースツリーの変更に追従してデスティネーションツリーを変更した後、変更されたデスティネーションツリーを参照してプラグインの表示部が画面を更新する。[0037]例えば、ソース表示及びツリー表示を、専用のプラグインにより実現している場合は、ソース表示用プラグインとツリー表示用プラグインは、デスティネーションツリーを用いず、直接ソースツリーを参照して表示を行う。この場合、いずれかの画面において編集が行われると、ソース表示用プラグインとツリー表示用プラグインは、変更されたソースツリーを参照して画面を更新し、領域96の画面を担当しているHTMLユニット50は、ソースツリーの変更に追従して変更されたデスティネーションツリーを参照して画面を更新する。[0038]ソース表示及びツリー表示は、VC機能を利用して実現することもできる。ソース、ツリー構造をHTMLによりレイアウトし、そのHTMLにXML文書をマッピングして、HTMLユニット50により表示してもよい。この場合、ソース形式、ツリー形式、表形式の3つのデスティネーションツリーが生成されることになる。いずれかの画面において編集が行われると、VCユニット80は、ソースツリーを変更した後、ソース形式、ツリー形式、表形式の3つのデスティネーションツリーをそれぞれ変更し、HTMLユニット50は、それらのデスティネーションツリーを参照して、3つの画面を更新する。[0039]このように、一つの画面上に複数の表示形式で文書を表示することにより、ユーザの利便性を向上させることができる。ユーザは、ソース表示又はツリー表示により文書の階層構造を把握しつつ、表90などを用いて視覚的に分かりやすい形式で文書を表示し、編集することができる。上記の例では、一つの画面を分割して複数の表示形式による画面を同時に表示したが、一つの画面に一つの表示形式による画面を表示し、表示形式をユーザの指示により切り替え可能としてもよい。この場合、主制御ユニット22が、ユーザから表示形式の切り替え要求を受け付け、各プラグインに指示して表示を切り替える。[0040]図9は、文書処理装置20により編集されるXML文書の他の例を示す。図9に示したXML文書では、SVG文書の「foreignObject」タグの中にXHTML文書が埋め込まれており、さらに、XHTML文書の中にMathMLで記述された数式が入っている。このような場合、編集ユニット24が、名前空間を参照して、適切な表示系に描画作業を振り分ける。図9の例では、編集ユニット24は、まず、SVGユニット60に四角形を描画させ、つづいて、HTMLユニット50にXHTML文書を描画させる。図示しないMathMLユニットに、数式を描画させる。して、複数のボキャブラリを包含する複合文書が適切に表示される。表示結果を図10に示す。[0041]文書編集中、カーソル(キャリッジ)の位置に応じて、表示されるメニューを切り替えてもよい。カーソルが、SVG文書が表示された領域内に存在するときは、SVGユニット60が提供するメニュー、又はSVG文書をマッピングするための定義ファイルに定義されたコマンドを表示し、カーソルが、XHTML文書が表示された領域内に存在するときは、HTMLユニット50が提供するメニュー、又はXHTML文書をマッピングするための定義ファイルに定義されたコマンドを表示する。これにより、編集位置に応じて適切なユーザインターフェースを提供することができる。[0042]複合文書において、あるボキャブラリに対応する適切なプラグイン又はマッピング定義ファイルがなかった場合は、そのボキャブラリにより記述された部分は、ソース表示又はツリー表示されてもよい。従来、ある文書に他の文書を埋め込んだ複合文書を開くとき、埋め込まれた文書を表示するアプリケーションがインストールされていないと、その内容を表示することができなかったが、本前提技術では、表示用のアプリケーションが存在しなくても、テキストデータにより構成されたXML文書をソース表示又はツリー表示することにより内容を把握することができる。これは、テキストベースであるXMLなどの文書ならではの特徴といえる。[0043]データがテキストベースで記述されることの他の利点として、例えば、複合文書中の、あるボキャブラリにより記述される部分において、同一文書内の他のボキャブラリで記述された部分のデータを参照してもよい。文書内で検索を実行する時に、SVGなどの図に埋め込まれた文字列も検索対象とすることができる。[0044]あるボキャブラリにより記述された文書内に、他のボキャブラリのタグを用いてもよい。このXML文書は、妥当(valid)ではないが、整形式(well-formed)であれば、有効なXML文書として処理可能である。この場合、挿入された他のボキャブラリのタグは、定義ファイルによりマッピングされてもよい。タグを使用し、これらのタグで囲まれた部分を強調表示してもよいし、重要度の順にソートして表示してもよい。[0045]図10に示した編集画面において、ユーザにより文書が編集されると、編集された部分を担当するプラグイン又はVCユニット80がソースツリーを変更する。ソースツリーには、ノードごとにミューテーションイベントのリスナーを登録できるようになっており、通常は、各ノードが属するボキャブラリに対応したプラグインの表示部又はVCユニット80がリスナーとして登録される。DOM提供部32は、ソースツリーが変更されると、変更されたノードから上位の階層へたどって、登録されたリスナーがあれば、そのリスナーへミューテーションイベントを発行する。図9に示した文書において、<html>ノードの下位のノードが変更された場合、<html>ノードにリスナーとして登録されたHTMLユニット50にミューテーションイベントが通知されるとともに、その上位の<svg>ノードにリスナーとして登録されたSVGユニット60にもミューテーションイベントが通知される。このとき、HTMLユニット50は、変更されたソースツリーを参照して表示を更新する。SVGユニット60は、自身のボキャブラリに属するノードが変更されていないので、ミューテーションイベントを無視してもよい。[0046]編集の内容によっては、HTMLユニット50による表示の更新に伴って、全体のレイアウトが変わる可能性がある。この場合は、画面のレイアウトを管理する構成、例えば最上位のノードの表示を担当するプラグインにより、プラグインごとの表示領域のレイアウトが更新される。HTMLユニット50による表示領域が以前より大きくなった場合、HTMLユニット50は、まず自身の担当する部分を描画して、表示領域の大きさを決定する。画面のレイアウトを管理する構成に、変更後の表示領域の大きさを通知し、レイアウトの更新を依頼する。画面のレイアウトを管理する構成は、通知を受けて、プラグインごとの表示領域を再レイアウトする。して、編集された部分の表示が適切に更新されるとともに、画面全体のレイアウトが更新される。以上の技術を前提として、以下、本発明の実施の形態を説明する。[0047](第1の実施形態)文書処理装置では、参照先のデータと参照元のデータとの整合性を確保する参照機能が提供されることがある。構造化文書の構成要素を参照する場合、その参照先のロケーションパスと参照元のロケーションパスを対応させて管理することが一般的である。XML文書ではXPathを使って文書内の構成要素のロケーションパスを指定する。この場合、参照先が変更されると、例えば、参照先のロケーションパスを指定して、参照先の変更後の値を取得し、さらに、参照元のロケーションパスを指定して参照元にアクセスし、変更後の値に書き換えることになる。この方法では文書のツリートラバースが発生するため、参照機能を多数利用した場合に、参照先の変更に伴う参照元の追随処理に時間がかかってしまう。構造化文書が複雑な構造である場合、この傾向は顕著となる。[0048]このような課題を解決するため、本発明の実施の形態に係る文書処理装置は、参照先ノードのインスタンスの参照オブジェクト(以下、「参照先ノードポインタ」と呼ぶ。)をメモリ上に保持し、参照先ノードのインスタンスから参照先ノードの内容の少なくとも一部(以下、「参照先ノードの値」と呼ぶ。)を直接取得可能にする。これにより、ツリートラバースを発生させることなく高速に、参照先ノードの変更に伴う参照元ノードの追随を可能にする。以下、この仕組みに係る参照機能を「参照枠機能」と呼び、参照元ノードとして、構造化文書に挿入されるデータを「参照枠」と呼ぶことにする。[0049]本明細書における「参照先ノード」および「参照枠ノード」は、特に断らない限り、その子孫ノードを含む。図11のようなXHTML文書の場合、参照先ノードとして、<h2>から</h2>を指定することができる。この場合、参照先ノードの値として「徳島市川内町」が選択されることになる。参照枠ノードは、例えば、<ref-frame>から</ref-frame>となる。実際には参照枠ノードの値として「徳島市川内町」が表示されることになる。本明細書における「参照先ノードの値」は、特に断らない限り、参照先ノードの内容の少なくとも一部、の意味とする。含む概念であることを意味する。[0050]次に、図12・図13・図14を用いて、参照枠機能のユーザインタフェイスを説明する。図12は、アプリケーション3000にて文書作成中のユーザが、参照先文字列3002を参照する参照枠をキャレット位置3006に挿入する前の状態を示している。参照枠3004が二箇所に挿入されている。図13は、図12のキャレット位置3006に、参照枠3004が出力された状態を示している。変更された状態を示している。参照先文字列3002が変更されると、参照枠機能により、参照枠3004の表示内容もリアルタイムに変更される。記述において、その記述の労力を省力化するとともに、記述内容の不整合を防止することができるだけでなく、参照枠ノードの参照先ノードへの追随が高速になり、利便性の高い参照機能を提供することができる。[0052]図15は、本発明の実施の形態に係る文書処理装置20の機能ブロック図である。本実施の形態の文書処理装置20は、前提技術として図1に示した文書処理装置20の構成に加えて、他のデータへの参照枠機能を提供するプラグインである参照枠ユニット70を更に備える。参照枠ユニット70は、参照先管理部72と、参照枠管理部74と、参照枠表示部76と、を有する。これらの構成は、ハードウエアコンポーネントでいえば、任意のコンピュータのCPU、メモリ、メモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。[0053]参照先管理部72は、参照先ノードとして登録された要素を管理する。ここでの要素には、参照先ノードポインタが含まれる。ユーザが参照先ノードの登録をすると、参照先管理部72は、参照先ノードポインタを取得する。図16は、参照先管理部72における管理テーブルの例である。同図では、参照先ノードの識別情報(以下、「参照先ノードID」と呼ぶ。)と参照先ノードポインタを保持している。参照先ノードIDの列には、同図では数字で示しているが、参照先ノードとして登録された構造化文書の構成要素を一意に特定できる情報が格納される。参照先ノードポインタの列は、参照先ノードのインスタンスの参照オブジェクトが格納される。Java(登録商標)言語であれば、java.lang.Stringクラスのオブジェクトや、org.w3c.dom.Nodeクラスのオブジェクトが格納される。参照オブジェクトの中身はメモリのアドレスであり、例えば、「0x1234ABCDE」といった値が格納されている。構造化文書の構成要素毎にこのアドレスが一意になることが保証されている場合、例えばJava(登録商標)言語やC++言語で実装されている場合、には参照先ノードIDは必須ではない。対応付けを保持する管理テーブルは、C++言語におけるコンテナクラスや、Java(登録商標)言語におけるコレクションフレームワークを利用してメモリ上に保持されてもよい。後述する参照枠管理部74においても同様である。[0054]参照枠管理部74は、構造化文書に挿入された参照枠ノードが参照する参照先ノードの情報を保持する。74は、まず、参照枠ノードのフラグメントを作成する。前述した図11のXHTML文書における<ref-frame>から</ref-frame>を作成する。それから、他の適切なコンポーネントにそのフラグメントを文書に挿入させる。文書がXHTML文書であった場合には、HTMLユニットに作成したフラグメントを挿入させる。参照枠管理部74が、作成したフラグメントを文書に挿入してもよい。このフラグメントは、例えば、参照枠のボキャブラリを示す名前空間文字列(図11の例ではref-frameノードのxmlns属性)と、参照先ノードID(図11の例ではtracer-IDノードのvalue属性)を含む。参照枠管理部74は、参照枠が参照する参照先ノードが何であるかによって、この参照先ノードIDを決定する。[0055]参照枠管理部74は、さらに、メモリ上でリスナID、参照先ノードID、参照先ノードポインタとの対応関係を管理する。リスナIDは、参照枠管理部74から参照先ノードの変更通知を受けたいコンポーネント、例えば、後述する参照枠表示部76、が登録したリスナオブジェクトの識別情報である。このリスナIDは、リスナオブジェクトのメモリ上のアドレスのポインタ、つまりリスナオブジェクトそのものであってもよい。図17は、参照枠管理部74における管理テーブルの例である。この管理テーブルにデータが設定される流れについては後述する。参照枠表示部76は、参照枠のボキャブラリを解釈し、参照枠管理部74から参照先ノードの値を取得して表示装置に表示させる。[0056]次に、図18・図19を使用して、ここまで説明した各機能ブロックが、参照枠機能を実現するためにどのように相互作用をしているかを示す。[0057]図18は、参照枠の設定に係るシーケンス図である。同図では、ユーザが参照枠の挿入を要求し、参照枠が表示されるまでの、各機能ブロックの相互作用を示している。この例での文書はXHTML文書としている。最初にユーザは、文書の表示を担当しているHTMLユニット50に参照枠の挿入を要求する(ステップS2)。HTMLユニット50は、参照枠管理部74に参照先の選択ダイヤログを要求する(ステップS4)。参照枠管理部74は参照先管理部72に登録されている参照先一覧を要求する(ステップS6)。参照先管理部72は、参照枠管理部74に参照先一覧を提供する(ステップS8)。参照先一覧の提供にあわせて、それぞれの参照先ノードIDと参照先ノードポインタが提供される。参照枠管理部74は、参照先の選択ダイヤログを表示する(ステップS10)。[0058]次に、ユーザは表示された選択ダイヤログから参照先を選択する(ステップS12)。参照枠管理部74は、前述した参照枠のフラグメントを作成し(ステップS14)、そのフラグメントをHTMLユニット50に返す(ステップS16)。HTMLユニット50は、返された参照枠のフラグメントをソースツリーに挿入する(ステップS18)。上記ステップS18の結果、ソースツリーが変更されて、DOMユニット30は、前提技術で説明したミューテーションイベントを参照枠管理部74に通知する(ステップS20)とともに、HTMLユニット50にXHTMLボキャブラリを解釈して、画面表示をするように要求する(ステップS24)。[0059]DOMユニット30よりミューテーションイベントを通知された参照枠管理部74は、挿入された参照枠の監視を開始し、参照先管理部72からの変更通知を待ち受ける(ステップS22)。ここで、監視を開始するに先立って、参照枠管理部74は、参照先管理部72に変更通知用のリスナオブジェクトを登録する。それとともに、参照枠管理部74は、先のステップS8で参照先管理部72より提供された参照先ノードに係る参照先ノードIDと参照先ノードポインタを管理テーブルにて保持する。[0060]一方で、DOMユニット30からXHTML文書の画面表示を要求されたHTMLユニット50は、前提技術で説明したように表示処理を行う。その中で、参照枠ボキャブラリを検出すると、参照枠表示部76に参照枠ボキャブラリの表示を要求する(ステップS26)。参照枠表示部76は、参照先変更の通知を受けるため、参照枠管理部74に対しリスナオブジェクトを登録する(ステップS28)。このときに、参照枠管理部74が保持する管理テーブルにリスナIDまたはリスナオブジェクトそのものが格納される。参照枠表示部76は、リスナオブジェクトの登録後、参照枠のフラグメントに含まれる参照先ノードIDをキーとして表示文字列を要求する(ステップS30)。[0061]参照枠管理部74は、参照先ノードIDと対応付けられた参照先ノードポインタを取得し、その参照先ノードポインタが備えるメソッドを操作して表示文字列を取得する。Interface)を利用して、そのノードオブジェクトから表示文字列を取得する。参照枠管理部74は、参照枠表示部76に取得した文字列を提供し(ステップS32)、参照枠表示部76は、構造化文書の参照枠ボキャブラリ部分にその文字列を表示させる(ステップS34)。[0062]図19は、参照先の値の変更に伴う参照元の値の変更に係るシーケンス図である。同図は、ユーザが参照先を編集し、その編集内容が参照枠に反映されるまでの、各機能ブロックの相互作用を示している。ユーザが参照先ノードまたはその子孫ノードの編集をする(ステップS42)。すると、表示を担当しているHTMLユニット50はその編集内容でソースツリーを変更する(ステップS44)。DOMユニット30は、参照先として登録されているノードおよびその子孫ノードのミューテーションイベントを参照先管理部72に通知する(ステップS46)。参照先管理部72は、参照先ノードIDまたは参照先ノードポインタをキーとして、登録されているリスナオブジェクトを介して、参照枠管理部74に参照先ノードが変更された旨を通知する(ステップS48)。参照枠管理部74は、キーとして送られてきた参照先ノードIDまたは参照先ノードポインタと、保持する管理テーブルから、変更された参照先ノードに対応する参照枠ノードが存在するかを判定する(ステップS50)。74は、参照先ノードIDまたは参照先ノードポインタに対応するリスナIDを取得する。参照枠管理部74に登録されているリスナオブジェクトであって、そのリスナIDに対応するリスナオブジェクトを介して、参照枠表示部76に参照先ノードの変更を通知する(ステップS52)。参照枠表示部76は、DOMユニット30に再表示を要求(ステップS54)する。図15のステップS24以降と同様のシーケンスで参照枠が表示される。74は、参照先ノードポインタをもとに参照先ノードのインスタンスから変更後の文字列を取得するため、最終的に参照枠に表示される文字列も変更後の文字列となる。[0064]本発明の第一の特徴は、参照枠ユニット70が、メモリ上に参照先ノードポインタを保持し、参照先ノードの変更の際には、その参照先ノードポインタをもとに参照先ノードのインスタンスから参照先ノードの値を直接取得することで変更後データを参照枠に表示していることである。上記のシーケンス説明から明らかなように、XPathを利用した際に生ずるツリートラバースを発生させることもなく、さらに、参照先ノードの変更に伴って参照枠ノードのフラグメントの変更処理も発生させない。結果として、参照枠ノードを参照先ノードに高速に追随させることを可能にしている。ツリートラバースを発生させないことから、XPathを利用した場合と比べて、参照枠機能の性能がXML文書の複雑さには非依存であることも長所である。この特徴により、ユーザが構造化文書の編集等で参照機能を用いる場合の利便性を向上できる。[0065]本発明の第二の特徴は、ボキャブラリ境界を越えて、特定の構成要素を参照表示できることである。シーケンス図において、参照先管理部72・参照枠管理部74・参照枠表示部76のいずれも特定のボキャブラリに依存した処理はない。そのため例えば、スプレッドシートボキャブラリにある総額セルを参照先として登録しておき、HTML側で参照枠を挿入することで、そのセルを参照可能になる。そのセルが変更された場合には、自動的にHTML側の総額セルの表示も変更される。この特徴により、ユーザは文書内のデータを有効に利用できることになる。[0066]さらに本発明では、参照枠ユニット70内の各サブモジュール間の独立性が高い構成となっている。実施の形態に係る参照先管理部72と参照枠管理部74との接点はリスナオブジェクトを介した変更通知に過ぎない。したがって、参照先管理部72と参照枠管理部74は、他方を意識することなく機能追加・バグ修正等メンテナンスができるとともに、参照先管理部72は参照枠管理部74が存在しなくても動作できる。これにより、他のプラグイン等に対しても参照先一覧を提供できる。同様に、実施の形態に係る参照枠管理部74と参照枠表示部76との接点もリスナオブジェクトを介した変更通知に過ぎない。したがって、参照枠管理部74と参照枠表示部76は、他方を意識することなく機能追加・バグ修正等メンテナンスができるとともに、参照枠管理部74は参照枠表示部76が存在しなくても動作できる。これにより、参照枠管理部74は、参照枠表示部76に限定されることなく、他のプラグイン等に対しても参照枠データを提供できる。[0067](第2の実施形態)本実施形態と第1の実施形態とは、参照先ノードの値の取得する主体が異なる。前述の図19のシーケンス図のステップS30の部分で、参照枠表示部76は、参照枠管理部に参照先ノードIDをキーに参照先ノードポインタを要求する。参照枠管理部74は、参照先ノードIDに対応する参照先ノードポインタを参照枠表示部76に返す。ここで、前述の参照枠管理部74と同様に、参照枠表示部76は、参照先ノードポインタをもとに参照先ノードのインスタンスから参照先ノードの値を直接取得して、その値を参照枠ボキャブラリ部分に表示させる。[0068](第3の実施形態)本実施形態と第1の実施形態とは、また、本実施形態と第2の実施形態とは、参照先ノードの値を表示する方法が異なる。前述の図19のシーケンス図のステップS34の部分で、参照枠表示部76は、参照先ノードの値を他のボキャブラリユニットに表示させる。参照先ノードの値がSVGによって記述された文字列であった場合には、SVGユニットに参照先ノードの値を表示させ、MathMLによって記述された文字列であった場合には、MathMLユニットに参照先ノードの値を表示させる。76が、参照先ノードまたはその子孫のノードが有するテキストノードのテキスト値を表示することを想定していたが、参照先ノードの値をそのボキャブラリに応じて適切に表示するためには、参照枠表示部76は、参照先ノードの値がとりうる全てのボキャブラリを理解できる必要がある。参照枠表示部76が理解できないボキャブラリにより参照先ノードの値が記述されていた場合には、文書のソース又はツリー構造を表示するしかない。本実施形態によれば、参照先ノードの値のボキャブラリに応じて適切なボキャブラリユニットを選択することで、参照枠表示部76が理解するボキャブラリの幅を広げる必要なく、参照先ノードの値を適切に表示しやすくなる。適切なボキャブラリユニットの選択は、そのボキャブラリ領域の名前空間の記述で判断することで可能である。参照枠表示部76は、参照先ノードが、自身が処理できないボキャブラリで記述されていたときに、参照先ノードの処理を他の処理系に委譲する旨を主制御ユニット22へ通知してもよい。この場合、主制御ユニット22は、参照先ノードの名前空間や要素名などに基づいて適切な処理系を選択し、その処理系に処理を委譲する。[0070](第4の実施形態)第1から第3の実施形態では、参照枠管理部74が作成する参照枠ノードのフラグメントには、参照先ノードIDのみが格納されていた。本実施形態では、参照枠ノードのフラグメントに、参照先ノードのテキスト値または参照先ノード自身など、参照枠の表示に必要な情報を格納する。これにより、参照枠ノードの周囲のノードが編集されるなどして、参照先ノードが編集されていないにもかかわらず参照先ノードを再描画する必要が生じたときに、参照先ノードを参照することなく参照枠ノードを再描画することができるので、高速に表示を更新することができる。第1から第3の実施形態では、参照枠ノードには参照先ノードのIDしか格納されていないので、参照先ノードが編集されても参照枠ノードを編集する必要はなかった。本実施形態では、参照枠管理部74は、参照先ノードが編集されたときに、参照先ノードを参照して参照枠ノードを編集し、追随させる。[0071]いずれの実施形態においても、参照先管理部72が保持する管理テーブル、参照枠管理部74が保持する管理テーブル、ともに揮発性のメモリ上に保持される。この場合、本発明の実施の形態に係る文書処理装置20を終了すれば、メモリ上の管理テーブルは失われる。管理テーブルは不揮発のストレージに保持されてもよく、参照先ノードポインタも参照型のオブジェクトであるので、シリアライズ化しストレージに保持できる。オブジェクト指向DB等であれば、オブジェクトのままストレージに保持できる。メモリ展開されていた構造化文書は、文書処理装置20の再起動時には、別のメモリ領域に展開されるため、前回の参照先ノードポインタを使うことはできない。言い換えれば、管理テーブルを揮発性のメモリ上に保持していたとしても、または、不揮発性のストレージに保持していたとしても、文書処理装置20を一旦終了し、再度起動した時に参照枠は無効となってしまう。文書処理装置20の終了時に、参照枠ノードの値を参照先ノードの値で置き換えるのは一つの解決手段であるが、一旦構造化文書の中に設定された参照枠は、次回起動時にもそのまま参照枠として使えた方がユーザの利便性は高い。[0072]この課題に対し、本発明者は以下の解決手段に想到した。図11の構造化文書で「/html/body/h1」が参照先ノードとして設定され、同文書内の「/html/body/p/ref-frame」が参照枠ノードであったとする。ここで、文書処理装置20の終了時には、図15では図示しない永続化処理部が、参照枠ノードの中に参照先ノードのロケーションパス、ここでは「/html/body/h1」、を設定しておく。簡易的に、「/*[1]/*[2]/*[1]/」などと表現してもよい。再度構造化文書を展開した際に、ノード「ref-frame」は、HTMLユニット50では処理できないため、処理が参照枠ユニット70に委譲される。このとき、永続化処理部は、参照先ノードとして「/html/body/h1」が登録されていたことを認識する。次に永続化処理部は、その参照先ノードの現在の参照先ノードポインタを取得し、参照先管理部72に通知する。参照先管理部72は、通知された参照先ノードポインタをもとに管理テーブルを作成する。参照先ノードIDは参照先管理部72が一意に設定してもよいが、永続化処理部が参照枠ノードから参照先ノードIDを取得して参照枠ノードポインタとともに通知してもよい。続いて、参照枠管理部74は、参照先管理部72から、参照先ノードポインタと参照先ノードIDの通知を受けて、管理テーブルを作成する。参照枠管理部74が保持する管理テーブルに存在するリスナIDの情報は、参照枠表示部76が最初に参照枠を表示するときに、再度リスナを登録すればよい。この手段によれば、文書処理装置20を終了しても、構造化文書に既に挿入されていた参照枠は、構造化文書の再読み込み時に管理テーブルとともに復元ができ、ユーザの利便性を高めることができる。[0073]以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。産業上の利用可能性[0074]本発明は、マークアップ言語により構造化された文書を処理する文書処理装置に利用可能である。前記文書に含まれる構成要素を参照先ノードとして登録する要求を受け付けたときに、前記参照先ノードのインスタンスの参照オブジェクトを取得し、前記処理系において前記参照先ノードを参照する参照枠ノードを表示する際に、前記参照オブジェクトを処理系に出力するか、または、前記参照先ノードの内容の少なくとも一部を前記参照オブジェクトから取得して、取得した情報を処理系に出力する参照枠ユニットと、を備えることを特徴とする文書処理装置。[2]前記参照枠ユニットは、ツリートラバースをすることなく、前記参照オブジェクトを操作することで、参照先ノードのインスタンスから参照先ノードの内容の少なくとも一部を直接取得することを特徴とする請求項1に記載の文書処理装置。前記参照先ノードを管理し、参照先ノードが前記処理系により変更された場合には所定の通知先にその変更を通知する参照先管理部と、マークアップ言語により記述された、前記参照枠ノードに対応するフラグメントを作成し、前記処理系に前記フラグメントを文書へ挿入させるとともに、前記参照先ノードが前記処理系により変更された場合には所定の通知先にその変更を通知する参照枠管理部と、を備えることを特徴とする請求項1または2に記載の文書処理装置。[4]前記フラグメントには、前記参照先ノードの識別情報が含まれることを特徴とする請求項3に記載の文書処理装置。前記参照先ノードが前記処理系により変更された場合には、前記フラグメントに含まれる参照先ノードの内容を変更することを特徴とする請求項3に記載の文書処理装置。通知先として登録し、前記参照先ノードが変更された場合には、参照先管理部から変更通知を受けることを特徴とする請求項3から5のいずれかに記載の文書処理装置。前記参照枠ノードが参照する参照先ノードの内容の少なくとも一部を取得して表示装置に表示させる参照枠表示部を更に備えることを特徴とする請求項3から6のいずれかに記載の文書処理装置。前記参照枠ノードが参照する参照先ノードのインスタンスの参照オブジェクトを取得して、参照先ノードの内容の少なくとも一部を参照オブジェクトから取得して表示装置に表示させる参照枠表示部を更に備えることを特徴とする請求項3から6のいずれかに記載の文書処理装置。[9]前記参照枠表示部は、取得した前記参照先ノードの内容の少なくとも一部を、その参照先ノードが属するマークアップ言語により記述された文書を表示するための処理系に表示させることを特徴とする請求項7または8に記載の文書処理装置。前記通知先として登録し、前記参照先ノードが変更された場合には、参照枠管理部から変更通知を受けることを特徴とする請求項7から9のいずれかに記載の文書処理装置。[11]前記参照先ノードに係るボキャブラリは、前記参照枠ノードに係るボキャブラリとは異なるマークアップ言語により記述されることを特徴とする請求項1から10のいずれかに記載の文書処理装置。前記マークアップ言語により記述された文書を表示するステップと、を備えることを特徴とする文書処理方法。前記文書に含まれる構成要素を参照先ノードとして登録する要求を受け付けたときに、前記参照先ノードのインスタンスの参照オブジェクトを取得し、前記処理機能において前記参照先ノードを参照する参照枠ノードを表示する際に、前記参照オブジェクトを処理機能に出力するか、または、前記参照先ノードの内容の少なくとも一部を前記参照オブジェクトから取得して、取得した情報を前記処理機能に出力する機能と、をコンピュータに実現させることを特徴とするコンピュータプログラム。