(57)【特許請求の範囲】
【請求項１】
文字列を選択する選択手段と、
前記選択手段によって選択された文字列に対して、文字列を挿入する文書がしたがう文書構造定義内で定義された要素の内、第１の要素を指定する要素指定手段と、
前記選択手段によって選択された文字列を挿入する前記文書内の位置である挿入先を指定する挿入先指定手段と、
前記要素指定手段によって指定された第１の要素は文字列を要素として有することができるか否かを前記文書構造定義内の定義に基づいて判断し、できないと判断した場合は、文字列を要素として有することができる該第１の要素の下位要素である第２の要素を該文書構造定義内から探索し、前記選択手段によって選択された文字列を有する該第２の要素を生成し、該第１の要素と該第２の要素の間に必要となる要素を該文書構造定義内から探索し、該必要となる要素を該第１の要素と該第２の要素の間に補完することによって挿入要素を生成し、該挿入要素を前記挿入先指定手段によって指定された挿入先に移動する移動手段
を具備することを特徴とする情報処理装置。
【請求項２】
前記移動手段によって前記挿入要素を前記挿入先指定手段によって指定された挿入先に移動することが、前記文書構造定義内での定義の違反になるか否かを判断する違反判断手段と、
をさらに具備し、
前記移動手段は、前記違反判断手段によって違反していると判断された場合は、前記挿入先の位置の前方又は後方で前記挿入要素を挿入可能な位置を探索し、該挿入可能な位置に前記挿入要素を挿入する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記移動手段は、前記探索の結果、前記挿入先の位置の前方及び後方で前記挿入要素を挿入可能な位置がなかった場合は、該挿入要素の上位要素を前記文書構造定義内から探索し、該第２の要素を有する上位要素を新たな挿入要素として生成し、
前記違反判断手段は、前記移動手段によって前記挿入要素を前記挿入先指定手段によって指定された挿入先に移動することが、前記文書構造定義内での定義の違反になるか否かを判断する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記文書は構造化文書又は構造化文書ではない平文の文書である
ことを特徴とする請求項１から３のいずれか一項に記載の情報処理装置。
【請求項５】
前記要素指定手段は、操作者の操作によって要素が指定された場合に、該指定された要素に下位要素が複数ある場合は、該下位要素を選択可能に表示し、操作者の操作によって指定された下位要素を第１の要素とする
ことを特徴とする請求項１から４のいずれか一項に記載の情報処理装置。
【請求項６】
コンピュータを、
文字列を選択する選択手段と、
前記選択手段によって選択された文字列に対して、文字列を挿入する文書がしたがう文書構造定義内で定義された要素の内、第１の要素を指定する要素指定手段と、
前記選択手段によって選択された文字列を挿入する前記文書内の位置である挿入先を指定する挿入先指定手段と、
前記要素指定手段によって指定された第１の要素は文字列を要素として有することができるか否かを前記文書構造定義内の定義に基づいて判断し、できないと判断した場合は、文字列を要素として有することができる該第１の要素の下位要素である第２の要素を該文書構造定義内から探索し、前記選択手段によって選択された文字列を有する該第２の要素を生成し、該第１の要素と該第２の要素の間に必要となる要素を該文書構造定義内から探索し、該必要となる要素を該第１の要素と該第２の要素の間に補完することによって挿入要素を生成し、該挿入要素を前記挿入先指定手段によって指定された挿入先に移動する移動手段
として機能させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理プログラムに関する。
【背景技術】
【０００２】
特許文献１には、非構造化文書から構造化文書への変換を、予め設定された論理構造定義から直接的に作成したルールを用いて行い、個々の文書の論理構造に即した構造化文書の作成を容易にすることを目的とし、キーワード抽出部は、キーワード抽出ルールを用いて非構造化文書から論理構造を表すキーワードを抽出し、非構造化文書をキーワードとそれ以外の文字列の二種の要素で表現したキーワード／テキストモデルを生成し、ＤＴＤを修正・変換して作成した構文解析ルールを参照して構文解析部自動生成手続きが生成した構文解析部は、キーワード／テキストモデルに対する構文解析を行い、仮ＳＧＭＬ文書を生成し、ＳＧＭＬ文書修正部は、構文解析ルール作成時に生成されたＤＴＤ差分情報を参照して仮ＳＧＭＬ文書を修正し、最終出力であるＳＧＭＬ文書を生成することが開示されている。
【０００３】
また、例えば、特許文献２には、文書要素を入れ子状に構造化した文書を取り扱う場合に、文書要素を挿入する操作を効率化することを課題とし、文書要素を挿入する際に入力される文書要素名に基づいて、その文書要素名を有する文書要素を編集中の文書に挿入可能な位置を検出して表示し、挿入可能位置は、入力された文書要素名を有する文書要素を含み得る上位の文書要素（名）と、その上位の文書要素における位置によって特定され、検出された挿入可能位置は特定図形をもって表示され、文書作成者は、順次表示される特定図形の位置に文書要素を挿入するか否かを判断しながら、所望の位置に文書要素を挿入することによって文書編集を行うことができ、文書編集を効率化できることが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０９−０６９１０１号公報
【特許文献２】特開平１０−１４３５１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、選択された文字列を含む要素の作成を、文書構造定義に違反したものとなることを防止するようにした情報処理装置及び情報処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項１の発明は、文字列を選択する選択手段と、前記選択手段によって選択された文字列に対して、文字列を挿入する文書がしたがう文書構造定義内で定義された要素の内、第１の要素を指定する要素指定手段と、前記選択手段によって選択された文字列を挿入する前記文書内の位置である挿入先を指定する挿入先指定手段と、前記要素指定手段によって指定された第１の要素は文字列を要素として有することができるか否かを前記文書構造定義内の定義に基づいて判断し、できないと判断した場合は、文字列を要素として有することができる該第１の要素の下位要素である第２の要素を該文書構造定義内から探索し、前記選択手段によって選択された文字列を有する該第２の要素を生成し、第１の要素と該第２の要素の間に必要となる要素を該文書構造定義内から探索し、該必要となる要素を該第１の要素と該第２の要素の間に補完することによって挿入要素を生成し、該挿入要素を前記挿入先指定手段によって指定された挿入先に移動する移動手段を具備することを特徴とする情報処理装置である。
【０００７】
請求項２の発明は、前記移動手段によって前記挿入要素を前記挿入先指定手段によって指定された挿入先に移動することが、前記文書構造定義内での定義の違反になるか否かを判断する違反判断手段と、をさらに具備し、前記移動手段は、前記違反判断手段によって違反していると判断された場合は、前記挿入先の位置の前方又は後方で前記挿入要素を挿入可能な位置を探索し、該挿入可能な位置に前記挿入要素を挿入することを特徴とする請求項１に記載の情報処理装置である。
【０００８】
請求項３の発明は、前記移動手段は、前記探索の結果、前記挿入先の位置の前方及び後方で前記挿入要素を挿入可能な位置がなかった場合は、該挿入要素の上位要素を前記文書構造定義内から探索し、該第２の要素を有する上位要素を新たな挿入要素として生成し、前記違反判断手段は、前記移動手段によって前記挿入要素を前記挿入先指定手段によって指定された挿入先に移動することが、前記文書構造定義内での定義の違反になるか否かを判断する
ことを特徴とする請求項２に記載の情報処理装置である。
【０００９】
請求項４の発明は、前記文書は構造化文書又は構造化文書ではない平文の文書であることを特徴とする請求項１から３のいずれか一項に記載の情報処理装置である。
【００１０】
請求項５の発明は、前記要素指定手段は、操作者の操作によって要素が指定された場合に、該指定された要素に下位要素が複数ある場合は、該下位要素を選択可能に表示し、操作者の操作によって指定された下位要素を第１の要素とすることを特徴とする請求項１から４のいずれか一項に記載の情報処理装置である。
【００１１】
請求項６の発明は、コンピュータを、文字列を選択する選択手段と、前記選択手段によって選択された文字列に対して、文字列を挿入する文書がしたがう文書構造定義内で定義された要素の内、第１の要素を指定する要素指定手段と、前記選択手段によって選択された文字列を挿入する前記文書内の位置である挿入先を指定する挿入先指定手段と、前記要素指定手段によって指定された第１の要素は文字列を要素として有することができるか否かを前記文書構造定義内の定義に基づいて判断し、できないと判断した場合は、文字列を要素として有することができる該第１の要素の下位要素である第２の要素を該文書構造定義内から探索し、前記選択手段によって選択された文字列を有する該第２の要素を生成し、第１の要素と該第２の要素の間に必要となる要素を該文書構造定義内から探索し、該必要となる要素を該第１の要素と該第２の要素の間に補完することによって挿入要素を生成し、該挿入要素を前記挿入先指定手段によって指定された挿入先に移動する移動手段として機能させるための情報処理プログラムである。
【発明の効果】
【００１２】
請求項１の情報処理装置によれば、選択された文字列を含む要素の作成を、文書構造定義に違反したものとなることを防止することができる。
【００１３】
請求項２の情報処理装置によれば、選択された文字列を含む要素の挿入が、文書構造定義に違反したものとならないように、挿入可能な位置に当該要素を挿入することができる。
【００１４】
請求項３の情報処理装置によれば、上位の要素を含む要素を挿入要素とすることができるようになる。
【００１５】
請求項４の情報処理装置によれば、構造化文書又は構造化文書ではない平文の文書に対しても文書構造定義内で定義された要素を挿入することができるようになる。
【００１６】
請求項５の情報処理装置によれば、指定した要素に下位要素が複数ある場合は、その下位要素を指定することができるようになる。
【００１７】
請求項６の情報処理プログラムによれば、選択された文字列を含む要素の作成を、文書構造定義に違反したものとなることを防止することができる。
【図面の簡単な説明】
【００１８】
【図１】本実施の形態の構成例についての概念的なモジュール構成図である。
【図２】本実施の形態による処理例を示すフローチャートである。
【図３】スキーマの例を示す説明図である。
【図４】構造化文書の例を示す説明図である。
【図５】文書の表示例を示す説明図である。
【図６】表示文書にメニューが表示された例を示す説明図である。
【図７】編集後の表示文書の例を示す説明図である。
【図８】編集後の構造化文書の例を示す説明図である。
【図９】構造化文書の例を示す説明図である。
【図１０】文書の表示例を示す説明図である。
【図１１】表示文書にメニューが表示された例を示す説明図である。
【図１２】編集後の表示文書の例を示す説明図である。
【図１３】編集後の構造化文書の例を示す説明図である。
【図１４】文書の表示例を示す説明図である。
【図１５】表示文書にメニューが表示された例を示す説明図である。
【図１６】構造化文書（作成途中）の例を示す説明図である。
【図１７】構造化文書（作成途中）の例を示す説明図である。
【図１８】構造化文書（作成途中）の例を示す説明図である。
【図１９】構造化文書（作成途中）の例を示す説明図である。
【図２０】構造化文書（作成途中）の例を示す説明図である。
【図２１】編集後の構造化文書の例を示す説明図である。
【図２２】編集後の表示文書の例を示す説明図である。
【図２３】文書の表示例を示す説明図である。
【図２４】表示文書にメニューが表示された例を示す説明図である。
【図２５】表示文書にメニューが表示された例を示す説明図である。
【図２６】表示文書にメニューが表示された例を示す説明図である。
【図２７】本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
【発明を実施するための最良の形態】
【００１９】
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図１は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア（コンピュータ・プログラム）、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム（コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム）、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するの意である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、１モジュールを１プログラムで構成してもよいし、複数モジュールを１プログラムで構成してもよく、逆に１モジュールを複数プログラムで構成してもよい。また、複数モジュールは１コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって１モジュールが複数コンピュータで実行されてもよい。なお、１つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続（データの授受、指示、データ間の参照関係等）の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じて定まることの意を含めて用いる。また、「Ａである場合、Ｂをする」という意味を有する記載は、「Ａであるか否かを判断し、Ａであると判断した場合はＢをする」の意味で用いる。ただし、Ａであるか否かの判断が不要である場合を除く。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク（一対一対応の通信接続を含む）等の通信手段で接続されて構成されるほか、１つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」（社会システム）にすぎないものは含まない。
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、外部記憶媒体、通信回線を介した記憶装置、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）内のレジスタ等を含んでいてもよい。
【００２０】
本実施の形態である情報処理装置は、選択した文字列を指定した要素として文書に挿入するものであって、図１の例に示すように、構造化文書作成モジュール１００、構造化文書記憶モジュール１１０、文書構造定義記憶モジュール１２０、操作受付モジュール１３０、構造化文書作成支援モジュール１４０を有している。
本実施の形態は、例えばＸＭＬ等の構造化文書を編集又は作成するために利用する情報処理装置である。
まず、構造化文書を対象としたエディター（文書作成装置）について説明する。
構造化文書作成エディターにおいては、構造化文書に対して表示形式の指定情報であるスタイルシートを適用して表示することが行われる。その表示領域においては（以下、スタイル表示領域ともいう）、通常のエディターと同様の表示方法がなされることが一般的である。
スタイル表示領域においては、通常のエディターと同様の表示であるが、一般的には、文字列のある範囲を選択して、コピー／貼り付けのような操作を行うことはできないようにしている。これは、操作者の選択する範囲と文書構造とが必ずしも一致しないためである。本実施の形態は、選択した文字列に要素を指定して、その文字列のコピー／貼り付け（挿入）を行うようにしている。
【００２１】
構造化文書作成モジュール１００は、構造化文書記憶モジュール１１０、文書構造定義記憶モジュール１２０、操作受付モジュール１３０、構造化文書作成支援モジュール１４０と接続されている。構造化文書作成モジュール１００は、構造化文書記憶モジュール１１０に記憶されている構造化文書にスタイルシートを適用して、ディスプレイ等の表示装置のスタイル表示領域にその構造化文書を表示する。なお、スタイルシートは、構造化文書作成モジュール１００がアクセス可能な記憶装置に記憶されている。例えば、構造化文書記憶モジュール１１０に記憶されている。そして、操作受付モジュール１３０が受け付けた操作者の操作を受け取った場合は、その操作に応じた編集処理を行う。その操作内に、構造化文書内の編集対象としての範囲の選択があった場合は、構造化文書作成支援モジュール１４０に編集対象となる選択範囲を取得させる。そして、選択後の文字列に要素を指定して、その文字列のコピー／貼り付け（挿入）を行うようにしている。なお、対象とする文書は、構造化文書の他に、構造化文書ではない平文の文書であってもよい。平文の文書とは、テキストの文字コードのみからなり、構造化文書で用いられるタグ等は含まない文書である。
【００２２】
構造化文書記憶モジュール１１０は、構造化文書作成モジュール１００と接続されており、構造化文書、平文の文書を記憶している。構造化文書作成モジュール１００からのアクセスに応じて、構造化文書、平文の文書を渡す。具体的な構造化文書、平文の文書については、図４等に例示する構造化文書４００等、図１４等に例示する表示文書１４００等を用いて後述する。また、スタイルシートを記憶していてもよい。
【００２３】
文書構造定義記憶モジュール１２０は、構造化文書作成モジュール１００と接続されており、構造化文書に対応した文書構造定義（以下、スキーマともいう）を記憶している。構造化文書作成モジュール１００からのアクセスに応じて、スキーマを渡す。スキーマは、構造化文書内の構造を定義しており、例えば、ＤＴＤ（Ｄｏｃｕｍｅｎｔ  Ｔｙｐｅ  Ｄｅｆｉｎｉｔｉｏｎ）、ＸＭＬスキーマ、ＲＥＬＡＸ等のスキーマ言語によって記述されている。具体的なスキーマについては、図３に例示するスキーマ３００を用いて後述する。なお、構造化文書は対応するスキーマにしたがうが、平文の文書にも対応するスキーマがあり、本実施の形態は、平文の文書からその対応するスキーマにしたがって構造化文書を作成する。
【００２４】
操作受付モジュール１３０は、構造化文書作成モジュール１００と接続されており、キーボード、マウス、タッチパネル等を用いた操作者の操作を受け付け、構造化文書作成モジュール１００に渡す。この操作は、文書の表示領域（例えば、スタイル表示領域）に表示された構造化文書、平文の文書に対する操作である。例えば、その操作として、表示された構造化文書、平文の文書に対して、編集対象としての範囲の選択操作が含まれる。そして、その操作内に構造化文書内、平文の文書内の編集対象としての範囲の選択があった場合は、構造化文書作成モジュール１００を介して構造化文書作成支援モジュール１４０に渡す。
【００２５】
また、操作受付モジュール１３０は、編集対象としての範囲の選択、つまり文字列の選択があり、その文字列に対して要素の指定があった場合も、構造化文書作成モジュール１００を介して構造化文書作成支援モジュール１４０に渡す。ここで構造化文書作成支援モジュール１４０に渡す要素とは、文字列を挿入する文書（構造化文書、平文の文書）がしたがうスキーマ内で定義された要素の内、操作者の操作によって指定された要素（以下、第１の要素ともいう）である。例えば、図３に示すスキーマ３００では、「ｅｌｅｍｅｎｔ  ｎａｍｅ＝“  ”」の「“」と「”」で囲まれたものが、指定され得る要素の候補として表示するものである。具体的には、スキーマ３００では、「ｂｏｏｋ」、「ａｒｔｉｃｌｅ」、「ｔｉｔｌｅ」、「ｓｕｂｔｉｔｌｅ」、「ｐａｒａｇｒａｐｈ」、「ｔｅｘｔ」、「ｌｉｓｔ」、「ｌｉ」が要素として、これらを表示して、操作者の操作によって指定される。この指定とは、選択した文字列をその要素に指定することである。
【００２６】
さらに、操作受付モジュール１３０は、文字列の選択があり、その文字列を挿入する操作があった場合も、その文書内の位置である挿入先を、構造化文書作成モジュール１００を介して構造化文書作成支援モジュール１４０に渡す。なお、文字列を挿入する操作は、明示的なものである必要はなく、例えば、前述の文字列の選択、要素の指定が、そのまま文字列の挿入操作となってもよい。また、挿入先は、第何文字目等の文字位置によって指定されてもよいし、文字列によって指定されてもよい。なお、実際の挿入位置は、指定された挿入位置になるとは限らず、スキーマにしたがって、構造上挿入できる位置に挿入されることになる。詳細については、構造化文書作成支援モジュール１４０の処理で後述する。
さらに、操作受付モジュール１３０は、操作者の操作によって要素が指定された場合に、その指定された要素に下位要素が複数ある場合は、その下位要素を選択可能に表示し、操作者の操作によって指定された下位要素を第１の要素（指定された要素）とするようにしてもよい。詳細については、図２５、図２６を用いて後述する。
【００２７】
構造化文書作成支援モジュール１４０は、選択範囲取得モジュール１４２、要素取得モジュール１４４、要素挿入モジュール１４６、構造検証モジュール１４８、要素移動モジュール１５０を有しており、構造化文書作成モジュール１００と接続されている。
【００２８】
選択範囲取得モジュール１４２は、構造化文書作成モジュール１００によって表示装置に表示された表示領域内の構造化文書、平文の文書に対して、操作受付モジュール１３０が受け付けた操作者の操作によって選択された範囲の開始位置及び終了位置を取得する。そして、その開始位置と終了位置に囲まれる文字列を取得する。
【００２９】
要素取得モジュール１４４は、選択範囲取得モジュール１４２によって取得された文字列に対して、指定された第１の要素を取得する。
要素挿入モジュール１４６は、選択範囲取得モジュール１４２によって取得された文字列を挿入する文書内の位置である挿入先を取得する。
【００３０】
要素移動モジュール１５０は、要素取得モジュール１４４によって取得された第１の要素は文字列を要素として有することができるか否かをスキーマ内の定義に基づいて判断し、できないと判断した場合は、文字列を要素として有することができるその第１の要素の下位要素である第２の要素をそのスキーマ内から探索し、選択範囲取得モジュール１４２によって取得された文字列を有するその第２の要素を生成する。例えば、「かきくけこ」という文字列が選択され、その文字列の要素として「ｌｉｓｔ」（第１の要素）が指定された場合、図３に例示のスキーマ３００では、「ｌｉｓｔ」は直接、文字列を有することができないので、スキーマ３００から「ｌｉｓｔ」の下位要素である「ｔｅｘｔ」（第２の要素）を探索し、「かきくけこ」という文字列を有する「ｔｅｘｔ」の要素を生成する。つまり、「＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞」を生成する。
なお、要素取得モジュール１４４によって取得された第１の要素は文字列を要素として有することができるか否かを判断する際に、できると判断した場合は、その第１の要素を挿入要素とする。例えば、前述の例では、文字列の要素として「ｔｅｘｔ」（第１の要素）が指定された場合、図３に例示のスキーマ３００では、「ｔｅｘｔ」は文字列を有することができるので、「かきくけこ」という文字列を有する「ｔｅｘｔ」の要素を生成する。つまり、「＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞」を生成する。
【００３１】
そして、要素移動モジュール１５０は、第１の要素と第２の要素の間に必要となる要素をスキーマ内から探索し、その必要となる要素を第１の要素と第２の要素の間に補完することによって挿入要素を生成し、その挿入要素を要素挿入モジュール１４６によって取得された挿入先に移動する。例えば、前述の例では、第１の要素「ｌｉｓｔ」と第２の要素「ｔｅｘｔ」の間に必要となる要素は、スキーマ３００では「ｌｉ」である。そこで、「ｌｉ」を「ｌｉｓｔ」と「ｔｅｘｔ」の間に補完して、挿入要素を生成する。つまり、挿入要素として「＜ｌｉｓｔ＞＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞＜／ｌｉｓｔ＞」を生成する。この挿入要素を挿入先に移動する。
なお、第１の要素と第２の要素の間に必要となる要素をスキーマ内から探索した結果、必要となる要素がない場合、つまり、第２の要素の直下が第１の要素であることが文書構造定義内の定義として許されている場合、その第２の要素をそのまま挿入要素とする。例えば、第１の要素が「ｌｉ」であり、第２の要素が「ｔｅｘｔ」の場合は、「ｌｉ」と「ｔｅｘｔ」の間には他に要素が必要ないので、挿入要素として「＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞」を生成することになる。
【００３２】
構造検証モジュール１４８は、要素移動モジュール１５０によって挿入要素を要素挿入モジュール１４６によって取得された挿入先に移動することが、スキーマ内での定義の違反になるか否かを判断する。スキーマ内での定義の違反になるか否かを判断としては、要素挿入モジュール１４６によって取得された挿入先にある要素が、スキーマ内での定義にしたがって挿入要素を有することができるか否かを判断すればよい。例えば、挿入先の要素が「ｔｅｘｔ」である場合は、その「ｔｅｘｔ」は、挿入要素「＜ｌｉｓｔ＞＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞＜／ｌｉｓｔ＞」を有することができない。
そして、要素移動モジュール１５０は、構造検証モジュール１４８によって違反していると判断された場合は、挿入先の位置の前方又は後方で挿入要素を挿入可能な位置を探索し、その挿入可能な位置に挿入要素を挿入する。例えば、前述の例では、挿入先の位置から前方又は後方に向けて、「＜ｌｉｓｔ＞＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞＜／ｌｉｓｔ＞」を挿入できる位置を探索して、探索できた場合は、その位置に挿入する。
【００３３】
さらに、要素移動モジュール１５０は、その探索の結果、挿入先の位置の前方及び後方で挿入要素を挿入可能な位置がなかった場合は、その挿入要素の上位要素をスキーマ内から探索し、その第２の要素を有する上位要素を新たな挿入要素として生成する。
そして、構造検証モジュール１４８は、要素移動モジュール１５０によって挿入要素（第２の要素の上位要素を含む挿入要素）を要素挿入モジュール１４６によって取得された挿入先に移動することが、スキーマ内での定義の違反になるか否かを判断する。その後は、要素移動モジュール１５０による挿入処理、構造検証モジュール１４８による判断処理が繰り返されることになる。
なお、挿入できる位置を探索できなかった場合は、挿入できない旨を提示する。例えば、エラーの旨を表示装置に表示する。
【００３４】
図２は、本実施の形態による処理例を示すフローチャートである。
処理の概要としては、構造化文書又は平文の文書に対して、操作者の操作によって、文字列が選択され、次に挿入したい構造が選択され、挿入したい位置（以下の例では、選択した文字列の位置）が選択される。本実施の形態は、操作者が選択した文字列を要素値として認識し、挿入した要素と要素値の間に必要な要素をスキーマ３００に沿って挿入し、そのスキーマ構造にしたがった構造化の支援を行う。また、挿入した要素が文書内でスキーマ違反にならない位置に、要素を移動する。
【００３５】
ステップＳ２０２では、選択範囲取得モジュール１４２が、セレクションの範囲内の文字列を取得する。つまり、操作者の操作によって選択された範囲の文字列を取得する。
ステップＳ２０４では、操作受付モジュール１３０が、文書構造定義（スキーマ）に定義されている要素の一覧を表示する。
ステップＳ２０６では、要素取得モジュール１４４が、操作者が選択した要素（要素Ａとする、前述の第１の要素に該当する）を取得する。さらに、要素挿入モジュール１４６が、ステップＳ２０２で取得した文字列を挿入する位置（挿入位置）を取得する。
【００３６】
ステップＳ２０８では、要素移動モジュール１５０が、文字列をくくる形で要素Ａを挿入する。文字列をくくる形でとは、具体的には「＜要素名＞」と「＜／要素名＞」によって文字列を挟むことである。
ステップＳ２１０では、要素移動モジュール１５０が、要素Ａは文字列という要素値を有することができるか否かを判断し、できる場合はステップＳ２１８へ進み、それ以外の場合はステップＳ２１２へ進む。
ステップＳ２１２では、要素移動モジュール１５０が、文字列という要素値を有することが可能な要素Ａの下位要素（要素Ｂ）があるか否かを判断し、ある場合はステップＳ２１４へ進み、それ以外の場合はステップＳ２２８へ進む。
ステップＳ２１４では、要素移動モジュール１５０が、文字列をくくる形で要素Ｂを挿入する。
ステップＳ２１６では、要素移動モジュール１５０が、要素Ａと要素Ｂの間に必要な要素をうめる。そして、ステップＳ２１８へ進む。
【００３７】
ステップＳ２１８では、構造検証モジュール１４８が、スキーマ違反が発生しているか否かを判断し、発生している場合はステップＳ２２０へ進み、それ以外の場合は処理を終了する（ステップＳ２９９）。
ステップＳ２２０では、スキーマ違反が発生している要素を挿入先の前・後に移動できないか否かを判断し、移動できない場合はステップＳ２２４へ進み、それ以外の場合はステップＳ２２２へ進む。
ステップＳ２２２では、要素移動モジュール１５０が、（下位要素も含め）要素の位置を前／後に移動する。そして、ステップＳ２１８へ戻る。
ステップＳ２２４では、要素移動モジュール１５０が、上位要素を挿入可能であるか否かを判断し、可能である場合はステップＳ２２６へ進み、それ以外の場合はステップＳ２２８へ進む。
ステップＳ２２６では、要素移動モジュール１５０が、上位要素を挿入する。そして、ステップＳ２１８へ戻る。
ステップＳ２２８では、構造化文書作成支援モジュール１４０が、要素の挿入を取り消す。そして、処理を終了する（ステップＳ２９９）。
【００３８】
以下、具体的な例を用いて説明する。
＜具体例１＞
まず、文書構造定義記憶モジュール１２０内に記憶されているスキーマの例を示す。図３は、スキーマ３００の例を示す説明図である。スキーマ３００内には、「ｂｏｏｋ」、「ａｒｔｉｃｌｅ」、「ｔｉｔｌｅ」、「ｓｕｂｔｉｔｌｅ」、「ｔｅｘｔ」、「ｐａｒａｇｒａｐｈ」等の要素が定義されており、それら要素間の関係も定義されている。例えば、「ｂｏｏｋ」の下位にできる要素として「ａｒｔｉｃｌｅ」があること（スキーマ３００内の６〜９行目参照）、「ａｒｔｉｃｌｅ」の下位にできる要素として「ｔｉｔｌｅ」、「ｓｕｂｔｉｔｌｅ」、「ｐａｒａｇｒａｐｈ」があること（スキーマ３００内の１３〜１８行目参照）、「ｐａｒａｇｒａｐｈ」の下位にできる要素として「ｔｅｘｔ」、「ｌｉｓｔ」があること（スキーマ３００内の２２〜２６行目参照）、「ｌｉｓｔ」の下位にできる要素として「ｌｉ」があること（スキーマ３００内の３０〜３３行目参照）、「ｌｉ」の下位にできる要素として「ｔｅｘｔ」があること（スキーマ３００内の３７〜４０行目参照）が、スキーマ３００を解析することによってわかる。前述のように、「ｅｌｅｍｅｎｔ  ｎａｍｅ＝“  ”」の「“」と「”」で囲まれたものが、要素である。そして、要素間の上位、下位の関係は、「ｅｌｅｍｅｎｔ  ｒｅｆ」の関係を辿ればよい。
そして、文字列を有することができるのは、「ｔｉｔｌｅ」、「ｓｕｂｔｉｔｌｅ」、「ｔｅｘｔ」の要素であること（スキーマ３００内の１６，１７、４０行目等参照）も、スキーマ３００を解析することによってわかる。これは、要素の定義内に、「ｔｙｐｅ＝”ｘｓ：ｓｔｒｉｎｇ”」があるか否かによって判断すればよい。
【００３９】
次に、構造化文書記憶モジュール１１０内に記憶されている構造化文書の例を示す。図４は、構造化文書４００の例を示す説明図である。例えば、文字列「タイトル」を含む「ｔｉｔｌｅ」の要素、文字列「あいうえおかきくけこさしすせそ」を含む「ｔｅｘｔ」と「ｐａｒａｇｒａｐｈ」の要素等がある。構造化文書４００は、スキーマ３００にしたがうものとする。
次に、スタイル表示領域に、構造化文書作成モジュール１００が構造化文書４００にスタイルシートを適用して表示する表示文書５００の例を示す。図５は、表示文書５００の例を示す説明図である。表示文書５００内には、文字列５１０が表示されている。
【００４０】
図６は、表示文書６００にメニュー６２０が表示された例を示す説明図である。表示文書６００内の選択範囲６１０を操作者の操作によって選択した状態で、要素挿入コマンド（選択した文字列に要素を付与して、その位置に挿入する処理）を実行すると、メニュー６２０が表示される。メニュー６２０内は、スキーマ３００内から要素を収集して、表示したものである。ここで、操作者は、「ｌｉｓｔの挿入」を選択したとする。
図７は、編集後の表示文書７００の例を示す説明図である。図５の例に示した表示文書５００の状態から、文字列７２０（文字列「かきくけこ」）が要素「ｌｉｓｔ」として表示されている。また、文字列５１０（文字列「あいうえおかきくけこさしすせそ」）は、選択範囲６１０（文字列「かきくけこ」）が移動したことにより、文字列７１０（文字列「あいうえおさしすせそ」）に変更されている。
図８は、編集後の構造化文書８００の例を示す説明図である。図４の例に示した構造化文書４００の状態から、＜ｌｉｓｔ＞＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞＜／ｌｉｓｔ＞が＜ｔｅｘｔ＞あいうえおさしすせそ＜／ｔｅｘｔ＞の後に挿入されている。
【００４１】
この処理の概要について、以下に説明する。
（１−１）操作者の選択操作によって選択された文字列がｌｉｓｔ要素内に挿入される。具体的には、「＜ｌｉｓｔ＞かきくけこ＜／ｌｉｓｔ＞」を生成する（ステップＳ２０８）。
（１−２）スキーマ３００内の定義からｌｉｓｔ要素は文字列という要素値を有することができないので、ｌｉｓｔ要素の下位要素のなかから要素値を有することが可能なｔｅｘｔ要素を挿入する。具体的には、「＜ｌｉｓｔ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉｓｔ＞」の構造を生成する（ステップＳ２１４）。
【００４２】
（１−３）ｔｅｘｔ要素とｌｉｓｔ要素の間に必要なｌｉ要素を補完する。具体的には、「＜ｌｉｓｔ＞＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞＜／ｌｉｓｔ＞」の構造を作成する（ステップＳ２１６）。つまり、スキーマ３００内の定義では、ｌｉｓｔ要素はｌｉ要素のみを有しており、直下にｔｅｘｔ要素を有することはできないので、必要なｌｉ要素を補完することになる。
（１−４）スキーマ３００内の定義から「＜ｌｉｓｔ＞＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞＜／ｌｉｓｔ＞」の構造は、挿入先である元の「かきくけこ」があった位置（ｔｅｘｔ要素の下位）には存在できない（ステップＳ２１８でＹｅｓ）ので、ｔｅｘｔ要素の後方で挿入可能な位置を探索する（ステップＳ２２０の判断処理における探索）。
（１−５）スキーマ３００内の定義からｔｅｘｔ要素の下位として挿入可能なので、移動する（ステップＳ２２２）。この状態では、スキーマ違反は生じていない（ステップＳ２１８でＮｏ）ので終了する。
【００４３】
＜具体例２＞
次に、構造化文書９００を編集対象とした場合の例について説明する。図９は、構造化文書９００の例を示す説明図である。構造化文書９００は、構造化文書記憶モジュール１１０内に記憶されている。構造化文書９００に対応するスキーマはスキーマ３００である。
次に、スタイル表示領域に、構造化文書作成モジュール１００が構造化文書９００にスタイルシートを適用して表示する表示文書１０００の例を示す。図１０は、表示文書１０００の例を示す説明図である。表示文書１０００内には、文字列１０１０が表示されている。
【００４４】
図１１は、表示文書１１００にメニュー１１２０が表示された例を示す説明図である。表示文書１１００内の選択範囲１１１０を操作者の操作によって選択した状態で、要素挿入コマンドを実行すると、メニュー１１２０が表示される。メニュー１１２０内は、スキーマ３００内から要素を収集して、表示したものである。ここで、操作者は、「ｌｉの挿入」を選択したとする。
図１２は、編集後の表示文書１２００の例を示す説明図である。図１０の例に示した表示文書１０００の状態から、文字列１２２０（文字列「かきくけこ」）が要素「ｌｉ」として表示されている。また、文字列１０１０（文字列「あいうえおかきくけこさしすせそ」）は、選択範囲１１１０（文字列「かきくけこ」）が移動したことにより、文字列１２１０（文字列「あいうえおさしすせそ」）に変更されている。
図１３は、編集後の構造化文書１３００の例を示す説明図である。図９の例に示した構造化文書９００の状態から、＜ｌｉｓｔ＞＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞＜／ｌｉｓｔ＞が＜ｔｅｘｔ＞あいうえおさしすせそ＜／ｔｅｘｔ＞の後に挿入されている。
【００４５】
この処理の概要について、以下に説明する。
（２−１）操作者の選択操作によって選択された文字列がｌｉ要素内に挿入される。具体的には、「＜ｌｉ＞かきくけこ＜／ｌｉ＞」を生成する（ステップＳ２０８）。
（２−２）スキーマ３００内の定義からｌｉ要素は文字列という要素値を有することができないので、ｌｉ要素の下位要素のなかから要素値を有することが可能なｔｅｘｔ要素を挿入する。具体的には、「＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞」の構造を生成する（ステップＳ２１４）。
【００４６】
（２−３）ｔｅｘｔ要素とｌｉ要素の間に必要な要素を補完する。ただし、この場合は、必要な要素はない（必要な要素（実際は何もなし）を補完する）。具体的には、「＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞」の構造のままである（ステップＳ２１６）。
（２−４）スキーマ３００内の定義から「＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞」の構造は、挿入先である元の「かきくけこ」があった位置（ｔｅｘｔ要素の下位）には存在できない（ステップＳ２１８でＹｅｓ）ので、ｔｅｘｔ要素の後方で挿入可能な位置を探索する（ステップＳ２２０の判断処理における探索）。
【００４７】
（２−５）スキーマ３００内の定義からｔｅｘｔ要素の後方には挿入可能な位置がないので、前方を探索する（ステップＳ２２０の判断処理における探索）。
（２−６）前方にも後方にも存在可能な個所がない（ステップＳ２２０でＹｅｓ）ので、スキーマ３００内の定義からｌｉ要素の上位要素（ここでは、ｌｉｓｔ要素）が挿入可能である（ステップＳ２２４でＹｅｓ）ので、ｌｉ要素の上位要素であるｌｉｓｔ要素を挿入し、「＜ｌｉｓｔ＞＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞＜／ｌｉｓｔ＞」を生成する（ステップＳ２２６）。
【００４８】
（２−７）スキーマ３００内の定義から「＜ｌｉｓｔ＞＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞＜／ｌｉｓｔ＞」の構造は、挿入先である元の「かきくけこ」があった位置（ｔｅｘｔ要素の下位）には存在できない（ステップＳ２１８でＹｅｓ）ので、ｔｅｘｔ要素の後方で挿入可能な位置を探索する（ステップＳ２２０の判断処理における探索）。
（２−８）スキーマ３００内の定義からｔｅｘｔ要素の下位として挿入可能なので、移動する（ステップＳ２２２）。この状態では、スキーマ違反は生じていない（ステップＳ２１８でＮｏ）ので終了する。
【００４９】
＜具体例３＞
次に、平文の文書を編集対象とした場合の例について説明する。文書表示領域に、構造化文書作成モジュール１００が平文の文書を表示する表示文書１４００の例を示す。図１４は、表示文書１４００の例を示す説明図である。表示文書１４００内には、文字列１４１０が表示されている。この場合の平文の文書の内容は、平文であるので表示文書１４００内の表示内容と同等のものである。また、この平文の文書は、構造化文書記憶モジュール１１０内に記憶されており、対応するスキーマはスキーマ３００である。
【００５０】
図１５は、表示文書１５００にメニュー１５２０が表示された例を示す説明図である。表示文書１５００内の選択範囲１５１０を操作者の操作によって選択した状態で、要素挿入コマンドを実行すると、メニュー１５２０が表示される。メニュー１５２０内は、スキーマ３００内から要素を収集して、表示したものである。ここで、操作者は、「ｌｉｓｔの挿入」を選択したとする。
【００５１】
（３−１）操作者の選択操作によって選択された文字列がｌｉｓｔ要素内に挿入される。具体的には、「＜ｌｉｓｔ＞かきくけこ＜／ｌｉｓｔ＞」を生成する（ステップＳ２０８）。
（３−２）スキーマ３００内の定義からｌｉｓｔ要素は文字列という要素値を有することができないので、ｌｉｓｔ要素の下位要素のなかから要素値を有することが可能なｔｅｘｔ要素を挿入する。具体的には、「＜ｌｉｓｔ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉｓｔ＞」の構造を生成する（ステップＳ２１４）。
（３−３）ｔｅｘｔ要素とｌｉｓｔ要素の間に必要なｌｉ要素を補完する。具体的には、「＜ｌｉｓｔ＞＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞＜／ｌｉｓｔ＞」の構造を作成する（ステップＳ２１６）。つまり、スキーマ３００内の定義では、ｌｉｓｔ要素はｌｉ要素のみを有しており、直下にｔｅｘｔ要素を有することはできないので、必要なｌｉ要素を補完することになる。
図１６は、この状態における構造化文書（作成途中）１６００の例を示す説明図である。文字列「かきくけこ」の部分が構造化されている。
【００５２】
（３−４）スキーマ３００内の定義から文書中では、「＜ｌｉｓｔ＞＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞＜／ｌｉｓｔ＞」の構造は、挿入先である元の「かきくけこ」があった位置には存在できず（ステップＳ２１８でＹｅｓ）、その後方で挿入可能な位置もない（ステップＳ２２０でＹｅｓ）が、上位要素を補完することができる（ステップＳ２２４でＹｅｓ）ので、上位に構造を補う（ステップＳ２２６）。つまり、ｌｉｓｔ要素の上位にｐａｒａｇｒａｐｈ要素（スキーマ３００の２６行目でｌｉｓｔ要素をｒｅｆとしている）、ａｒｔｉｃｌｅ要素（スキーマ３００の１８行目でｐａｒａｇｒａｐｈ要素をｒｅｆとしている）、ｂｏｏｋ要素（スキーマ３００の９行目でａｒｔｉｃｌｅ要素をｒｅｆとしている）を補完する。具体的には、図１７に例示の構造化文書（作成途中）１７００のようになる。
【００５３】
（３−５）ここで、（３−４）で作成した構造では、スキーマ３００内の定義からａｒｔｉｃｌｅ要素の下位に必須要素であるｔｉｔｌｅ要素がないため、ｔｉｔｌｅ要素を挿入する（ステップＳ２２６）。なお、スキーマ３００の１７行目で“ｍｉｎＯｃｃｕｒｓ＝”０””となっているため、ｓｕｂｔｉｔｌｅ要素は、必須要素ではない。具体的には、図１８に例示の構造化文書（作成途中）１８００のようになる。
【００５４】
（３−６）スキーマ３００内の定義から、ｂｏｏｋ要素以下の構造は、現状の位置には存在できない（ステップＳ２１８でＹｅｓ）ので、後方で挿入可能な位置を探索する（ステップＳ２２０の判断処理における探索）。スキーマ３００内の定義から「さしすせそ」の後方に存在可能なので（文字列中でなければ存在可能）なので、ｂｏｏｋ要素以下の構造を「さしすせそ」の後方に移動する（ステップＳ２２２）。具体的には、図１９に例示の構造化文書（作成途中）１９００のようになる。
【００５５】
（３−７）「あいうえおさしすせそ」という文字列が未構造化（ステップＳ２１８でＹｅｓ、ステップＳ２２０でＹｅｓ、ステップＳ２２４でＹｅｓ）なので、この文字列の構造化を実施する（ステップＳ２２６）。スキーマ３００で定義されている要素のうち、文字列という要素値を有する要素を挿入する。スキーマ３００内の定義では、ｔｅｘｔ要素が要素値を有することができる要素なので、ｔｅｘｔ要素を挿入する。具体的には、図２０に例示の構造化文書（作成途中）２０００のようになる。
【００５６】
（３−８）スキーマ３００内の定義から「＜ｔｅｘｔ＞あいうえおさしすせそ＜／ｔｅｘｔ＞」の構造は、ｂｏｏｋ要素の前方には存在できない（ステップＳ２１８でＹｅｓ）ので、後方で存在可能な位置を探索する（ステップＳ２２０の判断処理における探索）。スキーマ３００内の定義からｌｉｓｔ要素の上位要素として存在可能なので、移動する（ステップＳ２２２）。なお、この位置は、探索した結果、ｔｅｘｔ要素を最初に挿入できる位置である。また、この状態では、スキーマ違反は生じていない（ステップＳ２１８でＮｏ）ので終了する。具体的には、図２１に例示の構造化文書２１００のようになる。
図２２は、編集後の表示文書２２００の例を示す説明図である。これは、文書表示領域（スタイル表示領域）に、構造化文書作成モジュール１００が構造化文書２１００にスタイルシートを適用して表示する表示文書２２００の例を示すものである。
【００５７】
＜具体例４＞
次に、平文の文書を編集対象とした場合の例について説明する。文書表示領域に、構造化文書作成モジュール１００が平文の文書を表示する表示文書２３００の例を示す。図２３は、表示文書２３００の例を示す説明図である。表示文書２３００内には、文字列２３１０が表示されている。この場合の平文の文書の内容は、平文であるので表示文書２３００内の表示内容と同等のものである。また、この平文の文書は、構造化文書記憶モジュール１１０内に記憶されており、対応するスキーマはスキーマ３００である。
【００５８】
図２４は、表示文書２４００にメニュー２４２０が表示された例を示す説明図である。表示文書２４００内の選択範囲２４１０を操作者の操作によって選択した状態で、要素挿入コマンドを実行すると、メニュー２４２０が表示される。メニュー２４２０内は、スキーマ３００内から要素を収集して、表示したものである。
【００５９】
（４−１）ここで、操作者は、「ａｒｔｉｃｌｅの挿入」を選択したとする。
挿入可能な構造は、以下の４つとなる。つまり、図２に例示のフローチャートにおいて、ステップＳ２０８において、スキーマ３００内の定義では指定された要素Ａに下位要素が複数ある場合である。
（ａ）＜ｂｏｏｋ＞＜ａｒｔｉｃｌｅ＞＜ｔｉｔｌｅ＞かきくけこ＜／ｔｉｔｌｅ＞＜／ａｒｔｉｃｌｅ＞＜／ｂｏｏｋ＞
（ｂ）＜ｂｏｏｋ＞＜ａｒｔｉｃｌｅ＞＜ｐａｒａｇｒａｐｈ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｐａｒａｇｒａｐｈ＞＜／ａｒｔｉｃｌｅ＞＜／ｂｏｏｋ＞
（ｃ）＜ｂｏｏｋ＞＜ａｒｔｉｃｌｅ＞＜ｓｕｂｔｉｔｌｅ＞かきくけこ＜／ｓｕｂｔｉｔｌｅ＞＜／ａｒｔｉｃｌｅ＞＜／ｂｏｏｋ＞
（ｄ）＜ｂｏｏｋ＞＜ａｒｔｉｃｌｅ＞＜ｐａｒａｇｒａｐｈ＞＜ｌｉｓｔ＞＜ｌｉ＞＜ｔｅｘｔ＞かきくけこ＜／ｔｅｘｔ＞＜／ｌｉ＞＜／ｌｉｓｔ＞＜／ｐａｒａｇｒａｐｈ＞＜／ａｒｔｉｃｌｅ＞＜／ｂｏｏｋ＞
このように、要素Ａに下位要素が複数ある場合、操作者が挿入したい構造を選択できるように、図２５の例に示すように、さらに下位のメニュー２５３０を表示し、操作者が選択した構造を挿入可能とする。図２５は、表示文書２５００にメニュー２５２０、メニュー２５３０が表示された例を示す説明図である。つまり、操作者の操作によって、メニュー２５２０内の選択メニュー（ａｒｔｉｃｌｅ挿入）２５２５が選択された場合は、メニュー２５３０を表示する。
【００６０】
（４−２）図２６の例に示すように、操作者の操作によってメニュー２６４０内の構造が選択された場合、実際に挿入するとどのような構造（表示）になるかをプレビュー表示するようにしてもよい。例えば、選択メニュー（ａｒｔｉｃｌｅ＞ｔｉｔｌｅ挿入）２６４５が選択されると、図２６の例のようにプレビュー表示する。図２６は、表示文書２６００にメニュー２６３０、メニュー２６４０が表示され、選択メニュー（ａｒｔｉｃｌｅ＞ｔｉｔｌｅ挿入）２６４５が選択された例を示す説明図である。つまり、「かきくけこ」をｔｉｔｌｅ要素として表示している。これは、前述の処理を行うことによって実現可能であるが、プレビュー表示をするためのものであるので、前述の処理を行っても確定せずに、仮の処理として編集結果を構造化文書として文書構造定義記憶モジュール１２０に格納するわけではない。そして、メニュー２６４０内の構造の選択が完了した場合（例えば、メニュー２６４０内の構造をクリックした場合等）に、その編集結果を文書構造定義記憶モジュール１２０に格納する。また、表示文書２６００内の構造で要素の候補が１つである場合は、同等のプレビュー表示を行うようにしてもよい。
【００６１】
なお、本実施の形態としてのプログラムが実行されるコンピュータのハードウェア構成は、図２７に例示するように、一般的なコンピュータであり、具体的にはパーソナルコンピュータ、サーバーとなり得るコンピュータ等である。つまり、具体例として、処理部（演算部）としてＣＰＵ２７０１を用い、記憶装置としてＲＡＭ２７０２、ＲＯＭ２７０３、ＨＤ２７０４を用いている。ＨＤ２７０４として、例えばハードディスクを用いてもよい。構造化文書作成モジュール１００、操作受付モジュール１３０、構造化文書作成支援モジュール１４０、選択範囲取得モジュール１４２、要素取得モジュール１４４、要素挿入モジュール１４６、構造検証モジュール１４８、要素移動モジュール１５０等のプログラムを実行するＣＰＵ２７０１と、そのプログラムやデータを記憶するＲＡＭ２７０２と、本コンピュータを起動するためのプログラム等が格納されているＲＯＭ２７０３と、補助記憶装置であるＨＤ２７０４と、キーボード、マウス、タッチパネル等に対する利用者の操作に基づいてデータを受け付ける受付装置２７０６と、ＣＲＴ、液晶ディスプレイ等の出力装置２７０５と、ネットワークインタフェースカード等の通信ネットワークと接続するための通信回線インタフェース２７０７、そして、それらをつないでデータのやりとりをするためのバス２７０８により構成されている。これらのコンピュータが複数台互いにネットワークによって接続されていてもよい。
【００６２】
前述の実施の形態のうち、コンピュータ・プログラムによるものについては、本ハードウェア構成のシステムにソフトウェアであるコンピュータ・プログラムを読み込ませ、ソフトウェアとハードウェア資源とが協働して、前述の実施の形態が実現される。
なお、図２７に示すハードウェア構成は、１つの構成例を示すものであり、本実施の形態は、図２７に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア（例えばＡＳＩＣ等）で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続しているような形態でもよく、さらに図２７に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、特に、パーソナルコンピュータの他、情報家電、複写機、ファックス、スキャナ、プリンタ、複合機（スキャナ、プリンタ、複写機、ファックス等のいずれか２つ以上の機能を有している画像処理装置）などに組み込まれていてもよい。
【００６３】
前述の実施の形態においては、要素が存在できる位置の探索として後方を先に探索するようにしているが、前方を先に探索するようにしてもよい。また、前述の実施の形態では、探索した結果、最初に発見した位置を挿入位置としているが、後方と前方の両方を探索して、両方に存在可能な位置を発見した場合は、より移動距離の少ない方を挿入位置として採用するようにしてもよい。
なお、各モジュールの処理内容として背景技術で説明した技術を採用してもよい。
【００６４】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通などのために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク（ＤＶＤ）であって、ＤＶＤフォーラムで策定された規格である「ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭ等」、ＤＶＤ＋ＲＷで策定された規格である「ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等」、コンパクトディスク（ＣＤ）であって、読出し専用メモリ（ＣＤ−ＲＯＭ）、ＣＤレコーダブル（ＣＤ−Ｒ）、ＣＤリライタブル（ＣＤ−ＲＷ）等、ブルーレイ・ディスク（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ（登録商標））、光磁気ディスク（ＭＯ）、フレキシブルディスク（ＦＤ）、磁気テープ、ハードディスク、読出し専用メモリ（ＲＯＭ）、電気的消去及び書換可能な読出し専用メモリ（ＥＥＰＲＯＭ（登録商標））、フラッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリーカード等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、あるいは無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して
記録されていてもよい。また、圧縮や暗号化など、復元可能であればどのような態様で記録されていてもよい。
【符号の説明】
【００６５】
１００…構造化文書作成モジュール
１１０…構造化文書記憶モジュール
１２０…文書構造定義記憶モジュール
１３０…操作受付モジュール
１４０…構造化文書作成支援モジュール
１４２…選択範囲取得モジュール
１４４…要素取得モジュール
１４６…要素挿入モジュール
１４８…構造検証モジュール
１５０…要素移動モジュール
【図１】
0005760868.tif 000002
【図２】
0005760868.tif 000003
【図３】
0005760868.tif 000004
【図４】
0005760868.tif 000005
【図５】
0005760868.tif 000006
【図６】
0005760868.tif 000007
【図７】
0005760868.tif 000008
【図８】
0005760868.tif 000009
【図９】
0005760868.tif 000010
【図１０】
0005760868.tif 000011
【図１１】
0005760868.tif 000012
【図１２】
0005760868.tif 000013
【図１３】
0005760868.tif 000014
【図１４】
0005760868.tif 000015
【図１５】
0005760868.tif 000016
【図１６】
0005760868.tif 000017
【図１７】
0005760868.tif 000018
【図１８】
0005760868.tif 000019
【図１９】
0005760868.tif 000020
【図２０】
0005760868.tif 000021
【図２１】
0005760868.tif 000022
【図２２】
0005760868.tif 000023
【図２３】
0005760868.tif 000024
【図２４】
0005760868.tif 000025
【図２５】
0005760868.tif 000026
【図２６】
0005760868.tif 000027
【図２７】
0005760868.tif 000028