(57)【要約】【課題】複数の要素を階層的に記述する文書を木構造に変換する処理の途中で、記憶容量が不足して変換後の木構造のオブジェクトを記憶できずにエラーが発生する前に、処理状態に応じて処理を停止することができる情報処理装置、情報処理方法、及びプログラムを提供する。【解決手段】ＸＭＬ文書を入力する。入力したＸＭＬ文書を解析し、その解析結果に基づいて、解析された要素をノードとする部分木を作成し、作成した部分木を第１記憶部１４に記憶する処理を繰り返す。これにより複数の部分木により構成されたＤＯＭツリーが作成される。この繰り返しの間に、予め定められた停止条件が成立したと判断した場合には、一旦処理を停止し、既に第１記憶部１４に格納されているＤＯＭツリーのノードを削除条件を満たすように削除して処理を再開する。【選択図】        図５
2005011183.tif 000002
【特許請求の範囲】
【請求項１】
複数の要素が階層的に記述された文書を入力する入力手段と、
前記入力手段により入力された文書を解析する解析処理と、前記解析処理の解析結果に基づいて、前記文書を構成する各要素をノードとする木構造で表現したオブジェクトを作成する作成処理と、前記作成処理により作成されたオブジェクトを記憶する記憶処理と、を繰り返す処理手段と、
予め定められた停止条件が成立したか否かを判断する判断手段と、
前記判断手段により前記停止条件が成立したと判断された場合に、前記解析処理、前記作成処理、及び前記記憶処理の少なくとも１つが停止されるように前記処理手段を制御する制御手段と、
を含む情報処理装置。
【請求項２】
前記判断手段は、前記解析処理の解析量が所定の量に達した場合、前記作成処理の作成量が所定の量に達した場合、及び、予め指定された要素が前記解析処理で検出された場合、の少なくともいずれかの場合に、前記停止条件が成立したと判断する請求項１記載の情報処理装置。
【請求項３】
前記停止条件の成立後、前記記憶されたオブジェクトのノードを削除する削除手段を更に含む請求項１または請求項２記載の情報処理装置。
【請求項４】
前記削除手段は、前記停止条件の成立後、外部から指示を受けた場合に、前記記憶されたオブジェクトのノードを削除する請求項３記載の情報処理装置。
【請求項５】
前記削除手段は、ノードを削除する際に、
階層が深いノード及び該ノードより上位のノードを優先的に削除する、
参照回数の少ない要素を起点とする木を構成するノードを優先的に削除する、
最後に参照されたときからの経過時間が長い要素を起点とする木を構成するノードを優先的に削除する、
他の要素から参照されている要素を起点とする木を構成するノード以外のノードを優先的に削除する、
予め指定された要素を起点とする木を構成するノードを優先的に削除する、
予め定義された集合に属する要素毎に削除する、
予め定められた優先順位に従って削除する、
外部から指定された要素を起点とする木を構成するノードを優先的に削除する、
の少なくとも１つを実行する請求項３または請求項４記載の情報処理装置。
【請求項６】
前記制御手段は、前記削除手段により削除されたノードの情報を、前記記憶処理で記憶する記憶領域とは別の記憶領域に記憶するように更に制御する請求項３乃至請求項５のいずれか１項記載の情報処理装置。
【請求項７】
前記制御手段は、外部から指示を受けた場合に、前記別の記憶領域に記憶するように制御する請求項６記載の情報処理装置。
【請求項８】
前記制御手段は、前記削除手段により削除されたノードの情報をテキストデータとして記憶するように制御する請求項６または請求項７記載の情報処理装置。
【請求項９】
前記制御手段は、複数の同じ要素名、または複数の同じ属性名が存在する場合には、これら要素名または属性名を対応付けられた番号に置換えて記憶するように制御する請求項６乃至請求項８のいずれか１項記載の情報処理装置。
【請求項１０】
予め定められた再開条件が成立したか否かを判断する再開条件判断手段を更に含み、
前記制御手段は、前記停止条件の成立後、前記再開条件判断手段により前記再開条件が成立したと判断された場合に、前記停止を解除し、停止している処理が再開されるように前記処理手段を制御する請求項１乃至請求項９のいずれか１項記載の情報処理装置。
【請求項１１】
前記再開条件判断手段は、外部から再開の指示を受けた場合、及び前記記憶処理により記憶された前記オブジェクトの記憶量が所定の量以下となった場合、の少なくとも一方の場合に、前記再開条件が成立したと判断する請求項１０記載の情報処理装置。
【請求項１２】
前記処理手段は、予め指定された要素が前記解析処理で検出された場合には、該要素及び該要素に従属する要素については前記作成処理を行わない請求項１乃至請求項１１のいずれか１項記載の情報処理装置。
【請求項１３】
前記処理手段の記憶処理は、前記作成処理を行わなかった要素及び該要素に従属する要素の情報を、前記作成されたオブジェクトを記憶する記憶領域とは別の記憶領域に記憶する請求項１２記載の情報処理装置。
【請求項１４】
複数の要素が階層的に記述された文書を入力する入力工程と、
前記入力工程により入力された文書を解析する解析処理と、前記解析処理の解析結果に基づいて、前記文書を構成する各要素をノードとする木構造で表現したオブジェクトを作成する作成処理と、前記作成処理により作成されたオブジェクトを記憶する記憶処理と、を繰り返す処理工程と、
予め定められた停止条件が成立したか否かを判断する判断工程と、
前記判断工程により前記停止条件が成立したと判断された場合に、前記解析処理、前記作成処理、及び前記記憶処理の少なくとも１つを停止する停止工程と、
を含む情報処理方法。
【請求項１５】
前記停止条件の成立後、前記記憶されたオブジェクトのノードを削除する削除工程を更に含む請求項１４記載の情報処理方法。
【請求項１６】
前記削除工程により削除されたノードの情報を、前記記憶処理で記憶する記憶領域とは別の記憶領域に記憶する記憶工程を更に含む請求項１５記載の情報処理方法。
【請求項１７】
予め定められた再開条件が成立したか否かを判断する再開条件判断工程と、
前記停止条件の成立後、前記再開条件判断工程により前記再開条件が成立したと判断された場合に、前記停止を解除し、停止している処理を再開する再開工程と、
を更に含む請求項１４乃至請求項１６のいずれか１項記載の情報処理方法。
【請求項１８】
コンピュータに、
複数の要素が階層的に記述された文書を入力する入力工程と、
前記入力工程により入力された文書を解析する解析処理と、前記解析処理の解析結果に基づいて、前記文書を構成する各要素をノードとする木構造で表現したオブジェクトを作成する作成処理と、前記作成処理により作成されたオブジェクトを記憶する記憶処理と、を繰り返す処理工程と、
予め定められた停止条件が成立したか否かを判断する判断工程と、
前記判断工程により前記停止条件が成立したと判断された場合に、前記解析処理、前記作成処理、及び前記記憶処理の少なくとも１つを停止する停止工程と、
を実行させるためのプログラム。
【請求項１９】
前記停止条件の成立後、前記記憶されたオブジェクトのノードを削除する削除工程を更に含む請求項１８記載のプログラム。
【請求項２０】
前記削除工程により削除されたノードの情報を、前記記憶処理で記憶する記憶領域とは別の記憶領域に記憶する記憶工程を更に含む請求項１９記載のプログラム。
【請求項２１】
予め定められた再開条件が成立したか否かを判断する再開条件判断工程と、
前記停止条件の成立後、前記再開条件判断工程により前記再開条件が成立したと判断された場合に、前記停止を解除し、停止している処理を再開する再開工程と、
を更に含む請求項１８乃至請求項２０のいずれか１項記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の要素が階層的に記述された文書を処理する情報処理装置、情報処理方法、及びプログラムに係り、特に該文書を構成する各要素をノードとする木構造で表現したオブジェクトを作成する情報処理装置、情報処理方法、及びプログラムに関するものである。
【０００２】
【従来の技術】
計算機あるいはアプリケーションによってばらばらであったデータ形式を、異なる計算機やアプリケーションでも使用できるようにするための統一規格として、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）が知られている。ＸＭＬは、複数の要素を階層的に記述する構造化文書の代表的な規格である。
【０００３】
ＸＭＬ文書のような構造化文書をアプリケーションで操作するためのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）として、ＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）が知られている。ＤＯＭは、構造化文書を木構造のオブジェクトとして扱うためのＡＰＩである。
【０００４】
構造化文書をＤＯＭに変換することにより、アプリケーションは、構造化文書の木構造を認識でき、木をたどって必要な要素にアクセスすることができる。
【０００５】
しかし、構造化文書をＤＯＭに変換する場合、構造化文書のサイズが大きいほど、変換後の木構造のオブジェクトが大きくなり、これを記憶するために多くの記憶容量が必要となる。また、階層が深い場合にも、階層構造を表すための記憶容量が多く必要となる。従って、木構造に変換しても容量不足により記憶装置に格納できずに、エラーとなって処理が中断する、或いは格納できたとしてもアクセス効率が悪くなってしまう、等の問題が発生する。
【０００６】
必要な記憶容量を削減するための装置としては、構造化文書の階層を浅くすることにより動作メモリ量を削減し、データアクセス効率を改善する装置（例えば、特許文献１を参照。）や、複数の要素を、それらの位置関係を示す情報と共に一つの要素として合成する装置（例えば、特許文献２を参照。）が知られている。
【０００７】
【特許文献１】
特開２００２−２９７５６９号公報
【特許文献２】
特開２００２−１０８８５０号公報
【０００８】
【発明が解決しようとする課題】
しかしながら、上述した従来の装置は、実際の処理状態（例えば、オブジェクトの作成量等）を判断することなく処理する装置であるため、必要なだけ動作記憶容量を削減できない場合がある。従って、木構造に変換しても容量不足により記憶装置に格納できずにエラーとなって処理が中断する、という問題や、格納できたとしてもアクセス効率が悪くなってしまう、という問題は依然として解消されない。
【０００９】
本発明は、上述した問題を解決するために提案されたものであり、複数の要素を階層的に記述する文書を木構造に変換する処理の途中で、記憶容量が不足して変換後の木構造のオブジェクトを記憶できずにエラーが発生する前に、処理状態に応じて処理を停止することができる情報処理装置、情報処理方法、及びプログラムを提供することを目的とする。
【００１０】
【課題を解決するための手段】
上記目的を達成するために、本発明の情報処理装置は、複数の要素が階層的に記述された文書を入力する入力手段と、前記入力手段により入力された文書を解析する解析処理と、前記解析処理の解析結果に基づいて、前記文書を構成する各要素をノードとする木構造で表現したオブジェクトを作成する作成処理と、前記作成処理により作成されたオブジェクトを記憶する記憶処理と、を繰り返す処理手段と、予め定められた停止条件が成立したか否かを判断する判断手段と、前記判断手段により前記停止条件が成立したと判断された場合に、前記解析処理、前記作成処理、及び前記記憶処理の少なくとも１つが停止されるように前記処理手段を制御する制御手段と、を含んで構成されている。
【００１１】
入力手段は、複数の要素が階層的に記述された文書を入力する。複数の要素が階層的に記述された文書は、例えば、ＸＭＬ文書等に代表される構造化文書とすることができる。
【００１２】
処理手段は、解析処理と、作成処理と、記憶処理とを繰り返して行う。解析処理は、入力手段により入力された文書を解析する処理である。例えば、入力された文書を上から順に読み込みながら、文書に記述された各要素の階層構造を解析するようにすることができる。
【００１３】
作成処理は、解析処理の解析結果に基づいて、入力した文書を構成する各要素をノード（節点）とする木構造で表現したオブジェクトを作成する処理である。
【００１４】
記憶処理は、作成処理により作成されたオブジェクトを記憶する。オブジェクトを記憶するための記憶媒体は、特に限定されず、例えば、メインメモリとして一般的に用いられるＲＡＭとすることもできる。
【００１５】
判断手段は、予め定められた停止条件が成立したか否かを判断する。例えば、前記解析処理の解析量が所定の量に達した場合、前記作成処理の作成量が所定の量に達した場合、及び、予め指定された要素が前記解析処理で検出された場合、の少なくともいずれかの場合に、前記停止条件が成立したと判断することができる。
【００１６】
制御手段は、判断手段により停止条件が成立したと判断された場合に、解析処理、作成処理、及び記憶処理の少なくとも１つが停止されるように処理手段を制御する。
【００１７】
このように、停止条件が成立したと判断した場合には、解析処理、作成処理、及び記憶処理の少なくとも１つが停止されるように処理手段を制御するようにしたため、記憶容量が不足して、作成された木構造のオブジェクトを記憶できずにエラーが発生する前に、処理手段の解析処理、作成処理、及び記憶処理の少なくとも１つを停止することができる。
【００１８】
更に、本発明の情報処理装置は、前記停止条件の成立後、前記記憶されたオブジェクトのノードを削除する削除手段を更に含んで構成することもできる。
【００１９】
前記削除手段は、前記停止条件の成立後、外部から指示を受けた場合に、前記記憶されたオブジェクトのノードを削除するようにすることもできる。
【００２０】
すなわち、削除手段は、外部から、例えば、作成されたオブジェクトを参照或いは操作するアプリケーションから削除するように指示を受けた場合に、削除を行うことができる。
【００２１】
前記削除手段は、ノードを削除する際に、階層が深いノード及び該ノードより上位のノードを優先的に削除する、参照回数の少ない要素を起点とする木を構成するノードを優先的に削除する、最後に参照されたときからの経過時間が長い要素を起点とする木を構成するノードを優先的に削除する、他の要素から参照されている要素を起点とする木を構成するノード以外のノードを優先的に削除する、予め指定された要素を起点とする木を構成するノードを優先的に削除する、予め定義された集合に属する要素毎に削除する、予め定められた優先順位に従って削除する、外部から指定された要素を起点とする木を構成するノードを優先的に削除する、の少なくとも１つを実行するようにすることもできる。
【００２２】
例えば、階層が深いノードを含む木は、階層が深い分だけ、階層を表すための記憶容量が多く必要となる。従って、階層が深いノード及び該ノードより上位のノードを優先的に削除するようにすることが好ましい。
【００２３】
例えば、過去、作成されたオブジェクトを参照するアプリケーションにより参照された回数が少ない要素の場合には、今後も参照される可能性が低い。このため、参照回数の少ない要素を起点とする木を構成するノードを優先的に削除するのが好ましい。なお、ここでいう「参照」は、アプリケーションがオブジェクトを操作する場合も含む。
【００２４】
例えば、作成されたオブジェクトを参照するアプリケーションにより最後に参照されたときから長い時間が経過している場合には、今後も参照される可能性が低い。このため、最後に参照されたときからの経過時間が長い要素を起点とする木を構成するノードを優先的に削除するのが好ましい。なお、同様に、ここでいう「参照」は、アプリケーションがオブジェクトを操作する場合も含む。
【００２５】
例えば、ある要素の情報を他の要素も使う場合、すなわち、ある要素を他の要素が参照する場合には、参照先の要素が削除されてしまうと、ある要素を参照する他の要素は参照先の情報が使えなくなってしまう。このため、他の要素から参照されている要素を起点とする木を構成するノード以外のノードを優先的に削除するのが好ましい。
【００２６】
例えば、予め参照される可能性が低い要素がわかっている場合には、予めその要素を指定しておき、該要素を起点とする木を構成するノードを優先的に削除することができる。
【００２７】
例えば、作成されたオブジェクトを参照するアプリケーションが提供するサービス毎に、参照する要素が異なる場合には、各サービスと各サービスが参照する要素（サービスに属する要素）を定義しておき、サービス毎に削除することもできる。このように、予め定義された集合に属する要素毎に削除することができる。
【００２８】
例えば、予め参照される可能性が低い要素、或いは参照される可能性が高い要素がわかっている場合には、予め優先順位を定めておけば、該優先順位に従って削除することができる。
【００２９】
例えば、予め削除する要素を指定した場合には、該指定された要素を起点とする木を構成するノードを優先的に削除することができる。
【００３０】
また、前記制御手段は、前記削除手段により削除されたノードの情報を、前記記憶処理で記憶する記憶領域とは別の記憶領域に記憶するように更に制御することもできる。
【００３１】
前記制御手段は、外部から指示を受けた場合に、前記別の記憶領域に記憶するように制御することもできる。
【００３２】
前記制御手段は、前記削除手段により削除されたノードの情報をテキストデータとして記憶するように制御することもできる。
【００３３】
すなわち、削除されたノードの情報を、木構造のオブジェクトのまま記憶せずにテキストデータとして記憶することにより、記憶するデータサイズが小さくなる。
【００３４】
前記制御手段は、複数の同じ要素名、または複数の同じ属性名が存在する場合には、これら要素名または属性名を対応付けられた番号に置換えて記憶するように制御することもできる。
【００３５】
すなわち、複数の同じ要素名を対応付けられた番号に置換えて格納することにより、記憶するデータサイズが小さくなる。また、要素名に限らず、要素に付されている属性（要素の特性を示す情報）の名前（属性名）についても、同じ名前が複数存在する場合には、同様にして記憶するようにすることができる。
【００３６】
本発明の情報処理装置は、予め定められた再開条件が成立したか否かを判断する再開条件判断手段を更に含み、前記制御手段は、前記停止条件の成立後、前記再開条件判断手段により前記再開条件が成立したと判断された場合に、前記停止を解除し、停止している処理が再開されるように前記処理手段を制御するようにすることもできる。
【００３７】
再開条件判断手段は、予め定められた再開条件が成立したか否かを判断する。例えば、外部から再開の指示を受けた場合、及び前記記憶処理により記憶された前記オブジェクトの記憶量が所定の量以下となった場合、の少なくとも一方の場合に、前記再開条件が成立したと判断するようにすることもできる。
【００３８】
制御手段は、停止条件の成立後、再開条件判断手段により再開条件が成立したと判断された場合に、停止を解除し、停止している処理が再開されるように処理手段を制御する。
【００３９】
前記処理手段は、予め指定された要素が前記解析処理で検出された場合には、該要素及び該要素に従属する要素については前記作成処理を行わないようにすることもできる。
【００４０】
作成処理を行わないように指定する要素は、例えば、作成されたオブジェクトを参照・操作するアプリケーションが参照・操作する頻度の低い要素とすることができる。
【００４１】
前記処理手段の記憶処理は、前記作成処理を行わなかった要素及び該要素に従属する要素の情報を、前記作成されたオブジェクトを記憶する記憶領域とは別の記憶領域に記憶するようにすることもできる。
【００４２】
本発明の情報処理方法は、複数の要素が階層的に記述された文書を入力する入力工程と、前記入力工程により入力された文書を解析する解析処理と、前記解析処理の解析結果に基づいて、前記文書を構成する各要素をノードとする木構造で表現したオブジェクトを作成する作成処理と、前記作成処理により作成されたオブジェクトを記憶する記憶処理と、を繰り返す処理工程と、予め定められた停止条件が成立したか否かを判断する判断工程と、前記判断工程により前記停止条件が成立したと判断された場合に、前記解析処理、前記作成処理、及び前記記憶処理の少なくとも１つを停止する停止工程と、を含んで構成されている。
【００４３】
この情報処理方法によれば、停止条件が成立したと判断した場合には、解析処理、作成処理、及び記憶処理の少なくとも１つを停止するようにしたため、記憶容量が不足して、作成された木構造のオブジェクトを記憶できずにエラーが発生する前に、解析処理、作成処理、及び記憶処理の少なくとも１つを停止することができる。
【００４４】
本発明の情報処理方法は、前記停止条件の成立後、前記記憶されたオブジェクトのノードを削除する削除工程を更に含んで構成することもできる。
【００４５】
本発明の情報処理方法は、前記削除工程により削除されたノードの情報を、前記記憶処理で記憶する記憶領域とは別の記憶領域に記憶する記憶工程を更に含んで構成することもできる。
【００４６】
本発明の情報処理方法は、予め定められた再開条件が成立したか否かを判断する再開条件判断工程と、前記停止条件の成立後、前記再開条件判断工程により前記再開条件が成立したと判断された場合に、前記停止を解除し、停止している処理を再開する再開工程と、を更に含んで構成することもできる。
【００４７】
本発明のプログラムは、コンピュータに、複数の要素が階層的に記述された文書を入力する入力工程と、前記入力工程により入力された文書を解析する解析処理と、前記解析処理の解析結果に基づいて、前記文書を構成する各要素をノードとする木構造で表現したオブジェクトを作成する作成処理と、前記作成処理により作成されたオブジェクトを記憶する記憶処理と、を繰り返す処理工程と、予め定められた停止条件が成立したか否かを判断する判断工程と、前記判断工程により前記停止条件が成立したと判断された場合に、前記解析処理、前記作成処理、及び前記記憶処理の少なくとも１つを停止する停止工程と、を実行させる。
【００４８】
このようなプログラムをコンピュータに実行させることにより、停止条件が成立したと判断した場合には、解析処理、作成処理、及び記憶処理の少なくとも１つを停止するようにしたため、記憶容量が不足して、作成された木構造のオブジェクトを記憶できずにエラーが発生する前に、解析処理、作成処理、及び記憶処理の少なくとも１つを停止することができる。
【００４９】
なお、プログラムを記憶する記憶媒体は、特に限定されず、ＲＯＭや、ＣＤ−ＲＯＭやＤＶＤディスク、光磁気ディスクやＩＣカード、あるいはハードディスク等であってもよいし、電気通信回線上の搬送波のような伝送媒体であってもよい。
【００５０】
本発明のプログラムは、前記停止条件の成立後、前記記憶されたオブジェクトのノードを削除する削除工程を更に含んで構成することもできる。
【００５１】
本発明のプログラムは、前記削除工程により削除されたノードの情報を、前記記憶処理で記憶する記憶領域とは別の記憶領域に記憶する記憶工程を更に含んで構成することもできる。
【００５２】
本発明のプログラムは、予め定められた再開条件が成立したか否かを判断する再開条件判断工程と、前記停止条件の成立後、前記再開条件判断工程により前記再開条件が成立したと判断された場合に、前記停止を解除し、停止している処理を再開する再開工程と、を更に含んで構成することもできる。
【００５３】
【発明の実施の形態】
以下、本発明の好ましい実施の形態について図面を参照しながら詳細に説明する。
【００５４】
［第１の実施の形態］
図１（Ａ）は、本実施の形態に係る構造化文書処理システムの機能構成及び構造化文書処理システムで行われる処理を概念的に示した図である。図示されるように、テキスト形式で記述されたＸＭＬ文書３０が、本発明の情報処理装置としてのＸＭＬプロセッサ（ＸＭＬパーザ）１０に入力されると、ＸＭＬプロセッサ１０は、ＸＭＬ文書３０の各要素をノードとする木構造で表現したオブジェクト（ＤＯＭツリー４０）を作成する。上位ＸＭＬアプリケーション５０は、作成されたＤＯＭツリー４０を参照或いは操作することができる。。
【００５５】
図１（Ｂ）は、図１（Ａ）で示された構造化文書処理システムの機能構成及び構造化文書処理システムで行われる処理を更に詳細に示した図である。
【００５６】
（１）では、上位ＸＭＬアプリケーション５０がＸＭＬ文書３０を参照及び操作するために、ＤＯＭインタフェース６０を介して、ＸＭＬプロセッサ１０にＤＯＭツリー４０を作成するように指示を与える。
【００５７】
（２）では、指示を受けたＸＭＬプロセッサ１０は、ＸＭＬ文書３０を入力して解析する。
【００５８】
図２は、ＸＭＬ文書３０の一例を示している。図示されるようにＸＭＬ文書３０は、テキスト形式で、要素の始まりを示す開始タグ＜○○○＞と要素の終了を示す終了タグ＜／○○○＞により、複数の要素が階層的に記述されている。
【００５９】
具体的には、ＸＭＬプロセッサ１０は、図２に示されるようなＸＭＬ文書３０を上から順に読み込み、開始タグ及び終了タグを検出していくことにより、ＸＭＬ文書３０の各要素の階層構造を解析する。
【００６０】
更にＸＭＬプロセッサ１０は、解析結果に基づいて、ＤＯＭツリー４０を作成する。
【００６１】
図３は、図２のＸＭＬ文書３０を解析して作成されたＤＯＭツリー４０の一例を示している。図示されるように、各要素（Ｅｌｅｍｅｎｔ）が木構造のノード（節点）として構成されている（例えば、図のノード７０）。また、要素の内容、すなわち、開始タグと終了タグで挟まれた文字列（Ｔｅｘｔ）もノードとして構成されている（例えば、図のノード７２）。
【００６２】
なお、図３の▲１▼で示された部分が、図２の▲１▼のｓｃａｎ要素の記述に対応する部分木（全体の木の一部）である。また、図３の▲２▼で示された部分が、図２の▲２▼のｓｔｏｒａｇｅ要素の記述に対応する部分木である。
【００６３】
このように、ＤＯＭツリー４０は、複数の部分木により構成されている。
【００６４】
（３）では、上位ＸＭＬアプリケーション５０が、作成されたＤＯＭツリー４０をＤＯＭインタフェース６０を介して参照或いは操作する。
【００６５】
図４は、ＸＭＬプロセッサ１０の機能を実現するためのハードウェア資源としての情報処理装置１１の構成を示すブロック図である。
【００６６】
図示されるように、情報処理装置１１は、操作部１２、第１記憶部１４、入出力部１６、ＣＰＵ２０、ネットワークＩ／Ｆ２２、及びＲＯＭ２４、を含んで構成され、これらはバスにより相互に接続されている。
【００６７】
操作部１２は、例えばキーボード等により構成され、ユーザは操作部１２を用いて任意のデータを入力し、所定の操作を行う。
【００６８】
ネットワークＩ／Ｆ２２は、各種ネットワークに接続するためのインタフェースである。
【００６９】
ＲＯＭ２４は、ＸＭＬプロセッサ１０の機能としての、ＸＭＬ文書からＤＯＭツリーを作成するためのＤＯＭツリー作成処理ルーチンのプログラムが記憶されている。更にＲＯＭ２４には、ＸＭＬ文書を扱う上位ＸＭＬアプリケーション５０とＤＯＭインタフェース６０の機能を実現するためのプログラムも記憶されている。
【００７０】
ＣＰＵ２０は、ＲＯＭ２４等に記憶されたプログラムを実行することにより各種機能を実現する。
【００７１】
第１記憶部１４は、例えばＲＡＭにより構成され、作成されたＤＯＭツリー等を記憶する。
【００７２】
入出力部１６は、各種データを入出力するためのインタフェースである。入出力部１６には、第２記憶部１８が接続されている。第２記憶部１８は、例えば、第１記憶部１４に比してアクセススピードは遅いが、記憶容量が大きい記憶媒体、例えば、ハードディスク装置等とすることができる。
【００７３】
図１に示されたＸＭＬプロセッサ１０は、図４に示される情報処理装置１１をハードウェア資源とし、ＲＯＭ２４に記憶されたプログラムをソフトウェア資源として用いて実現される機能である。なお、上位ＸＭＬアプリケーション５０及びＤＯＭインタフェース６０も、同様にして実現される機能である。
【００７４】
以下、ＤＯＭツリー作成処理ルーチンを、図５を参照して説明する。
【００７５】
ステップ１００では、ＸＭＬプロセッサ１０は上位ＸＭＬアプリケーション５０からのＤＯＭツリー作成指示を受け、構造化文書（ここではＸＭＬ文書）を取得（入力）する。例えば、ＸＭＬ文書が記憶された記憶装置が第２記憶部１８である場合には、第２記憶部１８から入出力部１６を介して取得され、ネットワーク上の他のコンピュータシステムに記憶されている場合には、ネットワークＩ／Ｆ２２を介して取得される。
【００７６】
ステップ１０２では、取得したＸＭＬ文書を解析する。前述したように、開始タグ及び終了タグを順に検出することにより、これらタグで記述された要素毎にその構造と内容を解析する。
【００７７】
ステップ１０４では、ステップ１０２の解析結果に基づいて、木構造のオブジェクト（ＤＯＭツリー）を作成する。より詳しくは、解析された要素をノードとする部分木としてのＤＯＭツリーを作成する。
【００７８】
以下、この部分木を作成する処理については、部分木作成処理と呼称し、ＤＯＭツリー作成処理と区別して説明する。また、この部分木作成処理で作成されたＤＯＭツリーは、部分木と呼称することにより全体のＤＯＭツリーと区別して説明する。
【００７９】
ステップ１０６では、第１記憶部１４の空容量が不足しているか否かを判断する。ここで、空容量が不足していない、すなわち、ステップ１０４で作成された部分木を格納するのに十分な空容量があると判断した場合には、ステップ１０８で、作成された部分木を第１記憶部１４に格納する。ステップ１０６で、空容量が不足していると判断した場合には、ステップ１１０の第２記憶部格納処理に移行し、作成された部分木を第２記憶部１８に格納する。
【００８０】
図６は、第２記憶部格納処理の流れを示すフローチャートである。
【００８１】
ステップ２００では、第２記憶部１８の空容量が不足しているか否かを判断する。ここで、空容量が不足していないと判断した場合には、ステップ２０２で、作成された部分木をそのまま第２記憶部１８に格納する。また、空容量が不足していると判断した場合には、ステップ２０４に移行し、作成された部分木をテキストデータに変換して、データサイズを小さくする。変換後は、ステップ２０２に移行し、テキストデータに変換されたものを第２記憶部１８に格納する。
【００８２】
このように、作成された部分木を第１記憶部１４或いは第２記憶部１８に格納した後は、図５のステップ１１２に移行し、停止条件が成立したか否かを判断する。
【００８３】
停止条件は、予め設定されており、ここでは、ＤＯＭツリーを格納するための使用メモリ量を予め定めておき、ＤＯＭツリーの作成量（部分木の作成量の累積）が該定められた量に達した場合に停止条件が成立したと判断するように設定されている。使用メモリ量は、任意に設定可能である。
【００８４】
また、予め指定された要素がステップ１０２の解析処理中に検出された場合に、停止条件が成立したと判断されるように設定されていてもよい。この要素の指定も、予めユーザが任意に設定することができる。
【００８５】
更にまた、ＤＯＭツリーの作成量が予め定められた量に達した場合、及び、予め指定された要素が検出された場合、の少なくともいずれか一方の場合に、停止条件が成立したと判断されるように設定されていてもよい。
【００８６】
ステップ１１２で、停止条件は成立していないと判断した場合には、ステップ１１６に移行し、ＸＭＬ文書全体の解析が終了したか否かを判断する。
【００８７】
ステップ１１６でＸＭＬ文書全体の解析が終了していないと判断した場合には、ステップ１０２に戻り、更にＸＭＬ文書を読み込んで、次の開始タグ及び終了タグを検出することにより、ＸＭＬ文書の解析を続ける。
【００８８】
ステップ１１２で、停止条件が成立したと判断した場合には、ステップ１１４に移行し、停止条件成立時の処理を行う。
【００８９】
図７は、停止条件成立時の処理の流れを示すフローチャートである。
【００９０】
ステップ３００で、上位ＸＭＬアプリケーション５０に停止条件が成立した旨を通知する。なお、ここで、これまで作成したＤＯＭツリーを上位ＸＭＬアプリケーション５０に渡すこともできる。その場合には、ＸＭＬプロセッサ１０は上位ＸＭＬアプリケーション５０に対して、作成したＤＯＭツリーの格納場所をＤＯＭインタフェース６０を介して通知する形でＤＯＭツリーを渡す。
【００９１】
ステップ３０２で、上位ＸＭＬアプリケーション５０から削除要求を取得したか否かを判断する。削除要求を取得していないと判断した場合には、ステップ３０８に移行し、第２記憶部への格納要求を取得したか否かを判断する。ここで第２記憶部への格納要求を取得していないと判断した場合には、ステップ３０２に戻る。すなわち、ＸＭＬプロセッサ１０は、上位ＸＭＬアプリケーション５０からの要求を取得するまで待機状態を維持する。
【００９２】
ステップ３０２で、削除要求を取得したと判断した場合には、ステップ３０４に移行し、削除する要素（ノード）の検索を行う。
【００９３】
例えば、階層が深いノード及び該ノードより上位のノードを検索するようにし、該ノードが優先的に削除されるようにしてもよい。
【００９４】
以下、この検索処理について図８及び図９を参照しながら、詳細に説明する。図８は、元のＸＭＬ文書を示し、図９は、図８のＸＭＬ文書から作成されて第１記憶部１４に格納されているＤＯＭツリーを示している。
【００９５】
図９に示されるように、点線▲３▼で囲まれた部分木のａｕｔｈｏｒ要素は、同じ階層の他の要素ｐ、ｔｉｔｌｅと比較して、階層が深いノードを従属している。例えば、要素ノード（ｆｉｒｓｔ、ｌａｓｔ）やＴｅｘｔノード（ａａａ、ｂｂｂ、ｓｓｓｓ）は、他の要素ｐ、ｔｉｔｌｅを起点とする部分木の末端のノードの階層より深い。
【００９６】
従って、ここで削除の対象として検索されるノードは、点線▲３▼で囲まれた部分木のノードである。
【００９７】
このようなノードを削除対象とすることにより、浅い階層の部分木、すなわちデータサイズの小さい部分木を削除する場合に比べて、第１記憶部１４の空容量を増やすことができる。なお、後述するように、第１記憶部１４から削除したノードの情報を第２記憶部１８に格納しておき、必要に応じて第２記憶部１８から読み出して第１記憶部１４に展開することができるようにする場合には、大きいサイズの部分木を構成するノードを削除して格納する方が、小さいサイズの部分木を多く削除して格納する場合に比して、第２記憶部１８から読み出して第１記憶部１４に展開する処理回数を減らすことができ、装置の負荷を低減させることができる。
【００９８】
なお、上位ＸＭＬアプリケーション５０の削除要求に、削除する要素の指示が含まれていてもよい。これにより、上位ＸＭＬアプリケーション５０からの指示に基づいて削除する要素（ノード）の検索を行うことができる。
【００９９】
ステップ３０６で、検索したノードを第１記憶部１４から削除する。
【０１００】
また、削除要求を取得する代わりに、ステップ３０８で、第２記憶部格納要求を取得した場合には、ステップ３１０及びステップ３１２で、上述したステップ３０４及びステップ３０６と同様の処理を行った後、ステップ３１４の第２記憶部格納処理に移行し、削除したノードの情報を第２記憶部に格納する。第２記憶部１８に格納することにより、必要に応じて、削除したノードを第１記憶部１４に展開して用いることができる。第２記憶部格納処理の流れの詳細は前述した通りであるため、説明を省略する。
【０１０１】
ステップ３０６またはステップ３１４の処理の後は、ステップ３１６に移行し、第１記憶部１４に記憶されているＤＯＭツリーの記憶量が指定量以下になったか否かを判断する。指定量以下になっていないと判断した場合には、ステップ３００に戻り、上位ＸＭＬアプリケーション５０にＤＯＭツリーの記憶量が指定量以下になっていない旨を通知して、ステップ３０２以降の処理を繰り返す。ステップ３００からステップ３１６までの処理は、ステップ３１６で肯定判断されるまで繰り返される。
【０１０２】
ステップ３１６で、肯定判断した場合には、ステップ３１８で、上位ＸＭＬアプリケーション５０に対して、ＤＯＭツリーの記憶量が指定量以下になったことを通知する。
【０１０３】
ステップ３２０で、上位ＸＭＬアプリケーション５０から、処理を再開する要求（再開要求）を取得したか否かを判断する。再開要求を取得するまでは、待機が維持されるので、次の解析処理以降が停止される。再開要求を取得した場合には、図５のステップ１１６に戻り、解析処理を再開する。
【０１０４】
図５において、ステップ１１６で肯定判断されるまでは、ステップ１０２のからステップ１１６の処理が繰り返され、順に部分木が作成されて記憶される。
【０１０５】
ステップ１１６で肯定判断した場合には、ステップ１１８に移行し、作成したＤＯＭツリーを上位ＸＭＬアプリケーション５０に渡し、ＤＯＭツリー作成処理を終了する。なお、ここでは、上位ＸＭＬアプリケーション５０及びＤＯＭインタフェース６０はＸＭＬプロセッサ１０と同じハードウェア資源を用いて実現されているため、ＸＭＬプロセッサ１０は、上位ＸＭＬアプリケーション５０に、作成したＤＯＭツリーの格納場所をＤＯＭインタフェース６０を介して通知する形でＤＯＭツリーを渡す。
【０１０６】
以上説明したように、入力したＸＭＬ文書を解析する処理と、解析結果に基づいて部分木を作成する処理と、作成した部分木を第１記憶部１４に格納する処理とを繰り返す間に、停止条件が成立したと判断された場合には、少なくとも１つの処理を停止するようにしたため、第１記憶部１４の容量不足により、作成した部分木を格納できずにエラーが発生する前に、処理を停止することができる。
【０１０７】
また、停止条件が成立した後、第１記憶部１４に記憶されたＤＯＭツリーのノードを削除するようにしたため、第１記憶部１４が容量不足になる事態を防止できる。
【０１０８】
また、削除したノードの情報を、必要に応じて第２記憶部１８に格納するようにしたため、上位ＸＭＬアプリケーション５０の操作に必要なノードを削除した場合であっても、該ノードの情報は失われず、必要に応じて第２記憶部１８から読み出して第１記憶部１４に展開して用いることができる。
【０１０９】
また、停止条件が成立した後、第１記憶部１４に格納したＤＯＭツリーの記憶量が指定量以下となった場合に、停止状態を解除し、停止した処理を再開するようにしたため、ＸＭＬ文書全体について解析を行うことができ、処理が中断されたまま終了するような事態を防止できる。
【０１１０】
なお、削除処理は、上述した例に限定されず、例えば、予め定義された集合に属する要素毎に削除するようにしてもよい。更に、定義された集合毎に優先順位を定めておき、優先順位の高い（或いは低い）集合に属する要素から削除するようにしてもよい。集合を定義する方法として、例えば、取り扱う文書がＸＭＬ文書の場合には、ＸＭＬのＮａｍｅｓｐａｃｅという規格を採用することができる。
【０１１１】
Ｎａｍｅｓｐａｃｅは、要素がどの集合に属するかを指定するために用いられる。
【０１１２】
以下、図１０及び図１１を参照しながら、Ｎａｍｅｓｐａｃｅを用いて集合を定義し、定義した集合毎に優先順位を設けて削除する例について説明する。
【０１１３】
図１０は、Ｎａｍｅｓｐａｃｅを定義するテーブルの一例であり、例えば、上位ＸＭＬアプリケーションの起動時等にＸＭＬプロセッサ１０に登録される。Ｓｅｒｖｉｃｅ  ｎａｍｅ８０は、上位ＸＭＬアプリケーション５０が提供するサービス（すなわち、集合）を定義する。ｎａｍｅｓｐａｃｅ  Ｐｒｅｆｉｘ８２は、定義されたサービスと各要素を結びつけるための接頭辞であり、この接頭辞をＸＭＬ文書の開始タグ等に記述しておくことにより、各要素を接頭辞で表されるサービスに属する要素として関連付けることができる。ここで、ｎｏｎｅは、どのサービスにも属さないことを意味する。Ｐｒｉｏｒｉｔｙ８４は、優先順位を定義する。この項目を参照することにより、優先順位の高い（或いは低い）サービスの接頭辞が記述された要素を優先的に削除することができる。
【０１１４】
図１１は、定義された接頭辞を用いて記述されているＸＭＬ文書の一例を示している。
【０１１５】
図示されるように、ａという接頭辞が記述されている要素（例えば＜ａ：ａｃｔｉｏｎ＞及び＜／ａ：ａｃｔｉｏｎ＞で示される要素）は、ａ  ｓｅｒｖｉｃｅに属するとみなされる。また、ｂという接頭辞が記述されている要素（例えば、＜ｂ：ａｃｔｉｏｎ＞及び＜／ｂ：ａｃｔｉｏｎ＞で示される要素）は、ｂ  ｓｅｒｖｉｃｅに属するとみなされる。また、接頭辞の記述がない要素は、どのサービスにも属さないとみなされる。ここで、優先順位の低いサービスが優先的に削除されるように設定されている場合には、図１０に示されるテーブルに従い、接頭辞の記述のない要素ｄａｔｅのノードと該ノードに従属するノードが優先的に削除される。
【０１１６】
例えば、要素を印刷サービスに用いる場合には１度参照するとその後は参照されない場合が多いため、優先順位を低く設定して優先的に削除されるようにし、画面表示サービスに用いる場合には再度参照される可能性が高いため、優先順位を高く設定して削除されないようにすることができる。
【０１１７】
更に、削除処理は、このような例に限定されず、例えば、参照回数の少ない要素を起点とする部分木を構成するノードを優先的に削除するようにしてもよいし、最後に参照されたときからの経過時間が長い要素を起点とする部分木を構成するノードを優先的に削除するようにしてもよい。参照回数が少ない要素、或いは最後に参照されたときからの経過時間が長い要素は、上位ＸＭＬアプリケーション５０が参照或いは操作する可能性が低いとみなせるため、これらを削除の対象とすることが好ましい。このような削除処理を行う場合には、例えば、上位ＸＭＬアプリケーション５０がどの要素をいつ参照したか、という情報を所定のテーブルに登録しておき、このテーブルを参照することにより判断してもよい。
【０１１８】
また、他の要素から参照されている要素を起点とする部分木を構成するノードは削除されないようにすることが好ましい。例えば、ＸＭＬで用いられるＸＰａｔｈを用いて他の要素から参照されている要素については、削除対象から外すようにする。ＸＰａｔｈは、ＤＯＭツリーを構成するノードの位置情報を記述する言語である。ある要素の位置情報を示すＸｐａｔｈを、他の要素に保持させておけば、該Ｘｐａｔｈで指示された要素の内容を該他の要素が参照することができる。他の要素から参照されている要素を削除すると、削除された要素の内容を他の要素が参照できなくなるため、このような要素を起点とする部分木を構成するノードについては削除の対象としないことが好ましい。
【０１１９】
また、予め参照される可能性が低い要素がわかっている場合には、予めその要素を指定しておき、該要素を起点とする木を構成するノードを優先的に削除するようにしてもよい。
【０１２０】
また、要素毎に優先順位を定めておいてもよい。これにより所望のＤＯＭツリーを作成することができる。
【０１２１】
また、上位ＸＭＬアプリケーション５０から、削除する要素の指定があった場合には、該指定された要素を起点とする木を構成するノードを優先的に削除するようにすることができる。
【０１２２】
なお、削除処理は、これらのうち複数を実行してもよいし、いずれか１つを実行するようにしてもよい。
【０１２３】
また、このような削除の仕方は、予めＸＭＬプロセッサ１０に設定しておいてもよいし、上位ＸＭＬアプリケーション５０から指定されてもよいし、ユーザが任意に設定するようにしてもよい。
【０１２４】
［第２の実施の形態］
第１の実施の形態では、ＤＯＭツリーの作成量（部分木の作成量の累積）が所定の量に達した場合、或いは、予め指定された要素が検出された場合に、停止条件が成立したと判断されるように設定されている例について説明したが、本実施の形態では、ＤＯＭツリーの作成量に代えて、解析処理の解析量を用いる例について説明する。
【０１２５】
なお、本実施の形態におけるハードウェア構成及びソフトウェア構成は第１の実施の形態と同様であるため、説明を省略する。
【０１２６】
図１２は、本実施の形態に係るＤＯＭツリー作成処理ルーチンの流れを示したフローチャートである。
【０１２７】
本実施の形態では、ステップ４００の構造化文書取得処理、ステップ４０２の解析処理の後、ステップ４０４で、停止条件が成立したか否かを判断する。
【０１２８】
本実施の形態では、解析処理の解析量（累積）が所定の量に達した場合に、停止条件が成立したと判断されるように設定されている。ここでいう解析量は、ＸＭＬプロセッサ１０が読み込んで解析したＸＭＬ文書の量である。なお、該所定の量はユーザが予め任意に設定することができる。
【０１２９】
また、第１の実施の形態と同様に、予め指定された要素がステップ４０２の解析処理中に検出された場合に、停止条件が成立したと判断されるように設定されていてもよい。この要素の指定も、予めユーザが任意に設定することができる。
【０１３０】
更にまた、解析処理の解析量（累積）が所定の量に達した場合、及び、予め指定された要素が検出された場合、の少なくともいずれか一方の場合に、停止条件が成立したと判断されるように設定されていてもよい。
【０１３１】
ステップ４０４で、停止条件は成立していないと判断した場合には、ステップ４０８に移行し、ステップ４０２の解析結果に基づいて、部分木を作成する。
【０１３２】
ステップ４０４で、停止条件が成立したと判断した場合には、ステップ４０６に移行し、停止条件成立時の処理を行う。停止条件成立時の処理は、第１の実施の形態と同様であるため説明を省略する。
【０１３３】
停止条件成立時の処理後は、ステップ４０８に移行して、ステップ４０２の解析結果に基づいて、部分木の作成を再開する。
【０１３４】
ステップ４１０では、作成された部分木を第１記憶部１４に格納する。
【０１３５】
ステップ４１２では、ＸＭＬ文書全体の解析が終了したか否かを判断する。ここでＸＭＬ文書全体の解析が終了していないと判断した場合には、ステップ４０２に戻り、更にＸＭＬ文書を読み込んで、ＸＭＬ文書の解析を続ける。
【０１３６】
ステップ４１２でＸＭＬ文書全体の解析が終了したと判断した場合には、ステップ４１４に移行し、作成したＤＯＭツリーを上位ＸＭＬアプリケーション５０に渡し、ＤＯＭツリー作成処理を終了する。
【０１３７】
以上説明したように、停止条件が成立したか否かを、解析処理の解析量によって判断するようにしたため、部分木作成処理及び記憶処理前に、停止条件が成立したか否かを判断でき、部分木作成処理を停止して、停止条件成立時の処理を行い第１記憶部１４の空容量を増加させることができる。
【０１３８】
なお、停止条件の成立の判断は、第１の実施の形態及び第２の実施の形態で示した例に限らず、例えば、解析処理の解析量（累積）が所定の量に達した場合、ＤＯＭツリーの作成量が予め定められた量に達した場合、及び、予め指定された要素が検出された場合、の少なくともいずれかの場合に、停止条件が成立したと判断されるように設定されていてもよい。
【０１３９】
［第３の実施形態］
第１の実施の形態及び第２の実施の形態における停止条件成立時の処理では、ＸＭＬプロセッサ１０が上位ＸＭＬアプリケーション５０から削除要求や第２記憶部格納要求を取得した場合に、削除処理や第２記憶部への格納処理を行う例について説明したが、本実施の形態では、ＸＭＬプロセッサ１０により自動的に削除処理や第２記憶部への格納処理を行う例について説明する。
【０１４０】
図１３は、本実施の形態に係る停止条件成立時の処理の流れを示すフローチャートである。
【０１４１】
ステップ５００で、削除する要素（ノード）の検索を行う。
【０１４２】
ステップ５０２で、ステップ５００で検索されたノードを第１記憶部１４から削除する。なお、削除処理は、第１の実施の形態と同様に行うことができる。
【０１４３】
ステップ５０４で、削除したノードの情報を第２記憶部１８へ格納するか否かを判断する。例えば、第１記憶部１４から削除したノードが常に第２記憶部１８に格納されるように設定されていれば、ＸＭＬプロセッサ１０はステップ５０４で肯定判断し、ステップ５０６に移行して削除したノードについて第２記憶部格納処理を実行する。なお、ステップ５０６の第２記憶部格納処理の流れの詳細は、前述した通りであるため、説明を省略する。
【０１４４】
なお、予め指定されている要素についてのみ第２記憶部に格納するように設定されていてもよい。この場合には、該指定のある要素ノード及び該要素の内容を示すＴｅｘｔノードが削除された場合のみ、第２記憶部格納処理を実行する。
【０１４５】
また、第２記憶部１８への格納はいっさい行わないように設定されている場合には、ステップ５０４で常に否定判断し、ステップ５０８に移行する。
【０１４６】
ステップ５０８で、第１記憶部１４に記憶されているＤＯＭツリーの記憶量が指定量以下になったか否かを判断する。指定量以下になっていないと判断した場合には、ステップ５００に戻り、上述の処理を繰り返す。ステップ５００からステップ５０８までの処理は、ステップ５０８で肯定判断されるまで繰り返される。
【０１４７】
ステップ５０８で、肯定判断した場合には、ステップ５１０で、上位ＸＭＬアプリケーション５０に対して、ＤＯＭツリーの記憶量が指定量以下になったことを通知する。
【０１４８】
ステップ５２０で、上位ＸＭＬアプリケーション５０から、処理を再開する要求（再開要求）を取得したか否かを判断する。再開要求を取得するまでは、待機が維持されるので、次の処理（第１の実施の形態では解析処理、第２の実施の形態では部分木作成処理）以降が停止される。再開要求を取得した場合には、図５のステップ１１６或いは図１２のステップ４０８に戻り、処理を再開する。
【０１４９】
以上説明したように、停止条件成立時の処理を、上位ＸＭＬアプリケーション５０からの削除要求或いは第２記憶部格納要求を取得せずに、自動的に判断して削除処理及び格納処理を行うことができる。
【０１５０】
［第４の実施形態］
本実施の形態では、指定された要素については、停止条件が成立したか否かに拘らず、部分木を作成せずに元のＸＭＬ文書のテキスト形式のまま第２記憶部１８に格納する例について説明する。
【０１５１】
第１から第３の実施の形態におけるＤＯＭツリー作成処理ルーチンに、図１４に示されるステップを追加する。
【０１５２】
図５のステップ１０２、或いは図１２のステップ４０２の後、ステップ６００で、解析した要素が、部分木作成前にテキスト形式のまま第２記憶部１８へ格納するように指定されている要素か否かを判断する。
【０１５３】
ここで、否定判断した場合には、第２記憶部１８への格納を行わずに、図５のステップ１０４、或いは図１２のステップ４０４に移行する。
【０１５４】
ステップ６００で、肯定判断した場合には、ステップ６０２で、解析した要素を、テキスト形式のまま第２記憶部１８に格納する。格納後は、図５のステップ１１６、及び図１２のステップ４１２に移行する。
【０１５５】
このように、予め指定のある要素については、部分木を作成せずに第２記憶部に記憶するようにしたため、第１記憶部１４におけるＤＯＭツリーの記憶量を削減することができると共に、無駄な処理を省き、効率的にＤＯＭツリーを作成することができる。
【０１５６】
［第５の実施形態］
本実施の形態では、指定された要素については、停止条件が成立したか否かに拘らず、作成された部分木を常に第２記憶部１８に格納する例について説明する。
【０１５７】
第１から第３の実施の形態におけるＤＯＭツリー作成処理ルーチンに、図１５に示されるステップを追加する。
【０１５８】
図５のステップ１０６、或いは図１２のステップ４０８の後、ステップ７００で、部分木を作成した要素が予め第２記憶部１８へ格納するように指定されている要素か否かを判断する。
【０１５９】
ここで、否定判断した場合には、第２記憶部１８への格納を行わずに、図５のステップ１０８、或いは図１２のステップ４１０に移行する。
【０１６０】
ステップ７００で、肯定判断した場合には、ステップ７０２の第２記憶部格納処理に移行し、作成された部分木を第２記憶部１８に格納する処理を行う。第２記憶部格納処理は、第１の実施の形態と同様であるため説明を省略する。格納後は、図５のステップ１１６、及び図１２のステップ４１２に移行する。
【０１６１】
このように、予め指定のある要素については、停止条件が成立したか否かに拘らず、作成された部分木を第２記憶部に記憶するようにしたため、第１記憶部１４におけるＤＯＭツリーの記憶量を削減することができる。
【０１６２】
［第６の実施形態］
本実施の形態では、第２記憶部１８に同じ要素名を有する要素を複数格納する場合には、該同じ要素名に所定の番号を対応付けておき、該要素名を対応付けられた番号に置換えて記憶する例について説明する。
【０１６３】
図１６は、複数の同じ要素名が記述されたＸＭＬ文書の一例を示した図である。図示されるように、ｃａｔａｌｏｇ、ｂｏｏｋｎａｍｅという名前の要素が複数記述されている。
【０１６４】
図１７は、図１６のＸＭＬ文書を基に作成されたＤＯＭツリーを示した図である。
【０１６５】
ここで、ｃａｔａｌｏｇ、ｂｏｏｋｎａｍｅという要素名のそれぞれに所定の番号を対応付ける。図１８は、その対応付けを格納したテーブルの一例である。ｃａｔａｌｏｇという要素名には番号１が対応付けられ、ｂｏｏｋｎａｍｅという要素名には番号２が対応付けられている。ＸＭＬプロセッサ１０は、同じ名前の要素名が複数存在する場合には、該要素名に所定の番号を対応付け、このテーブルに逐次登録する。
【０１６６】
図１９は、図１８に示されたテーブルを用いて、各要素名を対応付けられた番号におきかえた状態を示している。図示されるように、ｃａｔａｌｏｇという要素名は番号１に置換えられ、ｂｏｏｋｎａｍｅという要素名は番号２に置換えられている。
【０１６７】
このように、複数の同じ要素名を対応付けられた番号に置換えて格納することにより、記憶量を削減することができる。
【０１６８】
なお、要素名に限らず、要素に付されている属性（要素の特性を示す情報）の名前（属性名）についても、同じ名前が複数存在する場合には、同様にしてテーブルを用いて所定の番号を対応付け、該番号に置換えて記憶するようにすることができる。
【０１６９】
【発明の効果】
以上説明したように、複数の要素が階層的に記述された文書を解析する解析処理と、解析処理の解析結果に基づいて、該文書を構成する各要素をノードとする木構造で表現したオブジェクトを作成する作成処理と、該作成処理により作成されたオブジェクトを記憶する記憶処理と、を繰り返す間に、予め定められた停止条件が成立したと判断された場合に、解析処理、作成処理、及び記憶処理の少なくとも１つが停止されるようにしたため、記憶容量が不足して、作成した木構造のオブジェクトを記憶できずにエラーが発生する前に、処理状態に応じて処理を停止することができる、という効果を奏する。
【図面の簡単な説明】
【図１】図１（Ａ）は、本実施の形態に係る構造化文書処理システムの機能構成と、構造化文書処理システムで行われる処理を概念的に示した図であり、図１（Ｂ）は、図１（Ａ）で示された構造化文書処理システムの機能構成と、構造化文書処理システムで行われる処理とを更に詳細に示した図である。
【図２】ＸＭＬ文書の一例を示した図である。
【図３】図２のＸＭＬ文書を解析して作成されたＤＯＭツリーの一例を示した図である。
【図４】ＸＭＬプロセッサの機能を実現するためのハードウェア資源としての情報処理装置の構成を示すブロック図である。
【図５】第１の実施の形態に係るＤＯＭツリー作成処理ルーチンの流れを示したフローチャートである。
【図６】第２記憶部格納処理の流れを示すフローチャートである。
【図７】停止条件成立時の処理の流れを示すフローチャートである。
【図８】ＸＭＬ文書の一例を示した図である。
【図９】図８のＸＭＬ文書から作成されて第１記憶部に格納されているＤＯＭツリーの一例を示した図である。
【図１０】Ｎａｍｅｓｐａｃｅを定義するテーブルの一例である。
【図１１】定義された接頭辞を用いて記述されているＸＭＬ文書の一例を示した図である。
【図１２】第２の実施の形態に係るＤＯＭツリー作成処理ルーチンの流れを示したフローチャートである。
【図１３】第３の実施の形態に係る停止条件成立時の処理の流れを示すフローチャートである。
【図１４】第４の実施の形態に係る追加ステップを示した図である。
【図１５】第５の実施の形態に係る追加ステップを示した図である。
【図１６】複数の同じ要素名が記述されたＸＭＬ文書の一例を示した図である。
【図１７】図１６のＸＭＬ文書を基に作成されたＤＯＭツリーを示した図である。
【図１８】要素名と番号との対応付けを格納したテーブルの一例である。
【図１９】図１８に示されたテーブルを用いて、各要素名を対応付けられた番号におきかえた状態を示した図である。
【符号の説明】
１０  ＸＭＬプロセッサ
１１  情報処理装置
１４  第１記憶部
１８  第２記憶部
２０  ＣＰＵ
２４  ＲＯＭ
５０  上位ＸＭＬアプリケーション
【図１】
2005011183.tif 000003
【図２】
2005011183.tif 000004
【図３】
2005011183.tif 000005
【図４】
2005011183.tif 000006
【図５】
2005011183.tif 000007
【図６】
2005011183.tif 000008
【図７】
2005011183.tif 000009
【図８】
2005011183.tif 000010
【図９】
2005011183.tif 000011
【図１０】
2005011183.tif 000012
【図１１】
2005011183.tif 000013
【図１２】
2005011183.tif 000014
【図１３】
2005011183.tif 000015
【図１４】
2005011183.tif 000016
【図１５】
2005011183.tif 000017
【図１６】
2005011183.tif 000018
【図１７】
2005011183.tif 000019
【図１８】
2005011183.tif 000020
【図１９】
2005011183.tif 000021