(57)【要約】  マークアップ言語により記述された文書の名前空間を特定する。  名前空間検出部３１０は、処理対象となるＸＭＬ文書を読込み、名前空間が記述されている行を検出する。正確な名前空間が識別できなかったとき、名前空間特定部３１２は、名前空間情報格納部３１６に問い合わせながら、名前空間の検索、特定を行う。名前空間表示部３１４は、特定された名前空間または名前空間候補などを表示し、後者の場合はユーザが選択できるようにする。名前空間情報格納部３１６には、名前空間を導出するためのキーとなるＸＭＬ文書の拡張子や、文書内部に記述されているタグ名などの文字列と、名前空間との対応関係に係る情報をあらかじめ格納しておく。【特許請求の範囲】
【請求項１】
マークアップ言語により記述された文書に含まれる構成要素が属する名前空間を検出する名前空間検出部と、
前記名前空間検出部において正確な名前空間が検出されなかった際に、前記文書から所定の条件に基づいたキーワードを抽出し、それをもとに前記名前空間を特定する名前空間特定部と、
前記キーワードと前記名前空間との対応関係に係る情報を記憶する名前空間情報格納部と、
を備え、
前記名前空間特定部は前記抽出されたキーワードをもとに、前記名前空間情報格納部を参照することにより前記名前空間を特定し、
前記名前空間検出部または前記名前空間特定部において特定された前記名前空間に基づき、前記文書を表示し、ユーザによる前記文書の編集を受け付けることを特徴とする文書処理装置。
【請求項２】
前記キーワードは、前記文書のファイル名に含まれる拡張子であることを特徴とする請求項１に記載の文書処理装置。
【請求項３】
前記キーワードは、前記構成要素の要素名または属性名であることを特徴とする請求項１または２に記載の文書処理装置。
【請求項４】
前記名前空間特定部において検出された複数の名前空間をユーザに提示する名前空間提示部をさらに備え、前記名前空間特定部はユーザによって前記複数の名前空間より選択された名前空間を、前記特定された名前空間とすることを特徴とする請求項１から３のいずれかに記載の文書処理装置。
【請求項５】
前記名前空間情報格納部は、過去に処理した文書に含まれる構成要素が属する名前空間と、その文書に含まれるキーワードとの対応関係に係る情報を逐次記憶していくことを特徴とする請求項１から４のいずれかに記載の文書処理装置。
【請求項６】
マークアップ言語により記述された文書に含まれる構成要素が属する名前空間を検出するステップと、
前記検出するステップにおいて正確な名前空間が識別されなかった際に、前記文書から所定の条件に基づいたキーワードを抽出し、それをもとに、あらかじめ記憶された前記キーワードと前記名前空間との対応関係に係る情報を参照して前記名前空間を特定するステップと、
検出または特定された前記名前空間に基づき、前記文書を表示し、ユーザによる前記文書の編集を受け付けるステップと、
を含むことを特徴とする文書処理方法。
【請求項７】
マークアップ言語により記述された文書に含まれる構成要素が属する名前空間を検出する機能と、
前記検出するステップにおいて正確な名前空間が識別されなかった際に、前記文書から所定の条件に基づいたキーワードを抽出し、それをもとに、あらかじめ記憶された前記キーワードと前記名前空間との対応関係に係る情報を参照して前記名前空間を特定する機能と、
検出または特定された前記名前空間に基づき、前記文書を表示し、ユーザによる前記文書の編集を受け付ける機能と、
をコンピュータに実現させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書処理技術に関し、特に、階層構造を有する構造化文書を処理する文書処理装置及び文書処理方法に関する。
【背景技術】
【０００２】
ＸＭＬ（eXtensible Markup Language）は、ネットワークなどを介して他者とデータを共有するのに適した形式として注目されており、ＸＭＬ文書を作成、表示、編集するためのアプリケーションが開発されている（たとえば、特許文献１参照）。ＸＭＬ文書は、文書型定義などにより定義されたボキャブラリ（タグセット）に基づいて作成されている。【０００３】
ＸＭＬでは、一つの文書の中に複数のボキャブラリが混在することが許されるが、複数のボキャブラリに同一の要素名または属性名が存在する場合、文書内で要素名または属性名が衝突し、いずれのボキャブラリに属する要素型または属性型なのかを特定できない事態が生じる恐れがある。このような問題を解決するために、ＸＭＬでは、「名前空間」という概念を導入し、文書内に含まれる要素型および属性型がいずれのボキャブラリに属するものであるかを記述することになっている。
【特許文献１】特開２００１−２９０８０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、名前空間が適切に記述していない文書を処理する場面も想定される。このような場合であっても、文書を適切に処理できるよう支援する技術が求められる。【０００５】
本発明はこうした状況に鑑みてなされたものであり、その目的は、名前空間などの情報を識別できない構造化文書に対して適切な処理を行い、表示、編集を滞りなく遂行できる技術を提供することにある。
【課題を解決するための手段】
【０００６】
本発明のある態様は、文書処理装置に関する。この文書処理装置は、マークアップ言語により記述された文書に含まれる構成要素が属する名前空間を検出する名前空間検出部と、前記名前空間検出部において正確な名前空間が検出されなかった際に、前記文書から所定の条件に基づいたキーワードを抽出し、それをもとに前記名前空間を特定する名前空間特定部と、前記キーワードと前記名前空間との対応関係に係る情報を記憶する名前空間情報格納部と、を備え、前記名前空間特定部は前記抽出されたキーワードをもとに、前記名前空間情報格納部を参照することにより前記名前空間を特定し、前記名前空間検出部または前記名前空間特定部において特定された前記名前空間に基づき、前記文書を表示し、ユーザによる前記文書の編集を受け付けることを特徴とする。【０００７】
マークアップ言語は、ＸＭＬの一形態、例えば、ＸＨＴＭＬ（eXtensible HyperText Markup Language）、ＳＶＧ（Scalable Vector Graphics）、ＭａｔｈＭＬ（Mathematical Markup Language）などであってもよく、ＳＧＭＬ（Standard Generalized Markup Language）、ＨＴＭＬ（HyperText Markup Language）などであってもよい。キーワードとは文書のファイル名に含まれる拡張子や、文書内に記述された要素名（タグ名）または属性名など、名前空間を推し量ることのできるものでよい。【０００８】
また、本文書処理装置は、前記データ名特定部において検出された複数の名前空間をユーザに提示し、ユーザがそのいずれかを選択することにより名前空間を特定する、名前空間提示部をさらに含んでもよい。さらに、前記名前空間情報格納部は、過去に処理した文書に含まれる構成要素が属する名前空間と、その文書に含まれるキーワードとの対応関係に係る情報を逐次記憶し、その情報をもとに名前空間特定を行ってもよい。【０００９】
本発明の別の態様は、文書処理方法に関する。この文書処理方法は、マークアップ言語により記述された文書に含まれる構成要素が属する名前空間を検出するステップと、前記検出するステップにおいて正確な名前空間が識別されなかった際に、前記文書から所定の条件に基づいたキーワードを抽出し、それをもとに、あらかじめ記憶された前記キーワードと前記名前空間との対応関係に係る情報を参照して前記名前空間を特定するステップと、検出または特定された前記名前空間に基づき、前記文書を表示し、ユーザによる前記文書の編集を受け付けるステップと、を含むことを特徴とする。【００１０】
なお、以上の構成要素の任意の組合せ、本発明の表現をシステム、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１１】
本発明によれば、構造化文書の適切な処理を支援する技術を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】前提技術に係る文書処理装置の構成を示す図である。
【図２】処理対象となるＸＭＬ文書の例を示す図である。
【図３】図２に示したＸＭＬ文書をＨＴＭＬで記述された表にマッピングする例を示す図である。
【図４（ａ）】図２に示したＸＭＬ文書を図３に示した表にマッピングするための定義ファイルの例を示す図である。
【図４（ｂ）】図２に示したＸＭＬ文書を図３に示した表にマッピングするための定義ファイルの例を示す図である。
【図５】図２に示した成績管理ボキャブラリで記述されたＸＭＬ文書を、図３に示した対応によりＨＴＭＬにマッピングして表示した画面の例を示す図である。
【図６】ユーザが定義ファイルを生成するために、定義ファイル生成部がユーザに提示するグラフィカルユーザインターフェースの例を示す図である。
【図７】定義ファイル生成部により生成された画面レイアウトの他の例を示す図である。
【図８】文書処理装置によるＸＭＬ文書の編集画面の一例を示す図である。
【図９】文書処理装置により編集されるＸＭＬ文書の他の例を示す図である。
【図１０】図９に示した文書を表示した画面の例を示す図である。
【図１１】実施例に係る文書処理装置の構成を示す図である。
【図１２】名前空間を特定する手順を示すフローチャートである。
【図１３】名前空間ＵＲＩの記載のないＸＨＴＭＬ文書の例を示す図である。
【図１４】拡張子と名前空間の対応付けを示すテーブルの構成例を示す図である。
【図１５】名前空間ＵＲＩの記載されたＸＨＴＭＬ文書の例を示す図である。
【図１６】名前空間ＵＲＩの記載のない、日記タグを用いたＸＭＬ文書の例を示す図である。
【図１７】名前空間ＵＲＩの記載のある、日記タグを用いたＸＭＬ文書の例を示す図である。
【図１８】図１７のＸＭＬ文書において指定されたスタイルシートファイルの例を示す図である。
【図１９】スタイルシートを指定したＸＭＬ文書の例を示す図である。
【図２０】図１９のＸＭＬ文書において指定されたスタイルシートファイルの例を示す図である。
【符号の説明】
【００１３】
２０  文書処理装置、２２  主制御ユニット、２４  編集ユニット、３０  ＤＯＭユニット、３２  ＤＯＭ提供部、３４  ＤＯＭ生成部、３６  出力部、４０  ＣＳＳユニット、４２  ＣＳＳ解析部、４４  ＣＳＳ提供部、４６  レンダリング部、５０  ＨＴＭＬユニット、５２，６２  制御部、５４，６４  編集部、５６，６６  表示部、６０  ＳＶＧユニット、８０  ＶＣユニット、８２  マッピング部、８４  定義ファイル取得部、８６  定義ファイル生成部、３００  文書処理装置、３１０  名前空間検出部、３１２  名前空間特定部、３１４  名前空間表示部、３１６  名前空間情報格納部。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の前提となる技術の説明を行った上で、本実施例の詳細を説明する。【００１５】
（前提技術）
図１は、前提技術に係る文書処理装置２０の構成を示す。文書処理装置２０は、文書内のデータが階層構造を有する複数の構成要素に分類された構造化文書を処理するが、本前提技術では構造化文書の一例としてＸＭＬ文書を処理する例について説明する。文書処理装置２０は、主制御ユニット２２、編集ユニット２４、ＤＯＭユニット３０、ＣＳＳユニット４０、ＨＴＭＬユニット５０、ＳＶＧユニット６０、及び変換部の一例であるＶＣユニット８０を備える。これらの構成は、ハードウエアコンポーネントでいえば、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。【００１６】
主制御ユニット２２は、プラグインのロードや、コマンド実行のフレームワークを提供する。編集ユニット２４は、ＸＭＬ文書を編集するためのフレームワークを提供する。文書処理装置２０における文書の表示及び編集機能は、プラグインにより実現されており、文書の種別に応じて必要なプラグインが主制御ユニット２２又は編集ユニット２４によりロードされる。主制御ユニット２２又は編集ユニット２４は、処理対象となるＸＭＬ文書の名前空間を参照して、ＸＭＬ文書がいずれのボキャブラリにより記述されているかを判別し、そのボキャブラリに対応した表示又は編集用のプラグインをロードして表示や編集を実行させる。例えば、文書処理装置２０には、ＨＴＭＬ文書の表示及び編集を行うＨＴＭＬユニット５０、ＳＶＧ文書の表示及び編集を行うＳＶＧユニット６０など、ボキャブラリ（タグセット）ごとに表示系及び編集系がプラグインとして実装されており、ＨＴＭＬ文書を編集するときはＨＴＭＬユニット５０が、ＳＶＧ文書を編集するときはＳＶＧユニット６０が、それぞれロードされる。後述するように、ＨＴＭＬとＳＶＧの双方の構成要素を含む複合文書が処理対象となっている場合は、ＨＴＭＬユニット５０とＳＶＧユニット６０の双方がロードされる。【００１７】
このような構成によれば、ユーザは、必要な機能のみを選択してインストールし、後から適宜機能を追加又は削除することができるので、プログラムを格納するハードディスクなどの記録媒体の記憶領域を有効に活用することができ、また、プログラム実行時にも、メモリの浪費を防ぐことができる。また、機能拡張性に優れており、開発主体としても、プラグインの形で新たなボキャブラリに対応することが可能なので開発が容易となり、ユーザとしても、プラグインの追加により容易かつ低コストにて機能を追加することができる。【００１８】
編集ユニット２４は、ユーザインターフェースを介してユーザから編集指示のイベントを受け付け、そのイベントを適切なプラグインなどに通知するともに、イベントの再実行（リドゥ）又は実行の取消（アンドゥ）などの処理を制御する。【００１９】
ＤＯＭユニット３０は、ＤＯＭ提供部３２、ＤＯＭ生成部３４、及び出力部３６を含み、ＸＭＬ文書をデータとして扱うときのアクセス方法を提供するために定められた文書オブジェクトモデル（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）であれば、有効なＸＭＬ文書として処理可能である。この場合、挿入された他のボキャブラリのタグは、定義ファイルによりマッピングされてもよい。例えば、ＸＨＴＭＬ文書中に、「重要」、「最重要」などのタグを使用し、これらのタグで囲まれた部分を強調表示してもよいし、重要度の順にソートして表示してもよい。【００４３】
図１０に示した編集画面において、ユーザにより文書が編集されると、編集された部分を担当するプラグイン又はＶＣユニット８０がソースツリーを変更する。ソースツリーには、ノードごとにミューテーションイベントのリスナーを登録できるようになっており、通常は、各ノードが属するボキャブラリに対応したプラグインの表示部又はＶＣユニット８０がリスナーとして登録される。ＤＯＭ提供部３２は、ソースツリーが変更されると、変更されたノードから上位の階層へたどって、登録されたリスナーがあれば、そのリスナーへミューテーションイベントを発行する。例えば、図９に示した文書において、＜ｈｔｍｌ＞ノードの下位のノードが変更された場合、＜ｈｔｍｌ＞ノードにリスナーとして登録されたＨＴＭＬユニット５０にミューテーションイベントが通知されるとともに、その上位の＜ｓｖｇ＞ノードにリスナーとして登録されたＳＶＧユニット６０にもミューテーションイベントが通知される。このとき、ＨＴＭＬユニット５０は、変更されたソースツリーを参照して表示を更新する。ＳＶＧユニット６０は、自身のボキャブラリに属するノードが変更されていないので、ミューテーションイベントを無視してもよい。【００４４】
編集の内容によっては、ＨＴＭＬユニット５０による表示の更新に伴って、全体のレイアウトが変わる可能性がある。この場合は、画面のレイアウトを管理する構成、例えば最上位のノードの表示を担当するプラグインにより、プラグインごとの表示領域のレイアウトが更新される。例えば、ＨＴＭＬユニット５０による表示領域が以前より大きくなった場合、ＨＴＭＬユニット５０は、まず自身の担当する部分を描画して、表示領域の大きさを決定する。そして、画面のレイアウトを管理する構成に、変更後の表示領域の大きさを通知し、レイアウトの更新を依頼する。画面のレイアウトを管理する構成は、通知を受けて、プラグインごとの表示領域を再レイアウトする。こうして、編集された部分の表示が適切に更新されるとともに、画面全体のレイアウトが更新される。
以上の前提技術をもとに、以下実施の形態の詳細について説明する。【００４５】
（実施の形態）
本発明の実施の形態における文書処理装置は、上述の前提技術を基礎として構成されており、前提技術における文書処理装置は基本的に本実施の形態の文書処理装置の一部に含まれるものとする。また本実施の形態では主に、構造化文書の一例としてＸＭＬで構造化された文書ファイルを処理する例について説明する。【００４６】
図１１は、本実施の形態に係る文書処理装置３００を示す。本図において図１と同一の符号を付した構成は、図１で説明した構成と同一または同様の機能を有する。本実施の形態に係る文書処理装置３００において図１に記載のない構成として、主制御ユニット２２は、名前空間検出部３１０、名前空間特定部３１２、名前空間表示部３１４を備え、名前空間情報格納部３１６と接続されている。名前空間検出部３１０は、処理対象となるＸＭＬ文書を読込み、名前空間を識別するための情報、例えば名前空間ＵＲＩが記述されている行を検出する。名前空間を識別するための情報が検出されなかった場合、または検出された名前空間ＵＲＩが誤りであった場合など、正確な名前空間が識別できなかったとき、名前空間特定部３１２は、その旨の信号を名前空間検出部３１０より受け取り、名前空間情報格納部３１６に問い合わせながら、名前空間の検索、特定を行う。名前空間表示部３１４は、特定された名前空間または名前空間候補を表示する。候補となる名前空間が最終的に特定されなかった場合は、名前空間表示部３１４は、例えばＸＭＬ文書のソースなどを表示してもよい。名前空間情報格納部３１６には、名前空間を導出するためのキーとなる文字列、例えば処理対象となるＸＭＬ文書のファイル名に含まれる拡張子や、文書内部に記述されている要素名や属性名などと、名前空間との対応関係を表す情報をあらかじめ格納しておく。対応関係を表す情報については後述するが、例えば、拡張子「ｈｔｍｌ」に対して、名前空間ＵＲＩ「http://www.w3.org/1999/xhtml」を対応付けたテーブルなどである。以後、名前空間情報格納部３１６には拡張子またはタグ名と、名前空間との対応関係を表す情報が格納されているとして説明する。【００４７】
図１２は名前空間特定部３１２が名前空間情報格納部３１６との連携により、名前空間を特定する手順を示すフローチャートである。まず、名前空間検出部３１０より、処理対象のＸＭＬ文書中に正確な名前空間を識別できなかった旨の信号を受け取ると（Ｓ１０）、ＸＭＬ文書のファイル名から拡張子を取得する（Ｓ１２）。取得された拡張子をもとに、名前空間情報格納部３１６に問い合わせを行い、当該拡張子に対応付けられている名前空間を検索する（Ｓ１４）。拡張子に対応した名前空間が唯一存在する場合（Ｓ１６のＹ）、その名前空間のデータを名前空間表示部３１４へ送出する（Ｓ１８）。名前空間情報格納部３１６において当該拡張子の対応付けが存在しない場合、または複数の名前空間が検出された場合（Ｓ１６のＮ）、ＸＭＬ文書中に含まれる構成要素の要素名（タグ名）の抽出を行う（Ｓ２０）。ここでの抽出はタグ名以外に属性名でもよい。以後、それらのキーワードを代表して、タグ名を用いて説明を行う。タグ名が抽出されたら（Ｓ２２のＹ）抽出されたタグ名に基づき、後述するような所定の手法により名前空間の検出を行い（Ｓ２４）、名前空間が得られた場合は（Ｓ２６のＹ）、そのデータを名前空間表示部３１４へ送出する（Ｓ２８）。抽出された全てのタグ名に対して、それに対応する名前空間の情報が名前空間情報格納部３１６に存在しなかった場合など、名前空間が検出できなかったときや（Ｓ２６のＮ）、タグ名が抽出されなかったとき（Ｓ２２のＮ）は、対応付け不在信号を名前空間表示部３１４へ送信する（Ｓ３０）。【００４８】
名前空間表示部３１４では、名前空間特定部３１２において唯一特定された名前空間の表示を行い、ユーザが最終的に確認を行えるようにしてもよい。このようにして特定された名前空間を参照し、前提技術と同様に、主制御ユニット２２または編集ユニット２４において、ＸＭＬ文書のボキャブラリを判別し、そのボキャブラリに対応した表示又は編集用のプラグインを利用して表示や編集を実行する。ここで、特定された名前空間のボキャブラリを処理するプラグインが当該文書処理装置にインストールされていない場合は、プラグインのロードを促すメッセージをユーザに示したり、自動的にダウンロードさせるようにしてもよい。【００４９】
以上の構成により、名前空間の記載がなかったり、誤記があったりしたＸＭＬ文書を処理したときでも、ファイルの拡張子や文書中の要素名、属性名などから自動的に名前空間を特定することが可能となるため、ユーザが文書中、名前空間のない箇所を捜索したり、名前空間の検索を自ら行ったりする手間をかけることなく、文書処理を続行させることができる。従って処理にかかる時間的コストが軽減される。さらに本実施の形態は、このようなＸＭＬ文書を読込んだときに発生しがちなシステムダウンを回避する措置としても位置づけられ、ユーザに対して原因および解決策を提示することができるため、理解し易く、親しみやすい文書処理装置となる。【００５０】
名前空間特定部３１２では、名前空間候補が複数存在する場合に、その最終的な特定を自動的に行わずに、名前空間表示部３１４に表示するようにしてもよい。例えば図１２のＳ１６では、唯一検出された名前空間のみＳ１８におけるデータ送出対象としたが、複数検出された場合でもそのデータを名前空間表示部３１４へ送出し、全ての候補を表示するようにしてもよい。このときユーザはそれらの中から適切な名前空間を選択し、設定を行えるようにしてもよい。また、後述する計算手法により確率を計算し、確率の高い名前空間をいくつか表示するようにしてもよい。【００５１】
このように、拡張子やタグ名など、複数のキーワードから名前空間を特定する場合は、検出された名前空間の確率計算を行ったりすることで、名前空間特定に対する確度が増す。また、名前空間の自動的な特定ができなかった場合でも、名前空間の候補を絞り込みユーザに提示することで、ユーザが全ての作業を行う場合に比べ、その手間が軽減される。【００５２】
上述した拡張子からの検索や、タグ名からの検索は、先にタグ名からの検索を行ったり、どちらか一方のみを行うなど、任意の組み合わせ方でよい。また、検索キーは拡張子や要素名、属性名に限定されるものではない。【００５３】
名前空間表示部３１４は、名前空間特定部３１２からの対応付け不在信号を受け取ると、処理中のＸＭＬ文書のソースファイルをそのまま表示し、名前空間が検出されない旨の表示をユーザに対して行ってもよい。さらにユーザが名前空間を識別するための記述を挿入するなどＸＭＬ文書を直接修正できるようにしてもよい。【００５４】
ここで、名前空間特定部３１２において名前空間を特定、またはその候補を絞り込む手法について具体的に説明する。図１３は名前空間を識別するための情報である、ＵＲＩの記載がないＸＨＴＭＬ文書の例である。図１３に示した文書の例では、＜ｈｅａｄ＞、＜ｔｉｔｌｅ＞、＜ｂｏｄｙ＞といった要素型が属する名前空間を識別するための情報が記載されていない。このように、ＸＨＴＭＬ文書などの一般的な文書において名前空間を推測する場合は、ルールベースの手法により名前空間の特定を行うのが現実的である。【００５５】
図１４は、ルールベースの手法で参照される、名前空間情報格納部３１６に格納されたテーブルの構成例４００を示す。このテーブルは、拡張子名欄４００ａ、名前空間情報欄４００ｂより構成されている。このテーブルを参照し名前空間を特定するステップは、図１２のＳ１４に相当する。例えば、処理対象となる文書のファイル名が「bunsho.html」であった場合、拡張子「ｈｔｍｌ」に基づきこのテーブルを検索することにより、名前空間を示すＵＲＩが「http://www.w3.org/1999/xhtml」であることが特定される。この検索手法は、当該文書が単独のＸＭＬファイルとして提供されており、非複合文書である場合には、計算コストが少なく有効である。【００５６】
拡張子からの検索によって複数の名前空間が検出されたときや、名前空間が検出されなかった場合などは、図１４に示したテーブルの構成例４００のうち拡張子名欄４００ａの代わりにタグ名欄を構成要素としたテーブルを参照して、ルールベースの手法を適用してもよい。このステップは、図１２のＳ２４に相当する。例えば、図１３に示したＸＭＬ文書では、ルートノードのタグ名が「ｈｔｍｌ」である。それに基づき図１４と同様のテーブルを参照することにより、名前空間が「http://www.w3.org/1999/xhtml」と特定される。ユーザまたはシステム構築者は、図１４に示したようなテーブルをあらかじめ作成し、名前空間情報格納部３１６に格納する。【００５７】
ルートノードのタグ名によって検出された名前空間が複数ある場合などは、さらに下位の階層の構成要素について同様の特定を行ってもよい。このとき、名前空間情報格納部３１６には、例えば、第１層タグ名欄、第２層タグ名欄および名前空間情報欄が設けられたテーブルを格納してもよい。図１３に示したＸＨＴＭＬ文書の場合は、例えば第１層のタグ名が「ｈｔｍｌ」であり、第２層のタグ名が「ｈｅａｄ」、「ｔｉｔｌｅ」、「ｂｏｄｙ」であることに基づき、名前空間情報格納部３１６に記憶されたテーブルを検索し、名前空間を特定する。その他の例として、第１層のタグ名が「ｓｖｇ」であり、第２層のタグ名が「ｄｅｓｃ」、「ｒｅｃｔ」、「ｐｏｌｙｌｉｎｅ」などであったらＳＶＧで記述されている、第１層のタグ名が「ｍａｔｈ」であり、第２層のタグ名が「ｍｉ」、「ｍｏ」、「ｍｆｒａｃ」であったらＭａｔｈＭＬで記述されている、というように名前空間を特定してよい。このように、検索キーとなるタグ名の階層を増やすことにより、名前空間特定の確度を上げることができ、また、候補の絞込みを効率よく行うことができる。なお、これまでの記述では、拡張子、第１層のタグ名、第２層のタグ名というように段階的に検索キーを増加させていったが、最初から拡張子および複数層のタグ名を検索キーとしてもよいし、タグ名のみを検索キーとしてもよい。【００５８】
名前空間情報格納部３１６には、名前空間の記載があるＸＭＬ文書などを文書処理装置にあらかじめ学習させ、その文書が参照した名前空間と、その文書中のタグ名やファイルの拡張子などとの対応関係の情報を保持する、教師有り学習を行う確率的分類器（図示せず）をさらに設けてもよい。教師有り学習を行う確率的分類器には、ベイズの定理やＳＶＭ（Support Vector Machine）など既存の手法を適用してよい。【００５９】
以下に、ベイズの定理によって名前空間を絞り込む簡単な計算例を示す。まず、ＳＶＧのファイルを判定する教師データとして、「ｓｖｇ」要素が１回、「ｄｅｓｃ」要素が３回、「ｒｅｃｔ」要素が３回出現するファイルを分類器に学習させたとする。これを分類Ａとする。次に、ＭａｔｈＭＬを判定する教師データとして、「ｍａｔｈ」要素が１回、「ｍｉ」要素が４回、「ｍｆｒａｃ」要素が２回出現するファイルを学習させたとする。これを分類Ｂとする。ここで、名前空間が識別できず、「ｄｅｓｃ」要素が３回、「ｒｅｃｔ」要素が１回、「ｍｉ」要素が１回出現する文書Ｃを処理したとする。このとき、文書Ｃの名前空間が分類Ａ、分類Ｂである確率は、ベイズの定理を用いてそれぞれ、
Ｐ（Ａ｜Ｃ）＝Ｐ（Ｃ＆Ｂ）／Ｐ（Ｃ）
＝Ｐ（Ｂ）×Ｐ(Ｃ｜Ａ)／（Ｐ（Ａ）×Ｐ（Ｃ｜Ａ）＋Ｐ（Ｂ）×Ｐ（Ｃ｜Ｂ））
＝０．７５
Ｐ（Ｂ｜Ｃ）＝０．２５
と求められる。これにより、文書Ｃの名前空間は分類ＡのＳＶＧである確率が高いことがわかる。例えば図１３に示したＸＨＴＭＬ文書の場合、図１５に示した名前空間ＵＲＩの記載のあるＸＨＴＭＬ文書などをあらかじめ教師データとして学習させておけば、名前空間ＵＲＩが「http://www.w3.org/1999/xhtml」であることが、上記のような確率計算に基づき特定できる。【００６０】
上述のごとき確率的な手法では、タグ名の出現回数から名前空間候補を確率で順位付けできるため、例えば確率の上位３つを名前空間候補としたり、確率が５０％以上など所定のしきい値を設定してそれ以上の確率を有する名前空間を候補としたりして、名前空間表示部３１４に表示してもよい。ユーザがそれらの名前空間候補の中から選択することにより、名前空間の最終的な特定を行ってもよい。【００６１】
図１６は名前空間ＵＲＩの記載がない、日記タグを用いたＸＭＬ文書の例である。このような独自のボキャブラリを識別するときは、例えば、あらかじめ図１７に示すような名前空間ＵＲＩの記載のあるＸＭＬ文書を学習させておけば、上述した確率的手法が有効である。この場合、過去に処理した、名前空間識別情報について記載のある文書を全て学習させておけば、ある文書処理装置を使用するユーザの処理内容の傾向に応じた確率計算を行うことができ、名前空間の候補を効率よく絞り込むことができる。【００６２】
これまで述べてきた名前空間の特定手法は、ＸＭＬ文書などの他、ＸＳＬ（eXtensible Stylesheet Language）などの言語による文書にもそのまま適用できる。その例として、図１８は、図１７のＸＭＬ文書において指定されたＸＭＬスタイルシートのファイル「case2.xsl」の内容を示している。この場合は、「http://xmlns.justsystem.co.jp/diary」なる名前空間ＵＲＩが記載されているため、図１７に示したＸＭＬ文書の表示、編集は滞りなく行われる。【００６３】
次に、図１７と同様のＸＭＬ文書の例を図１９に示す。ここでは、スタイルシートのファイルとして「case2b.xsl」が指定されている。図２０にそのスタイルシートファイル「case2b.xsl」の内容を示す。図１８のスタイルシートファイル「case2.xsl」と比較すると、図２０のスタイルシートでは、名前空間ＵＲＩが「http://xmlns.justsystem.co.jp/dialy」となっており、「diary」のつづりに誤りがあることがわかる。このように、名前空間識別情報の記載はあるが誤っている場合などは、名前空間特定部３１２は、類似の名前空間を探すようにしてもよい。この場合、名前空間情報格納部３１６にあらかじめ、名前空間リストを記憶させておき、その中から文書に記載の誤った名前空間と最も類似性の高い名前空間を検出するようにしてもよい。ここで類似性の判断には、編集距離（レーベンシュタイン距離）を数え上げるなど、既存の手法を適用してよい。【００６４】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、その各構成要素や各処理プロセスの組合せにいろいろな変形が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下、変形例を挙げる。【００６５】
実施の形態では、ＸＭＬ文書を処理する例について説明したが、本実施例の文書処理装置３００は、他のマークアップ言語、例えば、ＳＧＭＬ、ＨＴＭＬなどで記述された文書も同様に処理可能である。【００６６】
実施の形態では、まず名前空間を特定することにより、そのボキャブラリに対応したプラグインをロードし、文書を表示／編集させる通常の処理を可能にしたが、同様の手続きにより名前空間に代えて候補となるプラグインをユーザに提示し、ユーザが選択したプラグインによって文書を表示／編集させてもよい。
【産業上の利用可能性】
【００６７】
本発明は、構造化文書を処理する装置に利用することができる。
【図１】
2006046665.tif 000002
【図２】
2006046665.tif 000003
【図３】
2006046665.tif 000004
【図４（ａ）】
2006046665.tif 000005
【図４（ｂ）】
2006046665.tif 000006
【図５】
2006046665.tif 000007
【図６】
2006046665.tif 000008
【図７】
2006046665.tif 000009
【図８】
2006046665.tif 000010
【図９】
2006046665.tif 000011
【図１０】
2006046665.tif 000012
【図１１】
2006046665.tif 000013
【図１２】
2006046665.tif 000014
【図１３】
2006046665.tif 000015
【図１４】
2006046665.tif 000016
【図１５】
2006046665.tif 000017
【図１６】
2006046665.tif 000018
【図１７】
2006046665.tif 000019
【図１８】
2006046665.tif 000020
【図１９】
2006046665.tif 000021
【図２０】
2006046665.tif 000022
【国際調査報告】
2006046665.tif 000023
2006046665.tif 000024
2006046665.tif 000025