明細書 構造化文書処理方法及び装置並びに記憶媒体 技術分野
本発明は、 構造化文書処理方法及び装置並びに記憶媒体に係り、 特に、 XML (extensible Markup Language) や SGML (Standard Generated Mar -up Languageノ 等の構造化文書を処理する構造化文書処理方法及び装置、 並びに、 コンピュータ にそのような構造化文書処理方法で構造化文書の処理を行わせるコンピュータブ 口グラムが格納されたコンピュータ読み取り可能な記憶媒体に関する。
近年、 インターネット等のネットワークを介して複数のシステム、 企業、 個人 等が繋がれ、 EDI, EC、 携帯電話サービスやデジタルテレビ向けのサービス、 Web サービスといった、 幅広いデータ交換サービスが行われるようになつてきた。 このような状況に合わせて、 計算機で扱うデータの形式を統一しようとする動 きがある。 つまり、 このような動きは、 計算機或いはアプリケーションによって ばらばらであったデータ形式を、 異なる計算機或いはアプリケーションでも使用 可能にするためのものである。このデータ形式を統一するための規格は、肌とし て 1 9 9 8年 2月に W3Cによって正式に勧告されている。 XML規格は、 同様の規格 である SGMLのサブセットになっている。又、 XML文書をメモリ上のオブジェクトに 展開し、そのオブジェクトを扱うインタフェースの規格である D0Mも、 1 9 9 8年 1 0月に W3Cによって勧告されている。
背景技術
以下の説明では、 ML規格に基づき、 「く」 と 「>」で囲まれた文字列をタグ、 「く 文字列〉」 を開始タグ、 「く/文字列〉」 を終了タグ、 開始タグと終了タグで挟まれ た文字列を要素、 タグ内に記述される要素の名前を要素名、 要素に対する付加情 報を属性と呼ぶものとする。
構造化文書は、 文書自身の中にタグを埋め込む形で、 データ構造を記述する。 データ構造をタグとして文書に埋め込んだ構成を取ることにより、 データ構造の 柔車欠 !·生及び拡張性が高くなる。 又、 タグを意味のあるテキストで記述することに
より、 それまで独立のシステムで扱っていたデータを他のシステムでも容易に极 うことが可能となる。
XML文書から、要素名、要素、属性等の内容を取得してユーザアプリケーション に渡したり、 内容を変更、 追加又は削除したりする XMLプロセッサとして、 D0M (Document Object Model) プロセッサが広く使われている。
図 1は、従来の構造化文書処理装置(D0Mプロセッサ) の一例を示す機能ブロッ ク図である。図 1に示す機能ブロックの機能は、 CPU等のプロセッサ及ぴメモリか らなる周知の基本構造により実現される。 構造化文書処理装置は、 展開部 1、 メ モリ 2及び処理部 3力らなる。展開部 1及び処理部 3の機能は、 CPUにより実現さ れる。図 1に示すように、従来の構造化文書処理装置では、 XML文書処理を行なう 際には、先ず展開部 1で構造化文書である風文書 1 1の構造を解析し、オブジェ クト保持部を構成するメモリ 2上に展開する。 図 2は、構造化文書(XML文書) 1 1の一例を示す図であり、'図 3は、図 2に示す構造化文書(XML文書) 1 1の展開 を説明する図である。
XML文書 1 1は、図 2に示すように直列のテキストである力 S、展開部 1により各 要素毎に分離され、 タグで記述されたデータ構造に従って図 3に示すように展開 されてメモリ 2に格納される。図 3では、 XML文書 1 1が展開された木構造として 図示されているが、 メモリ 2に実際に格納される情報には、 各要素 (ノード) に ついて、 図 4に示すように、 リンク情報、 タグ情報、 余分情報等が含まれる。 図 4は、 図 3に示す要素 N l, N 2について格納される情報を示す。 リンク情報に は、 要素の上下左右に位置する要素が含まれる。 タグ情報には、 「個人」 、 「氏 名」 等のタグ名 (要素名) が含まれる。 高速処理のため、 タグ情報は固定長で領 域に割り当てることが多く、余った領域は余分な領域となる。又、余分情報には、 タグ情報に関連する情報や属性等が含まれる。
このように XML文書 1 1を展開してメモリ 2に格納することにより、ユーザァプ リケーシヨン 1 2からの処理要求に応じて、 XML文書 1 1が展開された木構造を上 下左右に迪ることが簡単に行える。 し;^し、 個々の要素の内容を一つ一^ 3分割し てメモリ 2の配列に格納するため、展開部 1、即ち、展開を行う CPUへの負荷が高 く、 必要となるメモリ 2の記憶容量も大きくなつてしまうという問題があった。
必要となるメモリ 2の記憶容量の増大を抑えるために、 要素名を内部的な IDに 置換えて扱う方法も考えられる力 S、展開を行う CPUへの負荷が高い点は変わらない。 又、 高速アクセスに対応するために、 内容のメモリ 2への格納に一定サイズの配 列を採用することが多いが、 内容の長さは一定ではなく、 最長の内容に合わせて 配列のサイズを決定する必要があるために、 配列に空きが生じ、 必要となるメモ リ 2の記憶容量が大きい。
従って、 構造化文書 1 1が大きくなると、 メモリ 2上に展開する処理が、 CPU が行うべき処理の大部分を占めてしまレ、、 処理速度が低下してしまう。 又、 展開 されてメモリ 2に格納される情報 (ォブジェクト) は、 元の構造化文書 1 1の情 報量の約 5〜: 1 0倍の記憶容量を必要とし、 例えば数十 MB以上の大きな構造化文 書 1 1は、 従来の構造化文書処理装置で処理することは難しい。
又、 構造化文書 1 1の各要素を個々の配列に分割して格納するため、 構造化文 書 1 1を展開する処理だけではなく、 展開された構造化文書を元の構造化文書 1
1への逆変換する処理にも時間がかかり、この点からも CPUへの負荷が大きいとい う問題もあった。
尚、 本出願人力 S認識している従来技術としては、 下記のものがある。
特開 2 0 0 0 - 2 0 7 4 0 9号公報
特開 2 0 0 1 - 3 3 1 4 9 0号公報 発明の開示
本発明は、 上記の問題を解決した新規、 且つ、 有用な構造化文書処理方法及び 装置並びにコンピュータ読み取り可能な記憶媒体を提供することを概括的目的と する。
本発明のより具体的な目的は、 構造化文書を処理するプロセッサへの負荷を軽 減すると共に、 構造化文書を処理するために必要な記憶容量を減少させることの できる構造化文書処理方法及び装置並びにコンピュータ読み取り可能な記憶媒体 を提供することにある。
本発明の他の目的は、 タグを含む構造化文書をテキストのままメモリ手段に保 持する構造化文書保持ステップと、 該構造化文書の文書構造情報を、 該構造化文
書の各タグの位置と関連づけて該メモリ手段に保持する文書構造保持ステップと 、 処理要求に応じて、 該文書構造情報に従って該構造化文書の木構造を迪つて要 素に関する情報を取得し、 取得した情報に基づいて該構造化文書の一部を取得す る処理ステップとを含む構造ィ匕文書処理方法を樹共することにある。 本発明にな る構造化文書処理方法よれば、 構造化文書を処理するプロセッサへの負荷を軽減 すると共に、 構造化文書を処理するために必要な記憶容量を減少させることがで さる。
本発明の更に他の目的は、 タグを含む構造化文書をテキストのまま保持する構 造ィ匕文書保持部と、 該構造化文書の文書構造情報を、 該構造化文書の各タグの位 置と関連づけて保持する文書構造保持部と、 処理要求に応じて、 該文書構造情報 に従つて該構造化文書の木構造を迪って要素に関する情報を取得し、 取得した情 報に基づいて該構造化文書の一部を取得する処理部を備えた構造化文書処理装置 を することにある。 本発明になる構造化文書処 置よれば、 構造化文書を 処理するプロセッサへの負荷を軽減すると共に、 構造化文書を処理するために必 要な記憶容量を減少させることができる。
更に本発明の目的は、 コンピュータに構造化文書処理を行わせるコンピュータ プログラムを格納したコンピュータ読み取り可能な記憶媒体であって、 該コンビ ユータプログラムは、 該コンピュータに、 タグを含む構造化文書をテキストのま ま保持させる構造化文書保持手順と、 該コンピュータに、 該構造化文書の文書構 造情報を、 該構造化文書の各タグの位置と関連づけて保持させる文書構造保持手 順と、 該コンピュータに、 処理要求に応じて、 該文書構造情報に従って該構造化 文書の木構造を迪つて要素に関する情報を取得させ、 取得した情報に基づいて該 構造化文書の一部を取得させる処理手順とを含むコンピュータ読み取り可能な記 憶媒体を提供することにある。 本発明になるコンピュータ読み取り可能な記憶媒 体よれば、 構造化文書を処理するプロセッサへの負荷を軽減すると共に、 構造化 文書を処理するために必要な記憶容量を減少させることができる。
従って、 本発明によれば、 文書構造情報を使用することにより、 処理する構造 化文書の入出力の際に、 構造化文書を展開したり展開された構造化文書から元の 構造化文書を逆変換により生成したりする必要がなく、 CPUへの負荷を軽減でき
ると共に、 比較的小さな記憶容量のメモリを用いて構造ィ匕文書の処理を行うこと ができる。 又、 構造化文書をテキストのまま使用するため、 処理の対象となる要 素が木構造の全体に渡っても、 使用するメモリの記憶容量を増加させる必要もな く、 用途が限定されない。 更に、 検索条件に従って要素を特定し、 その要素配下 を構造化文書で取得したい場合等には、 出力する構造化文書を逆変換により生成 し直す必要がないため、 特に高速処理が行える。
本発明の更に他の目的及び特長は、 以下図面と共に述べる説明より明らかとな ろう。 図面の簡単な説明
図 1は、 従来の構造化文書処理装置の一例を示す機能プロック図、
図 2は、 構造化文書の一例を示す図、
図 3は、 図 2に示す構造化文書の展開を説明する図、
図 4は、 展開されてメモリに格納される情報を説明する図、
図 5は、 本発明になる構造化文書処理装置の第 1実施例を示す機能プロック図 図 6は、 構造化文書を示す図、
図 7は、 文書構造情報を示す図、
図 8は、 第 1及び第 2のメモリに格納される構造化文書及び文書構造情報の配 列の一実施例を説明する図、
図 9は、 第 1実施例の動作を説明するフローチヤ一トである。
図 1 0は、 文書構造情報に関連の強い要素間のリンクを付加する場合を説明す る図、
図 1 1は、 文書構造情報に要素や属性等の内容の文字列間にリンクを付加する 場合を説明する図、
図 1 2は、 構造化文書の一部が変更される場合を説明する図、
図 1 3は、 構造化文書の一部が変更される場合の動作を説明するフローチヤ一 卜、
図 1 4は、 分割された構造化文書の一部が変更される場合を説明する図、
図 1 5は、 本発明になる構造化文書処理装置の第 2実施例の構造化文書保持部 を示す機能ブロック図、
図 1 6は、 分割された構造化文書の一部が変更される場合の動作を説明するフ 口 ^ テャ1 "卜、
図 1 7は、 本発明になる構造化文書処理装置の第 3実施例の機能プロック図、 図 1 8は、 第 3実施例の受付処理を説明するフローチャート、
図 1 9は、 第 3実施例の動作を説明するフローチャートである。 発明を実施するための最良の形態
以下に、 本努明になる構造化文書処理方法及び装置並びにコンピュータ読み取 り可能な記憶媒体の各実施例を、 図面と共に説明する。
図 5は、 本楽明になる構造化文書処理装置の第 1実施例を示す機能プロック図 である。 図 5に示す機能ブロックの機能は、 CPU等のプロセッサ及びメモリから なる周知の基本構造により実現される。 構造化文書処理装置の第 1実施例は、 本 発明になる構造化文書処理方法の第 1実施例及び本発明になる記憶媒体の第 1実 施例を採用する。
図 5において、構造化文書処理装置(D0Mプロセッサ) は、構造化文書保持部を 構成する第 1のメモリ 2 1、 文書構造保持部を構成する第 2のメモリ 2 2及ぴ処 理部 2 3力、らなる。処理部 2 3の機能は、 CPUにより実現され、第 1及び第 2のメ モリ 2 1, 2 2への書き込み及び読み出しを含む構造化文書処理装置全体の処理 を制御する。 尚、 構造化文書保持部内に処理部 2 3の機能の一部と第 1のメモリ 2 1を設けるようにしても良く、 同様にして、 文書構造保持部内に処理部 2 3の 機能の一部と第 2のメモリ 2 2を設けるようにしても良レ、。 又、 第 1及ぴ第 2の メモリ 2 1 , 2 2は、 単一のメモリ又はメモリ手段により構成しても良い。
構造化文書処理装置で処理されるのは、 展開していないテキストのままの図 6 に示す如き XML文書等の構造化文書 3 1と、構造化文書 3 1を表現する木構造にお ける各要素 (ノード) の親子関係を構造化文書における各タグの位置と関連づけ て格納した図 7に示す如き文書構造情報 3 3である。 本実施例では、 説明の便宜 上、 構造化文書 3 1が XML文書である。 図 6は、 構造化文書 3 1を示す図であり、
図 7は、 文書構造情報 3 3を示す図である。 つまり、 構造化文書処理に使用する のは、 展開していないテキストのままの構造化文書 3 1と、 構造化文書 3 1を表 現する木構造における各要素の構造情報を構造ィ匕文書 3 1における各タグの位置 と関連づけて格納した文書構造情報 3 3である。
図 7図に示すように、 文書構造情報 3 3には、 図 6に示す構造化文書 3 1と同 じサイズの配列を用意し、 インデックス配列とする。 インデックス配列には、 構 造化文書 3 1のタグ用の特殊記号 「く >」 , 「〈/ :)」 のある位置 (要素名 (タ グ名) がある位置) と同じ位置に、 その要素の上下左右の要素の位置及ぴ終了タ グの位置を格納する。 これらの位置情報を用いることにより、 木構造への高速ァ クセスを行うことができる。 文書構造情報 3 3の、 構造化文書 3 1の要素名 (タ グ名) がある位置と同じ位置に、 一つ前の同じ要素名 (タグ名) の位置を格納す ることにより、 要素名 (タグ名) の検索を高速に行うことができる。 文書構造情 報 3 3中、 要素内容がある位置に同じ要素内容の直前出現位置を格納することに より、 要素内容の検索を高速に行うこともできる。
尚、 図 7において、 線で囲まれた部分内に示されている要素名は、 実際に格 納されるものではなく、 対応する要素名 (タグ名) のタグが構造化文書 3 1内に おいてどの位置にあるかを示すためのものである。
文書構造情報 3 3は、 予め生成しておき構造化文書 3 1と共に構造化文書処理 装置に入力されるようにしても、 構造化文書装置装置内の処理部 2 3により第 1 のメモリ 2 1に格納されている構造化文書 3 1に基づいて生成しても良い。
文書構造情報 3 3に従って木構造を迪ることにより、 要素名、 要素、 属性等の 内容は、 関連付けられたタグ位置に基づいて構造化文書 3 1から取得される。 構 造化文書 3 1をテキストのままで扱うため、 構造化文書処理装置への構造化文書 3 1の入出力の際に、 構造化文書 3 1を展開したり、 展開されている構造化文書 3 1から構造化文書 3 1を生成したりする必要がなく、 CPUへの負荷が低レ、。 又、 本実施例における文書構造情報 3 3の情報量は、 元の構造化文書 3 1と同量であ り、 必要となる第 1及び第 2のメモリ 2 1, 2 2の記憶容量も比較的少なくて済 む。
本実施例では、 文書構造情報 3 3は、 構造化文書 3 1と同じ情報量 (サイズ)
の直列の配列を有する。 図 6及ぴ図 7は、 構造化文書 3 1の任意の要素 Aに着目 した場合の文書構造情報 3 3の内容を示す。図 6に示す要素 Aの上下左右の要素、 要素 Aの終了タグの位置及び開始タグと終了タグの長さのうち一部又は全てを、 図 6に示す要素 Aの開始タグ及び終了タグと同じ位置の図 7中ハッチングで示す 領域に格納する。 指定した要素を起点に木構造を迪つて処理を行なう場合、 その 要素の開始タグまたは終了タグ位置に基づいて、 文書構造情報 3 3からは上下左 右の要素の位置情報を、 構造化文書 3 1からはその要素の要素名、 要素や属性等 の内容、 要素配下の構造化文書 3 1全体等を取得する。
図 8は、 第 1及び第 2のメモリ 2 1, 2 2に格納される構造化文書 3 1及び文 書構造情報 3 3の配列の一実施例を説明する図である。ここでは、説明の便宜上、 構造化文書 3 1が XML文書であるものとする。図 8中、 「list」は名簿、 「Personal」 は個人、 「name」 は氏名に対応する。 図 8に示すように、文書構造情報 3 3は、木 構造における各要素の構造情報を構造化文書 3 1における各タグの位置と関連づ けて格納している。 図 8に示す実施例では、 例えば上下左右の要素、 終了タグの 位置及び開始タグと終了タグの長さの全てを格納している。 又、 上下左右の要素 及び終了タグの位置は、 夫々 2パイトで表現されており、 開始タグと終了タグの 長さは 1バイトで表現されている。 図 8中、 Nは Nullを示す。
図 9は、本実施例の動作を説明するフローチャートである。図 9に示す処理は、 図 5に示す処理部 2 3を構成する CPUにより実行される。図 9において、ステップ S 1は、 構造化文書 3 1を入力し、 第 1のメモリ 2 1に書き込む。 ステップ S 2 は、 文書構造情報 3 3を入力する力、 或いは、 第 1のメモリ 2 1に格納されてい る構造化文書 3 1を読み出して構造化文書 3 1に基づいて処理部 2 3により構造 化文書処理装置内で生成し、 文書構造情報 3 3を第 2のメモリ 2 2に書き込む。 ステップ S 3は、 ユーザアプリケーション 3 2からの処理要求を入力する。
ステップ S 4は、 第 2のメモリ 2 2に格納されている文書構造情報 3 3を読み 出して、 入力されたユーザアプリケーション 3 2の処理要求に応じて、 文書構造 情報 3 3に従って構造化文書 3 1を表現する木構造を迪る。 ステップ S 5は、 木 構造 (文書構造情報 3 3 ) を迪ることで得られた位置情報から構造化文書 3 1の 一部を取得する。 ステップ S 6は、 ユーザアプリケーション 3 2からの処理要求
が終了した力否かを判定し、 判定結果が NOであると、 処理はステップ S 4へ戻 る。 他方、 ステップ S 6の判定結果が Y E Sであると、 ステップ S 7は、 取得し た構造化文書 3 1の一部をユーザアプリケーション 3 2に渡し、処理は終了する。 その後、 ユーザアプリケーション 3 2は、 取得した構造化文書 3 1の一部に対し て任意の処理を施すことができる。
次に、 要素の検索に用いる情報を文書構造情報 3 3に付加する場合について、 図 1 0及び図 1 1と共に説明する。
図 1 0は、 文書構造情報 3 3に、 関連の強い要素間のリンクを付加する場合を 説明する図である。 図 1 0では、 要素名が同じ要素間に矢印で示すようにリンク が張られている。 これにより、 ハッシュや文字列検索により特定の要素名の要素 を一つ検出すれば、 同じ要素名の要素を芋づる式に検出できる。
図 1 1は、 文書構造情報 3 3·に、 要素や属性等の内容の文字列間にリンクを付 加する場合を説明する図である。 図 1 1では、 同じ 2文字列 (2つの文字からな る文字列) の間に矢印で示すようにリンクが張られている。 これにより、 同様に ハッシュゃ文字列検索により特定の文字列を一つ検出すれば、 同じ文字列の箇所 を芋づる式に検出できる。
従って、 上記の如きリンクを付加することで、 構造化文書 3 1中の同じ要素名 や同じ要素内容を高速に検索することができる。例えば、 D0Mプロセッサに備えら れている、 同じタグ名のリストを取得する機能 (Get Elememnts By Tag Name) 等 を実行する場合に、 上記の如きリンクを付加することで取得したいタグ名等を高 速に検索することができる。
次に、 ユーザアプリケーション 3 2からの処理要求に基づいて、 構造化文書 3 1の一部が変更された場合の動作について、 図 1 2及び図 1 3と共に説明する。 図 1 2は、 構造化文書 3 1の一部が変更される場合を説明する図であり、 図 1 3 は、 構造化文書 3 1の一部が変更される場合の動作を説明するフローチヤ一トで ある。図 1 3に示す処理は、図 5に示す処理部 2 3を構成する CPUにより実行され る。
図 1 2は、文書部分 3 1— 1, 3 1— 2 , 3 1—3力、らなる構造ィ匕文書 3 1を示す。 更新前の文書部分 3 1 - 2が更新後に文書部分 3 1 - 2 1に更新されると、 文書部
分 31-21に続くべき文書部分 31-3の位置は、文書部分 31-21のサイズに 合わせて調整され、 構造化文書 31全体が詰め直される。
図 13において、 ステップ S 11は、 第 1のメモリ 21に格納されている構造 化文書 31を読み出して、 構造化文書 31を処理部 23に入力する。 ステップ S 12は、更新の対象となる構造化文書 31の文書部分 31-2を取得する。ステツ プ S 13は、 文書部分 31-2を文書部分 31-21に更新する。 ステップ S 14 は、 更新後の文書部分 31- 21のサイズに合わせて文書部分 31- 21に続くベ き文書部分 31-3の位置を調整し、構造化文書 31全体を詰め直す。ステップ S 15は、文書部分 31-21を含む更新後の構造化文書 31を第 1のメモリ 21に 書き込んで更新を反映し、 処理は終了する。
ところで、 構造化文書処理装置内では、 構造ィ匕文書 31は展開されることなく テキストのままで扱われるため、 構造化文書 31の分割位置を要素の節目に合わ せることなく一律に分割しても、 構造化文書 31の前後の文書部分を単純に繋げ て扱うことができる。 このように構造化文書 31を分割しておくことにより、 構 造化文書 31の一部を更新した場合の大量詰め直しを抑制することができる。 次に、 本発明になる構造化文書処理装置の第 2実施例を、 図 14〜図 16と共 に説明する。 本実施例では、 ユーザアプリケーション 32からの処理要求に基づ レ、て、 分割された構造化文書 31の一部が変更されるものとする。 構造化文書処 理装置の第 2実施例の機能プロックは、 図 5に示す基本構造により実現される。 構造化文書処理装置の第 2実施例は、 本発明になる構造化文書処理方法の第 2実 施例及び本発明になる記憶媒体の第 2実施例を採用する。 図 14は、 分割された 構造ィ匕文書 31の一部が変更される場合を説明する図であり、 図 15は、 構造化 文書処理装置の第 2実施例の構造化文書保持部 21を示す機能プロック図である。 図 16は、 分割された構造化文書 31の一部が変更される場合の動作を説明する フローチャートである。 図 16に示す処理は、 図 5に示す処理部 23を構成する CPUにより実行される。
図 14は、 分割部分 (又はブロック) 311, 312に分割された構造化文書 31を示す。 分割部分 311が変更され、 分割部分 312は変更されないものと する。分割部分 311は、文書部分 31— 1, 31— 2, 31—4力らなる。更新前
の文書部分 31-2が更新後に文書部分 31- 21に更新されると、文書部分 31- 21に続くべき文書部分 31-4の位置は、 文書部分 31-21のサイズに合わせ て調整され、 分割部分 311のみが詰め直される。 分割部分 312は、 文書部分 31- 5力らなり、 変更されることなく、 分割部分 311に続く。
図 15において、 構造化文書保持部 210は、 図 5に示す第 1のメモリ 21の 代わりに設けられる。 構造化文書保持部 210は、 分割部 211、 分割文書管理 部 212及び分割文書保持部 213力 なる。 分割部 211は、 入力された構造 化文書 31を予め定められたサイズ (又は分割幅) で分割する。 この場合、 構造 化文書 31は、分割部分 311, 312に分割される。分割文書保持部 213は、 メモリからなり、 分割部分 311, 312等の分割文書 (ブロック) を分割文書 管理部 212の管理下で格納する。 分割文書管理部 212は、 分割部分 311, 312等の分割文書 (ブロック) の分割文書保持部 213に対する書き込み及び 読み出しの制御と、 分割文書 (ブロック) の更新に伴う分割部分 (ブロック) の 再分割の制御、 更新された分割部分 (ブロック) の詰め直しの制御等を行う。 尚、分割部 211及び/又は分割文書管理部 212の機能を処理部 23で実現す るようにしても良い。 更に、 構造化文書保持部 210を分割文書保持部 213と して機能する第 1のメモリ 21で実現し、 分割部 211及び分割文書管理部 21 2の機能を処理部 23で実現しても良く、 この場合は、 図 5に示す第 1実施例の 機能プロックをそのまま第 2実施例で使用可能である。
説明の便宜上、図 16に示す処理は、図 5に示す処理部 23を構成する CPUによ り実行されるものとする。 図 16において、 ステップ S 21は、 入力された構造 化文書 31を分割部分 311, 312に分割して分割文書保持部 213に格納す る。 ステップ S 22は、 更新の対象となる構造化文書 31の分割部分 311内の 文書部分 31-2を取得する。 ステップ S 23は、 文書部分 31-2を文書部分 3 1- 21に更新する。ステップ S 24は、文書部分 31-1, 31- 4と更新後の文 書部分 31- 21からなる分割部分(ブロック)のサイズが予め定められたサイズ より大きいか否かを判定する。 ステップ S 24の判定結果が NOであると、 処理 は後述するステップ S 26へ進む。
ステップ S 24の判定結果が YESであると、 文書部分 31-1, 31- 4と更
新後の文書部分 3 1 - 2 1力らなる分割部分(ブロック) を再分割し、 1つの分割 部分 (ブロック) のサイズが上記予め定められたサイズより大きくならないよう にする。ステップ S 2 5の後、又は、ステップ S 2 4の判定結果が NOであると、 ステップ S 2 6は、 更新後の 1又は複数の分割部分 (プロック) のサイズに合わ せてこの分割部分 (ブロック) に続くべき分割部分 (ブロック) 3 1 2の位置を 調整し、構造化文書 3 1全体を詰め直す。ステップ S 2 7は、文書部分 3 1 - 2 1 を含む更新後の構造化文書 3 1を第 1のメモリ 2 1に書き込んで更新を反映し、 処理は終了する。
これにより、 分割部分 (ブロック) の更新に伴う分割部分のサイズの変化を、 分割部分の境界で吸収することができる。
次に、 本発明になる構造化文書処理装置の第 3実施例を、 図 1 7〜図 1 9と共 に説明する。 構造化文書処理装置の第 3実施例は、 本発明になる構造化文書処理 方法の第 3実施例及び本発明になる記憶媒体の第 3実施例を採用する。図 1 7は、 本発明になる構造化文書処理装置の第 3実施例の機能プロック図である。 図 1 7 中、 図 5と同一部分には同一符号を付し、 その説明は省略する。 又、 図 1 7中、 第 1及び第 2のメモリ 2 1, 2 2の図示は省略する。 図 1 8は、 第 3実施例の受 付処理を説明するフローチャートであり、 図 1 9は、 第 3実施例の動作を説明す るフローチヤ一トである。
構造化文書 3 1をテキストのままで扱うメリットは、排他処理に対してもある。 つまり、 特定の要素配下にある要素郡に対して排他処理を行なう場合、 該当する 要素の開始タグと終了タグの位置を求め、 その幅の交差がある力否かの判断を行 うだけで、 並列処理が可能力否かの判断を行なうことができる。
図 1 7において、 構造化文書処«置は、 図 5に示す構成に加え、 複数の処理 依頼を同時に受け付けて、 順に処理部 1 3へ処理依頼をする排他管理部 4 0を有 する。 排他管理部 4 0は、 処理受付部 4 1、 処理領域情報取得部 4 2、 処理スタ ック部 4 3、 領域交差チェック部 4 4及ぴ処理依頼部 4 5からなる。 本実施例で は、 排他管理部 4 0の一部又は全部の機能は、 処理部 2 3の機能を実現する CPU により実現されるが、 排他管理部 4 0の機能を専用のプロセッサ及びメモリによ り実現するようにしても良いことは言うまでもない。
処理受付部 4 1は、 ユーザアブリケーシヨン 3 2からの処理要求を入力する。 処理領域情報取得部 4 2は、構造化文書 3 1のどこの領域(例えば、何バイト目) に対する処理を行うかを示す処理領域情報を、 入力した処理要求から取得する。 処理スタック部 4 3は、 どこのタグをどのように書き換える力等を示す処理内容 を、 入力した処理要求から取得してスタックする。 領域交差チェック部 4 4は、 例えば他のスレツドで処理中の処理領域と、 入力した処理要求から取得された処 理領域情報で示される処理領域とが交差するカゝ否かを判定する。 つまり、 領域交 差チェック部 4 4は、 処理スタック部 4 3にスタックした処理又は処理部 1 3で 処理中の処理が処理対象としている処理領域と、 処理受付部 4 1が入力した処理 要求が要求する処理が処理対象としている処理領域とが交差するカゝ否かをチエツ クする。 領域交差チヱック部 4 4により、 処理領域の交差がないと判定された場 合には、 処理依頼部 4 5は、 処理領域情報で示される処理領域に対して処理内容 の処理の依頼を処理部 2 3に対して行う。他方、領域交差チェック部 4 4により、 処理領域の交差があると判定された場合には、 処理内容がスタック部 4 3により スタックされる。
図 1 8に示す受付処理は、 図 1 7に示す処理受付部 4 1、 処理領域情報取得部 4 2及ぴ処理スタック部 4 3を構成する CPUにより実行される。ステップ S 3 1は、 ユーザアプリケーション 3 2からの処理要求を入力する。 ステップ S 3 1は、 構 造化文書 3 1のどこの領域 (例えば、 何バイト目) に対する処理を行うかを示す 処理領域情報を、 入力した処理要求から取得する。 ステップ S 3 3は、 どこのタ グをどのように書き換えるか等を示す処理内容を、 入力した処理要求から取得し てスタックし、 処理は終了する。
図 1 9に示す処理は、 図 1 7に示す領域交差チェック部 4 4及び処理依頼部 4 5を構成する CPUにより実行される。ステップ S 4 1は、スタックされている処理 内容の 1つを選択する。 ステップ S 4 2は、 選択された 1つの処理内容に基づい て処理するべき処理領域情報で示される処理領域と、 例えば他のスレツドで処理 中の処理領域とが交差するカゝ否かを判定する。 ステップ S 4 2の判定結果が NO であると、 ステップ S 4 3は、 処理領域情報で示される処理領域に対して処理内 容の処理の依頼を処理部 2 3に対して行レ、、処理はステップ S 4 5へ進む。他方、
ステップ S 4 2の判定結果が Y E Sであると、 ステップ S 4 4は、 処理内容をス タックし、 処理はステップ S 4 1へ戻る。 ステップ S 4 5は、 スタックされた全 ての処理内容が選択された力、否かを判定し、 判定結果が NOであると、 処理はス テツプ S 4 1へ戻る。 他方、 ステップ S 4 5の判定結果が Y E Sであると、 処理 は終了する。
本発明になるコンピュータ読み取り可能な記憶媒体の各実施例は、 コンビユー タに上記の如き構造化文書処理を行わせてコンピュータを構造化文書処理装置と して動作させるコンピュータプログラムを格納する記録媒体により実現される。 記録媒体は、 コンピュータプログラムを格納可能なものであれば特に限定されず 、 磁気記録媒体、 光記録媒体、 光磁気記録媒体、 半導体記憶装置等を用いること が可能である。 又、 コンピュータプログラムは、 ネットーワーク等の媒体を介し て他のコンピュータからコンピュータの記憶装置にダウンロードされても良い。 本発明は、 CPU等のプロセッサ及ぴメモリからなる汎用コンピュータゃ各種電 子装置等に適用可能であり、 本発明が適用される装置は可搬型の装置であっても 良い。
尚、 本発明は、 上記実施例に限定されるものではなく、 本発明の範囲内で種々 の改良及び変更が可能であることは、 言うまでもない。