(57)【要約】構造化文書処理方法は、タグを含む構造化文書をテキストのままメモリに保持する構造化文書保持ステップと、前記構造化文書の文書構造情報を、前記構造化文書の各タグの位置と関連づけて前記メモリに保持する文書構造保持ステップと、処理要求に応じて、前記文書構造情報に従って前記構造化文書の木構造を辿って要素に関する情報を取得し、取得した情報に基づいて前記構造化文書の一部を取得する処理ステップとを含む。
2005006192.tif 000002
【特許請求の範囲】
【請求項１】
タグを含む構造化文書をテキストのままメモリ手段に保持する構造化文書保持ステップと、
該構造化文書の文書構造情報を、該構造化文書の各タグの位置と関連づけて該メモリ手段に保持する文書構造保持ステップと、
処理要求に応じて、該文書構造情報に従って該構造化文書の木構造を辿って要素に関する情報を取得し、取得した情報に基づいて該構造化文書の一部を取得する処理ステップとを含むことを特徴とする、構造化文書処理方法。
【請求項２】
該文書構造保持ステップは、該構造化文書の配列と同じ大きさの文書構造情報用配列を該メモリ手段に保持し、文書構造情報用配列において、該構造化文書の各タグの領域に対応する領域に該文書構造情報を格納することを特徴とする、請求の範囲第１項記載の構造化文書処理方法。
【請求項３】
該文書構造情報は、該木構造における各要素の上下左右の要素の位置情報を含むことを特徴とする、請求の範囲第２項記載の構造化文書処理方法。
【請求項４】
該文書構造情報は、終了タグ及び／又は開始タグの位置情報を含むことを特徴とする、請求の範囲第２項又は第３項記載の構造化文書処理方法。
【請求項５】
該文書構造情報は、各タグの長さを含むことを特徴とする、請求の範囲第２項〜第４項のいずれか１項記載の構造化文書処理方法。
【請求項６】
該文書構造情報は、該構造化文書の各タグの領域に対応する領域に、関連の強い要素間のリンクを付加されていることを特徴とする、請求の範囲第２項〜第５項のいずれか１項記載の構造化文書処理方法。
【請求項７】
該文書構造保持ステップは、該文書構造情報用配列において、該構造化文書の各要素に対応する領域に、該当要素の内容の全体又は一部を構成する文字列と同じ文字列の位置情報を格納することを特徴とする、請求の範囲第２項記載の構造化文書処理方法。
【請求項８】
該構造化文書保持ステップは、該構造化文書を予め決めたサイズの複数の分割部分に分割し、該構造化文書を該分割部分で保持することで、任意の分割部分の更新に伴う該任意の分割部分のサイズの変化を該分割部分の境界で吸収することを特徴とする、請求の範囲第１項記載の構造化文書処理方法。
【請求項９】
複数の処理依頼を同時に受け付けて、順に処理依頼をする排他管理ステップを更に含み、
該排他管理ステップが、受付けた処理が処理対象としている領域と他の処理が処理対象としている領域とが交差していないと判定すると、これらの処理を並行に実行することを特徴とする、請求の範囲第１項記載の構造化文書処理方法。
【請求項１０】
タグを含む構造化文書をテキストのまま保持する構造化文書保持部と、
該構造化文書の文書構造情報を、該構造化文書の各タグの位置と関連づけて保持する文書構造保持部と、
処理要求に応じて、該文書構造情報に従って該構造化文書の木構造を辿って要素に関する情報を取得し、取得した情報に基づいて該構造化文書の一部を取得する処理部を備えたことを特徴とする、構造化文書処理装置。
【請求項１１】
該文書構造保持部は、該構造化文書の配列と同じ大きさの文書構造情報用配列を保持し、文書構造情報用配列において、該構造化文書の各タグの領域に対応する領域に該文書構造情報を格納することを特徴とする、請求の範囲第１０項記載の構造化文書処理装置。
【請求項１２】
該文書構造情報は、該木構造における各要素の上下左右の要素の位置情報を含むことを特徴とする、請求の範囲第１１項記載の構造化文書処理装置。
【請求項１３】
該文書構造情報は、終了タグ及び／又は開始タグの位置情報を含むことを特徴とする、請求の範囲第１１項又は第１２項記載の構造化文書処理装置。
【請求項１４】
該文書構造情報は、各タグの長さを含むことを特徴とする、請求の範囲第１１項〜第１３項のいずれか１項記載の構造化文書処理装置。
【請求項１５】
該文書構造情報は、該構造化文書の各タグの領域に対応する領域に、関連の強い要素間のリンクを付加されていることを特徴とする、請求の範囲第１１項〜第１４項のいずれか１項記載の構造化文書処理装置。
【請求項１６】
該文書構造保持部は、該文書構造情報用配列において、該構造化文書の各要素に対応する領域に、該当要素の内容の全体又は一部を構成する文字列と同じ文字列の位置情報を格納することを特徴とする、請求の範囲第１１項記載の構造化文書処理装置。
【請求項１７】
該構造化文書保持部は、該構造化文書を予め決めたサイズの複数の分割部分に分割する分割部と、該構造化文書を該分割部分で保持する分割文書保持部と、該分割部分の分割文書保持部対する書き込み及び読み出しの制御、任意の分割部分更新に伴う任意の分割部分の再分割の制御、及び更新された分割部分の詰め直しの制御を行い、該任意の分割部分の更新に伴う該任意の分割部分のサイズの変化を該分割部分の境界で吸収する分割文書管理部とを有することを特徴とする、請求の範囲第１０項記載の構造化文書処理装置。
【請求項１８】
複数の処理依頼を同時に受け付けて、順に処理依頼をする排他管理部を更に備え、
該排他管理部が、受付けた処理が処理対象としている領域と他の処理が処理対象としている領域とが交差していないと判定すると、これらの処理を並行に実行することを特徴とする、請求の範囲第１０項記載の構造化文書処理装置。
【請求項１９】
コンピュータに構造化文書処理を行わせるコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体であって、該コンピュータプログラムは、
該コンピュータに、タグを含む構造化文書をテキストのまま保持させる構造化文書保持手順と、
該コンピュータに、該構造化文書の文書構造情報を、該構造化文書の各タグの位置と関連づけて保持させる文書構造保持手順と、
該コンピュータに、処理要求に応じて、該文書構造情報に従って該構造化文書の木構造を辿って要素に関する情報を取得させ、取得した情報に基づいて該構造化文書の一部を取得させる処理手順とを含むことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【請求項２０】
該文書構造保持手順は、該コンピュータに、該構造化文書の配列と同じ大きさの文書構造情報用配列を保持させ、文書構造情報用配列において、該構造化文書の各タグの領域に対応する領域に該文書構造情報を格納させることを特徴とする、請求の範囲第１９項記載のコンピュータ読み取り可能な記憶媒体。
【請求項２１】
該文書構造情報は、該木構造における各要素の上下左右の要素の位置情報を含むことを特徴とする、請求の範囲第２０項記載のコンピュータ読み取り可能な記憶媒体。
【請求項２２】
該文書構造情報は、終了タグ及び／又は開始タグの位置情報を含むことを特徴とする、請求の範囲第２０項又は第２１項記載のコンピュータ読み取り可能な記憶媒体。
【請求項２３】
該文書構造情報は、各タグの長さを含むことを特徴とする、請求の範囲第２０項〜第２２項のいずれか１項記載のコンピュータ読み取り可能な記憶媒体。
【請求項２４】
該文書構造情報は、該構造化文書の各タグの領域に対応する領域に、関連の強い要素間のリンクを付加されていることを特徴とする、請求の範囲第２０項〜第２３項のいずれか１項記載のコンピュータ読み取り可能な記憶媒体。
【請求項２５】
該文書構造保持手順は、該コンピュータに、該文書構造情報用配列において、該構造化文書の各要素に対応する領域に、該当要素の内容の全体又は一部を構成する文字列と同じ文字列の位置情報を格納させることを特徴とする、請求の範囲第２０項記載のコンピュータ読み取り可能な記憶媒体。
【請求項２６】
該構造化文書保持手順は、該コンピュータに、該構造化文書を予め決めたサイズの複数の分割部分に分割させ、該構造化文書を該分割部分で保持させることで、任意の分割部分の更新に伴う該任意の分割部分のサイズの変化を該分割部分の境界で吸収させることを特徴とする、請求の範囲第１９項記載のコンピュータ読み取り可能な記憶媒体。
【請求項２７】
該コンピュータプログラムは、該コンピュータに、複数の処理依頼を同時に受け付けて、順に処理依頼をさせる排他管理手順を更に含み、
該排他管理手順が、受付けた処理が処理対象としている領域と他の処理が処理対象としている領域とが交差していないと判定すると、該コンピュータに、これらの処理を並行に実行させることを特徴とする、請求の範囲第１９項記載のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】  本発明は、構造化文書処理方法及び装置並びに記憶媒体に係り、特に、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）やＳＧＭＬ（Ｓｔａｎｄａｒｄ  Ｇｅｎｅｒａｔｅｄ  Ｍａｒｋ−ｕｐ  Ｌａｎｇｕａｇｅ）等の構造化文書を処理する構造化文書処理方法及び装置、並びに、コンピュータにそのような構造化文書処理方法で構造化文書の処理を行わせるコンピュータプログラムが格納されたコンピュータ読み取り可能な記憶媒体に関する。
近年、インターネット等のネットワークを介して複数のシステム、企業、個人等が繋がれ、ＥＤＩ，ＥＣ、携帯電話サービスやデジタルテレビ向けのサービス、Ｗｅｂサービスといった、幅広いデータ交換サービスが行われるようになってきた。
このような状況に合わせて、計算機で扱うデータの形式を統一しようとする動きがある。つまり、このような動きは、計算機或いはアプリケーションによってばらばらであったデータ形式を、異なる計算機或いはアプリケーションでも使用可能にするためのものである。このデータ形式を統一するための規格は、ＸＭＬとして１９９８年２月にＷ３Ｃによって正式に勧告されている。ＸＭＬ規格は、同様の規格であるＳＧＭＬのサブセットになっている。又、ＸＭＬ文書をメモリ上のオブジェクトに展開し、そのオブジェクトを扱うインタフェースの規格であるＤＯＭも、１９９８年１０月にＷ３Ｃによって勧告されている。
【背景技術】  以下の説明では、ＸＭＬ規格に基づき、「〈」と「〉」で囲まれた文字列をタグ、「〈文字列〉」を開始タグ、「〈／文字列〉」を終了タグ、開始タグと終了タグで挟まれた文字列を要素、タグ内に記述される要素の名前を要素名、要素に対する付加情報を属性と呼ぶものとする。
構造化文書は、文書自身の中にタグを埋め込む形で、データ構造を記述する。データ構造をタグとして文書に埋め込んだ構成を取ることにより、データ構造の柔軟性及び拡張性が高くなる。又、タグを意味のあるテキストで記述することにより、それまで独立のシステムで扱っていたデータを他のシステムでも容易に扱うことが可能となる。
ＸＭＬ文書から、要素名、要素、属性等の内容を取得してユーザアプリケーションに渡したり、内容を変更、追加又は削除したりするＸＭＬプロセッサとして、ＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）プロセッサが広く使われている。
図１は、従来の構造化文書処理装置（ＤＯＭプロセッサ）の一例を示す機能ブロック図である。図１に示す機能ブロックの機能は、ＣＰＵ等のプロセッサ及びメモリからなる周知の基本構造により実現される。構造化文書処理装置は、展開部１、メモリ２及び処理部３からなる。展開部１及び処理部３の機能は、ＣＰＵにより実現される。図１に示すように、従来の構造化文書処理装置では、ＸＭＬ文書処理を行なう際には、先ず展開部１で構造化文書であるＸＭＬ文書１１の構造を解析し、オブジェクト保持部を構成するメモリ２上に展開する。図２は、構造化文書（ＸＭＬ文書）１１の一例を示す図であり、図３は、図２に示す構造化文書（ＸＭＬ文書）１１の展開を説明する図である。
ＸＭＬ文書１１は、図２に示すように直列のテキストであるが、展開部１により各要素毎に分離され、タグで記述されたデータ構造に従って図３に示すように展開されてメモリ２に格納される。図３では、ＸＭＬ文書１１が展開された木構造として図示されているが、メモリ２に実際に格納される情報には、各要素（ノード）について、図４に示すように、リンク情報、タグ情報、余分情報等が含まれる。図４は、図３に示す要素Ｎ１，Ｎ２について格納される情報を示す。リンク情報には、要素の上下左右に位置する要素が含まれる。タグ情報には、「個人」、「氏名」等のタグ名（要素名）が含まれる。高速処理のため、タグ情報は固定長で領域に割り当てることが多く、余った領域は余分な領域となる。又、余分情報には、タグ情報に関連する情報や属性等が含まれる。
このようにＸＭＬ文書１１を展開してメモリ２に格納することにより、ユーザアプリケーション１２からの処理要求に応じて、ＸＭＬ文書１１が展開された木構造を上下左右に辿ることが簡単に行える。しかし、個々の要素の内容を一つ一つ分割してメモリ２の配列に格納するため、展開部１、即ち、展開を行うＣＰＵへの負荷が高く、必要となるメモリ２の記憶容量も大きくなってしまうという問題があった。
必要となるメモリ２の記憶容量の増大を抑えるために、要素名を内部的なＩＤに置換えて扱う方法も考えられるが、展開を行うＣＰＵへの負荷が高い点は変わらない。又、高速アクセスに対応するために、内容のメモリ２への格納に一定サイズの配列を採用することが多いが、内容の長さは一定ではなく、最長の内容に合わせて配列のサイズを決定する必要があるために、配列に空きが生じ、必要となるメモリ２の記憶容量が大きい。
従って、構造化文書１１が大きくなると、メモリ２上に展開する処理が、ＣＰＵが行うべき処理の大部分を占めてしまい、処理速度が低下してしまう。又、展開されてメモリ２に格納される情報（オブジェクト）は、元の構造化文書１１の情報量の約５〜１０倍の記憶容量を必要とし、例えば数十ＭＢ以上の大きな構造化文書１１は、従来の構造化文書処理装置で処理することは難しい。
又、構造化文書１１の各要素を個々の配列に分割して格納するため、構造化文書１１を展開する処理だけではなく、展開された構造化文書を元の構造化文書１１への逆変換する処理にも時間がかかり、この点からもＣＰＵへの負荷が大きいという問題もあった。
尚、本出願人が認識している従来技術としては、下記のものがある。
特開２０００−２０７４０９号公報
特開２００１−３３１４９０号公報
【発明の開示】
本発明は、上記の問題を解決した新規、且つ、有用な構造化文書処理方法及び装置並びにコンピュータ読み取り可能な記憶媒体を提供することを概括的目的とする。
本発明のより具体的な目的は、構造化文書を処理するプロセッサへの負荷を軽減すると共に、構造化文書を処理するために必要な記憶容量を減少させることのできる構造化文書処理方法及び装置並びにコンピュータ読み取り可能な記憶媒体を提供することにある。
本発明の他の目的は、タグを含む構造化文書をテキストのままメモリ手段に保持する構造化文書保持ステップと、該構造化文書の文書構造情報を、該構造化文書の各タグの位置と関連づけて該メモリ手段に保持する文書構造保持ステップと、処理要求に応じて、該文書構造情報に従って該構造化文書の木構造を辿って要素に関する情報を取得し、取得した情報に基づいて該構造化文書の一部を取得する処理ステップとを含む構造化文書処理方法を提供することにある。本発明になる構造化文書処理方法よれば、構造化文書を処理するプロセッサへの負荷を軽減すると共に、構造化文書を処理するために必要な記憶容量を減少させることができる。
本発明の更に他の目的は、タグを含む構造化文書をテキストのまま保持する構造化文書保持部と、該構造化文書の文書構造情報を、該構造化文書の各タグの位置と関連づけて保持する文書構造保持部と、処理要求に応じて、該文書構造情報に従って該構造化文書の木構造を辿って要素に関する情報を取得し、取得した情報に基づいて該構造化文書の一部を取得する処理部を備えた構造化文書処理装置を提供することにある。本発明になる構造化文書処理装置よれば、構造化文書を処理するプロセッサへの負荷を軽減すると共に、構造化文書を処理するために必要な記憶容量を減少させることができる。
更に本発明の目的は、コンピュータに構造化文書処理を行わせるコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体であって、該コンピュータプログラムは、該コンピュータに、タグを含む構造化文書をテキストのまま保持させる構造化文書保持手順と、該コンピュータに、該構造化文書の文書構造情報を、該構造化文書の各タグの位置と関連づけて保持させる文書構造保持手順と、該コンピュータに、処理要求に応じて、該文書構造情報に従って該構造化文書の木構造を辿って要素に関する情報を取得させ、取得した情報に基づいて該構造化文書の一部を取得させる処理手順とを含むコンピュータ読み取り可能な記憶媒体を提供することにある。本発明になるコンピュータ読み取り可能な記憶媒体よれば、構造化文書を処理するプロセッサへの負荷を軽減すると共に、構造化文書を処理するために必要な記憶容量を減少させることができる。
従って、本発明によれば、文書構造情報を使用することにより、処理する構造化文書の入出力の際に、構造化文書を展開したり展開された構造化文書から元の構造化文書を逆変換により生成したりする必要がなく、ＣＰＵへの負荷を軽減できると共に、比較的小さな記憶容量のメモリを用いて構造化文書の処理を行うことができる。又、構造化文書をテキストのまま使用するため、処理の対象となる要素が木構造の全体に渡っても、使用するメモリの記憶容量を増加させる必要もなく、用途が限定されない。更に、検索条件に従って要素を特定し、その要素配下を構造化文書で取得したい場合等には、出力する構造化文書を逆変換により生成し直す必要がないため、特に高速処理が行える。
本発明の更に他の目的及び特長は、以下図面と共に述べる説明より明らかとなろう。
【図面の簡単な説明】  図１は、従来の構造化文書処理装置の一例を示す機能ブロック図、
図２は、構造化文書の一例を示す図、
図３は、図２に示す構造化文書の展開を説明する図、
図４は、展開されてメモリに格納される情報を説明する図、
図５は、本発明になる構造化文書処理装置の第１実施例を示す機能ブロック図、
図６は、構造化文書を示す図、
図７は、文書構造情報を示す図、
図８は、第１及び第２のメモリに格納される構造化文書及び文書構造情報の配列の一実施例を説明する図、
図９は、第１実施例の動作を説明するフローチャートである。
図１０は、文書構造情報に関連の強い要素間のリンクを付加する場合を説明する図、
図１１は、文書構造情報に要素や属性等の内容の文字列間にリンクを付加する場合を説明する図、
図１２は、構造化文書の一部が変更される場合を説明する図、
図１３は、構造化文書の一部が変更される場合の動作を説明するフローチャート、
図１４は、分割された構造化文書の一部が変更される場合を説明する図、
図１５は、本発明になる構造化文書処理装置の第２実施例の構造化文書保持部を示す機能ブロック図、
図１６は、分割された構造化文書の一部が変更される場合の動作を説明するフローチャート、
図１７は、本発明になる構造化文書処理装置の第３実施例の機能ブロック図、
図１８は、第３実施例の受付処理を説明するフローチャート、
図１９は、第３実施例の動作を説明するフローチャートである。
【発明を実施するための最良の形態】  以下に、本発明になる構造化文書処理方法及び装置並びにコンピュータ読み取り可能な記憶媒体の各実施例を、図面と共に説明する。
図５は、本発明になる構造化文書処理装置の第１実施例を示す機能ブロック図である。図５に示す機能ブロックの機能は、ＣＰＵ等のプロセッサ及びメモリからなる周知の基本構造により実現される。構造化文書処理装置の第１実施例は、本発明になる構造化文書処理方法の第１実施例及び本発明になる記憶媒体の第１実施例を採用する。
図５において、構造化文書処理装置（ＤＯＭプロセッサ）は、構造化文書保持部を構成する第１のメモリ２１、文書構造保持部を構成する第２のメモリ２２及び処理部２３からなる。処理部２３の機能は、ＣＰＵにより実現され、第１及び第２のメモリ２１，２２への書き込み及び読み出しを含む構造化文書処理装置全体の処理を制御する。尚、構造化文書保持部内に処理部２３の機能の一部と第１のメモリ２１を設けるようにしても良く、同様にして、文書構造保持部内に処理部２３の機能の一部と第２のメモリ２２を設けるようにしても良い。又、第１及び第２のメモリ２１，２２は、単一のメモリ又はメモリ手段により構成しても良い。
構造化文書処理装置で処理されるのは、展開していないテキストのままの図６に示す如きＸＭＬ文書等の構造化文書３１と、構造化文書３１を表現する木構造における各要素（ノード）の親子関係を構造化文書における各タグの位置と関連づけて格納した図７に示す如き文書構造情報３３である。本実施例では、説明の便宜上、構造化文書３１がＸＭＬ文書である。図６は、構造化文書３１を示す図であり、図７は、文書構造情報３３を示す図である。つまり、構造化文書処理に使用するのは、展開していないテキストのままの構造化文書３１と、構造化文書３１を表現する木構造における各要素の構造情報を構造化文書３１における各タグの位置と関連づけて格納した文書構造情報３３である。
図７図に示すように、文書構造情報３３には、図６に示す構造化文書３１と同じサイズの配列を用意し、インデックス配列とする。インデックス配列には、構造化文書３１のタグ用の特殊記号「〈  〉」，「〈／  〉」のある位置（要素名（タグ名）がある位置）と同じ位置に、その要素の上下左右の要素の位置及び終了タグの位置を格納する。これらの位置情報を用いることにより、木構造への高速アクセスを行うことができる。文書構造情報３３の、構造化文書３１の要素名（タグ名）がある位置と同じ位置に、一つ前の同じ要素名（タグ名）の位置を格納することにより、要素名（タグ名）の検索を高速に行うことができる。文書構造情報３３中、要素内容がある位置に同じ要素内容の直前出現位置を格納することにより、要素内容の検索を高速に行うこともできる。
尚、図７において、破線で囲まれた部分内に示されている要素名は、実際に格納されるものではなく、対応する要素名（タグ名）のタグが構造化文書３１内においてどの位置にあるかを示すためのものである。
文書構造情報３３は、予め生成しておき構造化文書３１と共に構造化文書処理装置に入力されるようにしても、構造化文書装置装置内の処理部２３により第１のメモリ２１に格納されている構造化文書３１に基づいて生成しても良い。
文書構造情報３３に従って木構造を辿ることにより、要素名、要素、属性等の内容は、関連付けられたタグ位置に基づいて構造化文書３１から取得される。構造化文書３１をテキストのままで扱うため、構造化文書処理装置への構造化文書３１の入出力の際に、構造化文書３１を展開したり、展開されている構造化文書３１から構造化文書３１を生成したりする必要がなく、ＣＰＵへの負荷が低い。又、本実施例における文書構造情報３３の情報量は、元の構造化文書３１と同量であり、必要となる第１及び第２のメモリ２１，２２の記憶容量も比較的少なくて済む。
本実施例では、文書構造情報３３は、構造化文書３１と同じ情報量（サイズ）の直列の配列を有する。図６及び図７は、構造化文書３１の任意の要素Ａに着目した場合の文書構造情報３３の内容を示す。図６に示す要素Ａの上下左右の要素、要素Ａの終了タグの位置及び開始タグと終了タグの長さのうち一部又は全てを、図６に示す要素Ａの開始タグ及び終了タグと同じ位置の図７中ハッチングで示す領域に格納する。指定した要素を起点に木構造を辿って処理を行なう場合、その要素の開始タグまたは終了タグ位置に基づいて、文書構造情報３３からは上下左右の要素の位置情報を、構造化文書３１からはその要素の要素名、要素や属性等の内容、要素配下の構造化文書３１全体等を取得する。
図８は、第１及び第２のメモリ２１，２２に格納される構造化文書３１及び文書構造情報３３の配列の一実施例を説明する図である。ここでは、説明の便宜上、構造化文書３１がＸＭＬ文書であるものとする。図８中、「ｌｉｓｔ」は名簿、「ｐｅｒｓｏｎａｌ」は個人、「ｎａｍｅ」は氏名に対応する。図８に示すように、文書構造情報３３は、木構造における各要素の構造情報を構造化文書３１における各タグの位置と関連づけて格納している。図８に示す実施例では、例えば上下左右の要素、終了タグの位置及び開始タグと終了タグの長さの全てを格納している。又、上下左右の要素及び終了タグの位置は、夫々２バイトで表現されており、開始タグと終了タグの長さは１バイトで表現されている。図８中、ＮはＮｕｌｌを示す。
図９は、本実施例の動作を説明するフローチャートである。図９に示す処理は、図５に示す処理部２３を構成するＣＰＵにより実行される。図９において、ステップＳ１は、構造化文書３１を入力し、第１のメモリ２１に書き込む。ステップＳ２は、文書構造情報３３を入力するか、或いは、第１のメモリ２１に格納されている構造化文書３１を読み出して構造化文書３１に基づいて処理部２３により構造化文書処理装置内で生成し、文書構造情報３３を第２のメモリ２２に書き込む。ステップＳ３は、ユーザアプリケーション３２からの処理要求を入力する。
ステップＳ４は、第２のメモリ２２に格納されている文書構造情報３３を読み出して、入力されたユーザアプリケーション３２の処理要求に応じて、文書構造情報３３に従って構造化文書３１を表現する木構造を辿る。ステップＳ５は、木構造（文書構造情報３３）を辿ることで得られた位置情報から構造化文書３１の一部を取得する。ステップＳ６は、ユーザアプリケーション３２からの処理要求が終了したか否かを判定し、判定結果がＮＯであると、処理はステップＳ４へ戻る。他方、ステップＳ６の判定結果がＹＥＳであると、ステップＳ７は、取得した構造化文書３１の一部をユーザアプリケーション３２に渡し、処理は終了する。その後、ユーザアプリケーション３２は、取得した構造化文書３１の一部に対して任意の処理を施すことができる。
次に、要素の検索に用いる情報を文書構造情報３３に付加する場合について、図１０及び図１１と共に説明する。
図１０は、文書構造情報３３に、関連の強い要素間のリンクを付加する場合を説明する図である。図１０では、要素名が同じ要素間に矢印で示すようにリンクが張られている。これにより、ハッシュや文字列検索により特定の要素名の要素を一つ検出すれば、同じ要素名の要素を芋づる式に検出できる。
図１１は、文書構造情報３３に、要素や属性等の内容の文字列間にリンクを付加する場合を説明する図である。図１１では、同じ２文字列（２つの文字からなる文字列）の間に矢印で示すようにリンクが張られている。これにより、同様にハッシュや文字列検索により特定の文字列を一つ検出すれば、同じ文字列の箇所を芋づる式に検出できる。
従って、上記の如きリンクを付加することで、構造化文書３１中の同じ要素名や同じ要素内容を高速に検索することができる。例えば、ＤＯＭプロセッサに備えられている、同じタグ名のリストを取得する機能（Ｇｅｔ  Ｅｌｅｍｅｍｎｔｓ  Ｂｙ  Ｔａｇ  Ｎａｍｅ）等を実行する場合に、上記の如きリンクを付加することで取得したいタグ名等を高速に検索することができる。
次に、ユーザアプリケーション３２からの処理要求に基づいて、構造化文書３１の一部が変更された場合の動作について、図１２及び図１３と共に説明する。図１２は、構造化文書３１の一部が変更される場合を説明する図であり、図１３は、構造化文書３１の一部が変更される場合の動作を説明するフローチャートである。図１３に示す処理は、図５に示す処理部２３を構成するＣＰＵにより実行される。
図１２は、文書部分３１−１，３１−２，３１−３からなる構造化文書３１を示す。更新前の文書部分３１−２が更新後に文書部分３１−２１に更新されると、文書部分３１−２１に続くべき文書部分３１−３の位置は、文書部分３１−２１のサイズに合わせて調整され、構造化文書３１全体が詰め直される。
図１３において、ステップＳ１１は、第１のメモリ２１に格納されている構造化文書３１を読み出して、構造化文書３１を処理部２３に入力する。ステップＳ１２は、更新の対象となる構造化文書３１の文書部分３１−２を取得する。ステップＳ１３は、文書部分３１−２を文書部分３１−２１に更新する。ステップＳ１４は、更新後の文書部分３１−２１のサイズに合わせて文書部分３１−２１に続くべき文書部分３１−３の位置を調整し、構造化文書３１全体を詰め直す。ステップＳ１５は、文書部分３１−２１を含む更新後の構造化文書３１を第１のメモリ２１に書き込んで更新を反映し、処理は終了する。
ところで、構造化文書処理装置内では、構造化文書３１は展開されることなくテキストのままで扱われるため、構造化文書３１の分割位置を要素の節目に合わせることなく一律に分割しても、構造化文書３１の前後の文書部分を単純に繋げて扱うことができる。このように構造化文書３１を分割しておくことにより、構造化文書３１の一部を更新した場合の大量詰め直しを抑制することができる。
次に、本発明になる構造化文書処理装置の第２実施例を、図１４〜図１６と共に説明する。本実施例では、ユーザアプリケーション３２からの処理要求に基づいて、分割された構造化文書３１の一部が変更されるものとする。構造化文書処理装置の第２実施例の機能ブロックは、図５に示す基本構造により実現される。構造化文書処理装置の第２実施例は、本発明になる構造化文書処理方法の第２実施例及び本発明になる記憶媒体の第２実施例を採用する。図１４は、分割された構造化文書３１の一部が変更される場合を説明する図であり、図１５は、構造化文書処理装置の第２実施例の構造化文書保持部２１を示す機能ブロック図である。図１６は、分割された構造化文書３１の一部が変更される場合の動作を説明するフローチャートである。図１６に示す処理は、図５に示す処理部２３を構成するＣＰＵにより実行される。
図１４は、分割部分（又はブロック）３１１，３１２に分割された構造化文書３１を示す。分割部分３１１が変更され、分割部分３１２は変更されないものとする。分割部分３１１は、文書部分３１−１，３１−２，３１−４からなる。更新前の文書部分３１−２が更新後に文書部分３１−２１に更新されると、文書部分３１−２１に続くべき文書部分３１−４の位置は、文書部分３１−２１のサイズに合わせて調整され、分割部分３１１のみが詰め直される。分割部分３１２は、文書部分３１−５からなり、変更されることなく、分割部分３１１に続く。
図１５において、構造化文書保持部２１０は、図５に示す第１のメモリ２１の代わりに設けられる。構造化文書保持部２１０は、分割部２１１、分割文書管理部２１２及び分割文書保持部２１３からなる。分割部２１１は、入力された構造化文書３１を予め定められたサイズ（又は分割幅）で分割する。この場合、構造化文書３１は、分割部分３１１，３１２に分割される。分割文書保持部２１３は、メモリからなり、分割部分３１１，３１２等の分割文書（ブロック）を分割文書管理部２１２の管理下で格納する。分割文書管理部２１２は、分割部分３１１，３１２等の分割文書（ブロック）の分割文書保持部２１３に対する書き込み及び読み出しの制御と、分割文書（ブロック）の更新に伴う分割部分（ブロック）の再分割の制御、更新された分割部分（ブロック）の詰め直しの制御等を行う。
尚、分割部２１１及び／又は分割文書管理部２１２の機能を処理部２３で実現するようにしても良い。更に、構造化文書保持部２１０を分割文書保持部２１３として機能する第１のメモリ２１で実現し、分割部２１１及び分割文書管理部２１２の機能を処理部２３で実現しても良く、この場合は、図５に示す第１実施例の機能ブロックをそのまま第２実施例で使用可能である。
説明の便宜上、図１６に示す処理は、図５に示す処理部２３を構成するＣＰＵにより実行されるものとする。図１６において、ステップＳ２１は、入力された構造化文書３１を分割部分３１１，３１２に分割して分割文書保持部２１３に格納する。ステップＳ２２は、更新の対象となる構造化文書３１の分割部分３１１内の文書部分３１−２を取得する。ステップＳ２３は、文書部分３１−２を文書部分３１−２１に更新する。ステップＳ２４は、文書部分３１−１，３１−４と更新後の文書部分３１−２１からなる分割部分（ブロック）のサイズが予め定められたサイズより大きいか否かを判定する。ステップＳ２４の判定結果がＮＯであると、処理は後述するステップＳ２６へ進む。
ステップＳ２４の判定結果がＹＥＳであると、文書部分３１−１，３１−４と更新後の文書部分３１−２１からなる分割部分（ブロック）を再分割し、１つの分割部分（ブロック）のサイズが上記予め定められたサイズより大きくならないようにする。ステップＳ２５の後、又は、ステップＳ２４の判定結果がＮＯであると、ステップＳ２６は、更新後の１又は複数の分割部分（ブロック）のサイズに合わせてこの分割部分（ブロック）に続くべき分割部分（ブロック）３１２の位置を調整し、構造化文書３１全体を詰め直す。ステップＳ２７は、文書部分３１−２１を含む更新後の構造化文書３１を第１のメモリ２１に書き込んで更新を反映し、処理は終了する。
これにより、分割部分（ブロック）の更新に伴う分割部分のサイズの変化を、分割部分の境界で吸収することができる。
次に、本発明になる構造化文書処理装置の第３実施例を、図１７〜図１９と共に説明する。構造化文書処理装置の第３実施例は、本発明になる構造化文書処理方法の第３実施例及び本発明になる記憶媒体の第３実施例を採用する。図１７は、本発明になる構造化文書処理装置の第３実施例の機能ブロック図である。図１７中、図５と同一部分には同一符号を付し、その説明は省略する。又、図１７中、第１及び第２のメモリ２１，２２の図示は省略する。図１８は、第３実施例の受付処理を説明するフローチャートであり、図１９は、第３実施例の動作を説明するフローチャートである。
構造化文書３１をテキストのままで扱うメリットは、排他処理に対してもある。つまり、特定の要素配下にある要素郡に対して排他処理を行なう場合、該当する要素の開始タグと終了タグの位置を求め、その幅の交差があるか否かの判断を行うだけで、並列処理が可能か否かの判断を行なうことができる。
図１７において、構造化文書処理装置は、図５に示す構成に加え、複数の処理依頼を同時に受け付けて、順に処理部１３へ処理依頼をする排他管理部４０を有する。排他管理部４０は、処理受付部４１、処理領域情報取得部４２、処理スタック部４３、領域交差チェック部４４及び処理依頼部４５からなる。本実施例では、排他管理部４０の一部又は全部の機能は、処理部２３の機能を実現するＣＰＵにより実現されるが、排他管理部４０の機能を専用のプロセッサ及びメモリにより実現するようにしても良いことは言うまでもない。
処理受付部４１は、ユーザアプリケーション３２からの処理要求を入力する。処理領域情報取得部４２は、構造化文書３１のどこの領域（例えば、何バイト目）に対する処理を行うかを示す処理領域情報を、入力した処理要求から取得する。処理スタック部４３は、どこのタグをどのように書き換えるか等を示す処理内容を、入力した処理要求から取得してスタックする。領域交差チェック部４４は、例えば他のスレッドで処理中の処理領域と、入力した処理要求から取得された処理領域情報で示される処理領域とが交差するか否かを判定する。つまり、領域交差チェック部４４は、処理スタック部４３にスタックした処理又は処理部１３で処理中の処理が処理対象としている処理領域と、処理受付部４１が入力した処理要求が要求する処理が処理対象としている処理領域とが交差するか否かをチェックする。領域交差チェック部４４により、処理領域の交差がないと判定された場合には、処理依頼部４５は、処理領域情報で示される処理領域に対して処理内容の処理の依頼を処理部２３に対して行う。他方、領域交差チェック部４４により、処理領域の交差があると判定された場合には、処理内容がスタック部４３によりスタックされる。
図１８に示す受付処理は、図１７に示す処理受付部４１、処理領域情報取得部４２及び処理スタック部４３を構成するＣＰＵにより実行される。ステップＳ３１は、ユーザアプリケーション３２からの処理要求を入力する。ステップＳ３１は、構造化文書３１のどこの領域（例えば、何バイト目）に対する処理を行うかを示す処理領域情報を、入力した処理要求から取得する。ステップＳ３３は、どこのタグをどのように書き換えるか等を示す処理内容を、入力した処理要求から取得してスタックし、処理は終了する。
図１９に示す処理は、図１７に示す領域交差チェック部４４及び処理依頼部４５を構成するＣＰＵにより実行される。ステップＳ４１は、スタックされている処理内容の１つを選択する。ステップＳ４２は、選択された１つの処理内容に基づいて処理するべき処理領域情報で示される処理領域と、例えば他のスレッドで処理中の処理領域とが交差するか否かを判定する。ステップＳ４２の判定結果がＮＯであると、ステップＳ４３は、処理領域情報で示される処理領域に対して処理内容の処理の依頼を処理部２３に対して行い、処理はステップＳ４５へ進む。他方、ステップＳ４２の判定結果がＹＥＳであると、ステップＳ４４は、処理内容をスタックし、処理はステップＳ４１へ戻る。ステップＳ４５は、スタックされた全ての処理内容が選択されたか否かを判定し、判定結果がＮＯであると、処理はステップＳ４１へ戻る。他方、ステップＳ４５の判定結果がＹＥＳであると、処理は終了する。
本発明になるコンピュータ読み取り可能な記憶媒体の各実施例は、コンピュータに上記の如き構造化文書処理を行わせてコンピュータを構造化文書処理装置として動作させるコンピュータプログラムを格納する記録媒体により実現される。記録媒体は、コンピュータプログラムを格納可能なものであれば特に限定されず、磁気記録媒体、光記録媒体、光磁気記録媒体、半導体記憶装置等を用いることが可能である。又、コンピュータプログラムは、ネットーワーク等の媒体を介して他のコンピュータからコンピュータの記憶装置にダウンロードされても良い。
本発明は、ＣＰＵ等のプロセッサ及びメモリからなる汎用コンピュータや各種電子装置等に適用可能であり、本発明が適用される装置は可搬型の装置であっても良い。
尚、本発明は、上記実施例に限定されるものではなく、本発明の範囲内で種々の改良及び変更が可能であることは、言うまでもない。
【図１】
2005006192.tif 000003
【図２】
2005006192.tif 000004
【図３】
2005006192.tif 000005
【図４】
2005006192.tif 000006
【図５】
2005006192.tif 000007
【図６】
2005006192.tif 000008
【図７】
2005006192.tif 000009
【図８】
2005006192.tif 000010
【図９】
2005006192.tif 000011
【図１０】
2005006192.tif 000012
【図１１】
2005006192.tif 000013
【図１２】
2005006192.tif 000014
【図１３】
2005006192.tif 000015
【図１４】
2005006192.tif 000016
【図１５】
2005006192.tif 000017
【図１６】
2005006192.tif 000018
【図１７】
2005006192.tif 000019
【図１８】
2005006192.tif 000020
【図１９】
2005006192.tif 000021
【国際調査報告】
2005006192.tif 000022
2005006192.tif 000023
2005006192.tif 000024
2005006192.tif 000025