(57)【特許請求の範囲】
【請求項１】
構造化文書を格納する構造化文書保持部と、
前記構造化文書保持部に格納されている構造化文書を木構造で捉え、前記木構造のうちユーザアプリケーションによって特定された部分木を管理する部分木管理部と、
前記部分木管理部から通知された部分木に対応する構造化文書の一部を前記構造化文書保持部から取得し、取得した構造化文書の一部を構造解析して木構造に階層化されたオブジェクトに展開する展開部と、
前記展開部で展開したオブジェクトをユーザアプリケーションからの指示に従って処理する処理部とを備え、
前記部分木管理部は、構造化文書の中の特定のタグで囲われた領域の部分木が前記構造化文書のどの位置にあるのかを保持する位置保持部を備え、
前記展開部は、前記位置保持部に保持する位置情報を用いて、任意の部分木に対応する構造化文書の一部を取得してオブジェクトに展開し、該展開したオブジェクトを前記処理部に受け渡すことを特徴とする構造化文書処理システム。
【請求項２】
請求項１記載の構造化文書処理システムに於いて、
前記部分木管理部は、
前記展開部により展開された部分木に対応する構造化文書の一部のオブジェクトをキャッシングするキャッシング管理部を備え、
前記処理部にて処理対象となる部分がキャッシング管理部に保持していないとき、前記展開部は、前記位置保持部の位置情報を用いて部分木に対応する構造化文書の一部を取得してオブジェクトに展開し、該展開したオブジェクトを前記処理部に受け渡すことを特徴とする構造化文書処理システム。
【請求項３】
請求項１又は２記載の構造化文書処理システムに於いて、前記部分木管理部は、構造化文書を１つ又は複数の部分木を１単位として分割して前記構造化文書保持部に格納する構造化文書分割部を備えたことを特徴とする構造化文書処理システム。
【請求項４】
請求項１記載の構造化文書処理システムに於いて、更に、
前記処理部で変更があった部分木のオブジェクトを構造化文書に逆変換して前記構造化文書保持部に格納する逆変換部と、
前記処理部で変更がなかった前記構造化文書保持部の構造化文書の部分をそのままコピーして前記逆変換により格納された部分と合わせて変更後の構造化文書を生成するコピー部と、
を設けたことを特徴とする構造化文書処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＳＧＭＬ（Standard Generated Markup Language）、ＸＭＬ（Extensible Markup Language）、ＨＴＭＬ（HyperText Markup Language）文書などの構造化文書を扱う処理システムに関し、特に、構造化文書を木構造として捉えて処理する構造化文書処理システムに関する。
【０００２】
【従来の技術】
近年、インターネットを通じて複数のシステム、企業、個人が繋がれ、電子取引（ＥＤＩ）、電子商取引（ＥＣ）、携帯電話サービスやデジタルテレビ向けのサービス、ウェブ（Ｗｅｂ）サービスなど、幅広いデータ交換が行われるようになってきている。このような状況にあわせて、計算機で扱うデータの形式を統一する動きがある。
【０００３】
これまで、計算機あるいはアプリケーションによってばらばらであったデータ形式を異なる計算機、アプリケーションでも使用できるようにするものである。この統一のための規格は、ＸＭＬとして１９９８年２月にＷ３Ｃ（World Wide Web Consortium）によって正式に勧告されている。
【０００４】
ＸＭＬ規格は、同様の規格ＳＧＭＬのサブセットになっている。また、ＸＭＬ文書をメモリ上のオブジェクトに展開し、そのオブジェクトを扱うインタフェースの規格ＤＯＭ（Document Object Model）も１９９８年１０月にＷ３Ｃによって勧告されている。
【０００５】
以下では、ＸＭＬ規格に基づき、「＜」と「＞」で囲まれた文字列をタグ、「＜文字列＞」を開始タグ、「＜／文字列＞」を終了タグ、開始タグと終了タグで挟まれた文字列を要素、タグ内に記述される要素の名前を要素名、要素に対する付加情報を属性と呼ぶようにする。
【０００６】
ＸＭＬ文書は、文書自身の中にタグを埋め込む形で、データ構造を記述する。データ構造をタグとして文書に埋め込んだ構成を取ることにより、データ構造の柔軟性と拡張性の高さを持っている。またタグを人が見て意味のあるテキストで記述することにより、それまで独立のシステムで扱っていたデータを他のシステムでも容易に扱うことができる。
【０００７】
ＸＭＬ文書から、要素名、要素内容、属性、文字列などの内容を取得してユーザアプリケーションに渡したり、内容を変更、追加、削除したりするＸＭＬプロセッサとして、ＤＯＭプロセッサが広く使われている。
【０００８】
図９は従来例の説明図である。従来の構造化文書処理システムは、構造化文書保持部１、展開部２、オブジェクト保持部３、処理部４、ユーザアプリケーション６が設けている。構造化文書保持部１はディスク等にＸＭＬ文書等の構造化文書を格納する。展開部２は、ＸＭＬ文書等の構造化文書を構造解析し、オブジェクト保持部３にオブジェクトとして展開する。これをＤＯＭ木展開という。
【０００９】
オブジェクト保持部３はメモリであり、展開部２が展開したオブジェクトを保持する。処理部４はＷ３Ｃ規格のＡＰＩ群を提供するプログラム（ＤＯＭプロセッサ）であり、オブジェクト保持部３のオブジェクトをユーザアプリケーション６の指示に従って処理する。ユーザアプリケーション６は展開された構造化文書を扱う。
【００１０】
ここで処理部（ＤＯＭプロセッサ）４にて処理するためには、まず展開部（ＤＯＭ木展開部）２にて、構造化文書であるＸＭＬ文書を構造解析し、オブジェクト保持部（メモリ）３にオブジェクト（ＤＯＭ木）を展開する。ＸＭＬ文書は直列のテキストであるが、オブジェクトとして展開されるＤＯＭ木は各要素ごとに分離され、タグで記述されたデータ構造に従って格納される。以下では、ＸＭＬ文書等の構造化文書を構造解析し、メモリ上に展開したものをオブジェクトと呼ぶ。このように展開部２及び処理部４を利用することにより、構造解析が不要になるため、ユーザアプリケーション６を簡単に作成できる。
【００１１】
図１０は従来の処理フローチャートであり、処理Ｓ１１〜Ｓ１２に従って説明する。
【００１２】
Ｓ１１：展開部２は、ユーザアプリ６から各種の処理の指示があると、構造化文書全体をオブジェクト保持部（メモリ）３に展開し、処理Ｓ１２に移る。
【００１３】
Ｓ１２：処理部４は、ユーザアプリケーション６からの指示に従って各種の処理を行って、この処理を終了する。
【００１４】
しかし、図９に示すように、従来の展開部２は、一旦、ＸＭＬ文書全体をメモリ上に展開するため、展開部２のＣＰＵ（Central Processing Unit）負荷が高く、必要となるメインメモリの量も多い問題があった。これらを改善するものとしてＰＤＯＭモデル（ＰＤＯＭ：Parse Document Object Model）がある。
【００１５】
図１１は、従来例の解析文書オブジェクトモデル（ＰＤＯＭ）の説明図である。従来の構造化文書処理システムには、構造化文書保持部１、展開部２、オブジェクト保持部３、処理部４、ユーザアプリケーション６が設けてある。このシステムは、構造化文書１０をオブジェクトに展開した後に、オブジェクトを直列のバイナリデータからなる木構造文書１０Ｂに変換して構造化文書保持部１に保存し、この木構造文書１０Ｂの一部である部分木（ＤＯＭ木）１１をオブジェクト保持部３であるメモリ上にキャッシングして、オブジェクト（ＤＯＭ木）の処理を行う。
【００１６】
図１２は従来のＰＤＯＭ処理のフローチャートであり、処理Ｓ２１〜Ｓ２３に従って説明する。
【００１７】
Ｓ２１：展開部２は、ユーザアプリケーション６から各種の処理の指示があると、構造化文書保持部１の構造化文書１０の全体を木構造文書１０Ｂに展開して構造化文書保持部ｌに格納し、処理Ｓ２２に移る。
【００１８】
Ｓ２２：処理部４は、エーザアプリケーション６から指示があった処理に使用する木構造文書１０Ｂの一部の部分木１１を構造化文書保持部ｌからオブジェクト保持部３であるメモリ上に読み出し、処理Ｓ２３に移る。
【００１９】
Ｓ２３：処理部４は、ユーザアプリケーション６からの指示に従って各種の処理を行って、この処理を終了する。
【００２０】
【非特許文献１】
Akmal B. Chaudhri, Roberto Zicari編著、Gerald Huck, Ingo Macherius, Peter Frankhauser著、「Succeeding with Object Databases」、第６章、John Wiley & Sons Inc; ISBN: 0471383848 , 2000年10月30日
【００２１】
【発明が解決しようとする課題】
しかしながら、このような従来のシステムは、次のような課題があった。
【００２２】
（１）ＸＭＬ文書等の構造化文書が大きくなると、ＤＯＭ木に展開する処理が処理の大部分を占めるようになる。また、ＤＯＭ木は元の構造化文書の５〜１０倍の容量が必要となり、数十ＭＢより大きな構造化文書は、従来のＤＯＭプロセッサでは扱えないものであった。
【００２３】
（２）これらを改善したものにＰＤＯＭがあるが、初回のＤＯＭ木展開のＣＰＵ負荷は同様に高いものであった。また、ＸＭＬ文書等の構造化文書とは別管理のバイナリができるため、データの一元管理ができないものであった。
【００２４】
本発明は、構造化文書を木構造で捉えたとき、木を複数の部分木に分けて管理し、構造化文書の一部しか展開しないようにして高い処理性能を得るようにした構造化文書処理システムを提供することを目的とする。
【００２５】
【課題を解決するための手段】
図１は、本発明による構造化文書処理システムの原理説明図である。本発明は、従来の課題を解決するため次のような手段を有する。
【００２６】
（１）本発明の構造化文書処理システムは、構造化文書を格納する構造化文書保持部１と、構造化文書保持部１に格納されている構造化文書１０を木構造で捉え、木構造を部分木に分けて管理する部分木管理部５と、部分木管理部５から通知された部分木に対応する構造化文書の一部１０−０を構造化文書保持部１から取得し、取得した構造化文書の一部を構造解析して木構造に階層化されたオブジェクト１１−０に展開する展開部２と、展開部２で展開したオブジェクト１１−０をユーザアプリケーション６からの指示に従って処理する処理部４とを備えたことを特徴とする。このため、構造化文書の一部しか展開しないので高い処理性能を得ることができる。
【００２７】
（２）ここで部分木管理部５は、構造化文書１０の中の特定のタグで囲われた領域の位置を部分木の位置として保持する位置保持部を備え、展開部２は、位置保持部に保持している位置情報を用いて、任意の部分木に対応する構造化文書１０の一部を取得してオブジェクト１１−０に展開し、この展開したオブジェクト１１−０を処理部４に受け渡す。このように特定のタグで囲われた領域しか展開しないので高い処理性能を得ることができる。
【００２８】
（３）また部分木管理部５は、構造化文書１０の中の特定のタグで囲われた領域の位置を部分木の位置として保持する位置保持部と、展開部２により展開された部分木に対応した構造化文書１０の一部１０−０のオブジェクト１１−０をキャッシングするキャッシング管理部とを備え、処理部４にて処理対象となる部分がキャッシング管理部に保持していないとき、展開部２は、位置保持部の位置情報を用いて部分木に対応する構造化文書の一部を取得してオブジェクトを展開し、展開したオブジェクトを処理部４に受け渡す。このため、キャッシング管理部に保持された処理対象となる部分の処理性能を高めることができる。
【００２９】
（４）部分木管理部５は、構造化文書を１つ又は複数の部分木を１単位として分割して構造化文書保持部１に格納する構造化文書分割部を備えたことを特徴とする。このため、構造化文書保持部１の構造化文書を分割した文書として管理することができ、分割した一つの文書の変更が分割した他の文書に影響することを防ぐことができる。
【００３０】
（５）本発明の構造化文書処理システムは、更に、処理部４で変更があった部分木のオブジェクトを構造化文書に逆変換して構造化文書保持部１に格納する逆変換部と、処理部４で変更がなかった構造化文書保持部１の構造化文書１０の部分をそのままコピーして逆変換により格納された部分と合わせて変更後の構造化文書を生成するコピー部とを設けたことを特徴とする。このため逆変換は変更した部分木のみであるため高い処理性能を得ることができる。
【００３１】
【発明の実施の形態】
図２は、本発明の構造化文書処理システムの説明図である。図２において、構造化文書保持部１はＸＭＬ文書等の構造化文書１０を格納する。構造化文書保持部１は通常はシステム自身のディスクであるが、メモリやネットワークを経由した他のシステムのディスクや他の媒体であっても良い。展開部２はＣＰＵであり、ＸＭＬ文書等の構造化文書１０を構造解析し、文書オブジェクトモデル（ＤＯＭ：Document Object Model）として知られたＤＯＭ木である木構造に階層化されたオブジェクトに展開する。
【００３２】
オブジェクト保持部３はメモリであり、展開部２が展開したオブジェクトを保持する。処理部４はＷ３Ｃ規格のＡＰＩ群を提供するプログラム（ＤＯＭプロセッサ）であり、オブジェクト保持部３のオブジェクトをユーザアプリケーション６の指示に従って処理する。
【００３３】
部分木管理部５は、ＸＭＬ文書等の構造化文書１０を木構造で捉え、木構造を複数の部分木に分けて管理する。このため部分木管理部５は位置保持部２１を備えている。位置保持部２１は、各部分木がＸＭＬ文書等の構造化文書のどの位置にあるのかを保持する。
【００３４】
具体的に位置保持部２１は、構造化文書１０の中の特定のタグで囲われた領域の開始位置を部分木の位置として保持している。このため展開部２は、位置保持部２１の位置情報を用いて、任意の部分木に対応する構造化文書１０の一部を取得してオブジェクトに展開できる。
【００３５】
なお、展開部２又は処理部４にオブジェクト保持部３の機能を持たせることができれば、オブジェクト保持部３は省略できる。
【００３６】
ここで図２の処理を説明する。部分木管理部５の位置保持部２１は、ユーザアプリケーション６から各種の処理の指示があると、この指示のあった構造化文書保持部１の構造化文書１０の部分木を特定し、展開部２に通知する。展開部２は、構造化文書保持部１から特定した構造化文書１０の部分木に相当する部分１０−０を取出し、オブジェクト１１−０に展開してオブジェクト保持部３へ格納する。
【００３７】
処理部４は、オブジェクト保持部３に保持されている展開された部分木に相当するオブジェクト１１−０を使用し、ユーザアプリケーション６からの指示に従った各種の参照や変更等の処理を行い、結果をユーザアプリケーション６に通知する。
【００３８】
図３は、本発明による構造化文書処理のフローチャートであり、処理Ｓ１〜Ｓ３に従って説明する。
【００３９】
Ｓ１：部分木管理部５は、ユーザアプリケーション６から各種の処理の指示があると、構造化文書保持部１の構造化文書１０における指示のあった部分木に対応した文書位置を特定し、処理Ｓ２に移る。
【００４０】
Ｓ２：展開部２は、構造化文書の部分木に相当する一部１０−０を読み出してオブジェクト保持部３上にオブジェクト（ＤＯＭ木）１１−０として展開し、処理Ｓ３に移る。
【００４１】
Ｓ３：処理部４は、オブジェクト１１−０に対しユーザアプリケーション６からの指示に従った各種の処理、即ち参照や変更等を行って、この処理を終了する。
【００４２】
このように、ＸＭＬ文書等の構造化文書を木構造で捉え、この木構造を複数の部分木に分けて管理する部分木管理部５を持ち、アクセスのあった部分木に対応するＸＭＬ文書等の構造化文書の一部をオブジェクトに展開して処理部４へ渡すことによって、構造化文書１０の全体を展開する必要をなくすことができる。また、ＸＭＬ文書等の構造化文書の一部しか展開しないため、展開部２のＣＰＵ負荷が低く、必要となるメインメモリの量も少ない。
【００４３】
図４は、キャッシング管理部を備える構造化文書処理システムの説明図である。図４において、構造化文書処理システムには、構造化文書保持部ｌ、展開部２、オブジェクト保持部３、処理部４、部分木管理部５、ユーザアプリケーション６が設けられ、更に、部分木管理部５に、位置保持部２１に加えてキャッシング管理部２２を追加している。キャッシング管理部２２は、展開部２によって既に展開してオブジェクト保持部３に保持されたオブジェクトのキャッシングを管理する。
【００４４】
図４のキャッシング管理部２２による処理の流れは次のようになる。部分木管理部５は、ユーザアプリケーション６から処理の依頼を受けると、依頼された処理で使用する部分木のオブジェクト１１−０が既に展開しているか否かキャッシング管理部２２にて調べる。
【００４５】
処理対象となる部分木オブジェクト１１−０が既に展開されている場合には、処理部４にてオブジェクト保持部３にあるオブジェクト１１−０を使用して処理し、結果をユーザプリケーション６に通知する。
【００４６】
一方、処理対象となる部分木のオブジェクト１１−０がまだ展開していない場合は、位置保持部２１にて該当する部分木に相当する部分１０−０を展開部２に通知し、展開部２にて構造化文書保持部１の構造化文書１０から部分木に対応した一部１０−０を読出し、オブジェクト１１−０に展開してオブジェクト保持部３に保持してから、処理部４にて処理し、結果をユーザプリケーション６に通知する。このときオブジェクト保持部３に保持しているオブジェクト１１−０は、その後、キャッシング管理部２２に関連づけられる。
【００４７】
図５は、図４の位置保持部２１で管理される部分木位置リストおよび図４のキャッシング管理部２２で管理される部分木キャッシングリストの具体例の説明図である。尚、図２の位置保持部２１で管理される部分木位置リストも同じである。
【００４８】
図５において、位置保持部２１の部分木位置リスト２３には、ユーザアプリケーション６から依頼された処理に使用する部分木が構造化文書のどの位置（開始位置）にあるのかの情報が保持される。またキャッシング管理部２２の部分木キャッシングリスト２４には、オブジェクト保持部３上に展開したオブジェクトを管理する位置情報が保持される。
【００４９】
即ち、部分木位置リスト２３にあっては、部分木に対応してＩＤを割当て、各ＩＤ毎に部分木の構造化文書における開始位置（開始アドレス）を格納している。この例では、部分木ＩＤ＝０を指定することで、部分木ＩＤ＝０の構造化文書１０における開始位置が部分木位置リスト２３から取得され、これに対応した構造化文書１０の部分１０−０を構造化文書保持部１から読み出して展開部２にてオブジェクト１１−０に展開している。
【００５０】
このように展開された部分木のオブジェクト１１−０は図４のキャッシング管理部２２によって部分木キャッシングリスト２４の部分木ＩＤ＝０に関連づけられる。ここで部分木キャッシングリスト２４の「Ｎ」は「ＮＵＬＬ」を意味し、対応するオブジェクトがキャッシングされていないことを示している。
【００５１】
なお、部分木位置リスト２３及び部分木キャッシングリスト２４としては、構造化文書の開始位置だけでなく、開始位置とサイズをＩＤ毎に保持するようにしても良い。
【００５２】
図６は、構造化文書を複数の領域に分割して管理する部分木管理部５の説明図である。図６において、部分木管理部５には、部分木位置リスト２３と部分木キャッシングリスト２４に加え、更に構造化文書分割部２５が設けられる。この例で構造化文書分割部２５は、２個の部分木ごとに構造化文書１０を分割している。即ち、部分木位置リスト２３における部分木ＩＤにつき、（ＩＤ＝０，ＩＤ＝１），（ＩＤ＝２，ＩＤ＝３）…・のように、２つのＩＤの組によって構造化文書１０を分割構造化文書１０−０１，１０−１１，…に分割している。
【００５３】
このため構造化文書分割部２５は、部分木位置リスト２３に対し例えば部分木ＩＤ＝０の部分木の使用が指定された場合、部分木ＩＤ＝０と部分木ＩＤ＝１で指定される位置の領域となる分割構造化文書１０−０１を一度に展開し、展開したオブジェクト１１−０１をオブジェクト保持部３に保持する。
【００５４】
このように展開された分割構造化文書の部分木オブジェクト１１−０１は、構造文書分割部２５を経由して部分木キャッシングリスト２４に関連づけされる。また構造化文書分割部２５により分割する単位は、展開の処理効率に応じて任意に設定される。
【００５５】
このように、構造化文書を複数の領域に分割して管理することにより、分割した一つの文書の変更が分割した他の文書に影響すること、例えば桁ずらし等を防ぐことができる。また、ある単位で構造化文書を一度に展開する方が、部分木単位で複数回に分けて展開するより効率よく展開することができる。
【００５６】
図７は、構造化文書の内容を変更して構造化文書に反映させる本発明の他の実施形態の説明図である。図７において、構造化文書処理システムには、構造化文書保持部１、展開部２、オブジェクト保持部３、処理部４、部分木管理部５、ユーザアプリケーション６が設けられ、更に逆変換部７とコピー部８を追加している。
【００５７】
逆変換部７は、処理部４で変更があった部分木のオブジェクトを元の構造化文書の部分に逆変換して構造化文書保持部１に格納する。またコピー部８は、処理部４で変更がなかった構造化文書保持部１の構造化文書１０の部分をそのままコピーし、逆変換部７により逆変換されて格納された部分と合わせて変更後の更新構造化文書１０Ａを生成する。
【００５８】
次に、図７の処理を説明する。部分木管理部５は、ユーザアプリケーション６から内容変更の処理の指示があると、この指示のあった構造化文書保持部１の構造化文書１０の部分木を特定し、展開部２に通知する。展開部２は、構造化文書保持部１から特定した構造化文書の部分木に相当する部分１０−０を取り出し、部分木のオブジェクト１１−０に展開してオブジェクト保持部３に送る。処理部４は、オブジェクト保持部３に保持されている展開されたオブジェクト１１−０に相当する部分を使用してユーザアプリケーション６からの指示に従った変更処理を行う。
【００５９】
逆変換部７は、変更処理を行った部分木のオブジェクト１１−０を構造化文書に逆変換し、構造化文書保持部１における更新構造化文書１０Ａの中に逆変換データ７ａとして格納する。変更処理を行った部分木以外の領域は、コピー部８で元の構造化文書の該当部分をそのままコピーし、構造化文書保持部１における更新構造化文書１０Ａにコピーデータ８ａとして格納する。
【００６０】
なお、図７の実施形態では逆変換データ７ａとコピーデータ８ａを別々に格納して組み合わせているが、構造化文書１０を更新構造化文書１０Ａとしてコピーした後に、変更済みの逆変換データを上書きしても良い。
【００６１】
図８は、従来技術と本発明の性能比較の説明図である。図８において、従来方式では、構造化文書全体をメモリ上に展開するため、展開部２のＣＰＵの負荷が大きくなりメモリ消費量も多くなる。また、従来のＰＤＯＭ方式では、構造化文書保持部上の構造化文書全体を展開し構造化文書保持部に格納するため、初回の展開のＣＰＵ負荷が大きくなり、メモリ消費量は少なくなる。これに対し、本願発明は、構造化文書の一部しか展開しないため、展開部のＣＰＵの負荷が少なくなり、メモリ消費量も少なくなる。
【００６２】
次に本発明のコンピュータにより実現されるハードウェア資源とプログラムのインストールを説明する。
【００６３】
上記の実施形態における構造化文書保持部１、展開部２、オブジェクト保持部３、処理部４、部分木管理部５、位置保持部２１、キャッシング管理部２２、構造化文書分割部２５は、プログラムで構成でき、主制御部（ＣＰＵ）が実行され、主記憶に格納されているものである。
【００６４】
このプログラムは、一般的なコンピュータで処理されるものである。このコンピュータは、主制御部、主記憶、ファイル装置、表示装置、キーボード等の入力手段である入力装置などのハードウェアで構成されている。
【００６５】
このコンピュータに、本発明のプログラムをインストールする。このインストールは、フロッピィディスク（Ｒ）、光磁気ディスク等の可搬型の記録（記憶）媒体に、これらのプログラムを記憶させておき、コンピュータが備えている記録媒体に対して、アクセスするためのドライブ装置を介して、或いは、ＬＡＮ等のネットワークを介して、コンピュータに設けられたファイル装置にインストールされる。そして、このファイル装置から処理に必要なプログラムステップを主記憶に読み出し、主制御部が実行するものである。
【００６６】
このプログラムをコンピュータにインストールすることで、構造化文書の一部しか展開しないようにして高い処理性能を得ることができる構造化文書処理システムを容易に提供することができる。
【００６７】
以上、実施形態で説明したように、部分木管理部を使用することにより、ＸＭＬ文書等の構造化文書全体をメモリ上に展開する必要がなく、低ＣＰＵ負荷、省メインメモリで動作するＤＯＭプロセッサを実現することができる。特に、ＸＭＬ文書の一部のみを変更・追加・削除して他のシステムに受け渡すような用途で高い性能が得られる。
【００６８】
また、ＸＭＬ文書を扱う基本アプリケーションであるＤＯＭプロセッサの性能をアップすることができる。既存のＤＯＭプロセッサに強く求められている問題点、ＣＰＵの高負荷、膨大なメインメモリの問題を解決するものである。
【００６９】
なお、本発明は、その目的と利点を損なうことのない適宜の変形を含む。また本発明は、上記の実施形態に記載された数値による限定は受けない。
【００７０】
ここで本発明の特徴を列挙すると、次の付記のようになる。
（付記）
（付記１）
構造化文書を格納する構造化文書保持部と、
前記構造化文書保持部に格納されている構造化文書を木構造で捉え、前記木構造を部分木に分けて管理する部分木管理部と、
前記部分木管理部から通知された部分木に対応する構造化文書の一部を前記構造化文書保持部から取得し、取得した構造化文書の一部を構造解析して木構造に階層化されたオブジェクトに展開する展開部と、
前記展開部で展開したオブジェクトをユーザアプリケーションからの指示に従って処理する処理部と、
を備えたことを特徴とする構造化文書処理システム。（１）
【００７１】
（付記２）
付記１記載の構造化文書処理システムに於いて、
前記部分木管理部は、構造化文書の中の特定のタグで囲われた領域の位置を部分木の位置として保持する位置保持部を備え、
前記展開部は、前記位置保持部に保持する位置情報を用いて、任意の部分木に対応する構造化文書の一部を取得してオブジェクトに展開し、該展開したオブジェクトを前記処理部に受け渡すことを特徴とする構造化文書処理システム。（２）
【００７２】
（付記３）
付記１記載の構造化文書処理システムに於いて、
前記部分木管理部は、
構造化文書の中の特定のタグで囲われた領域の位置を部分木の位置として保持する位置保持部と、
前記展開部により展開された部分木に対応した構造化文書の一部のオブジェクトをキャッシングするキャッシング部とを備え、
前記処理部にて処理対象となる部分がキャッシング管理部に保持していないとき、前記展開部は、前記位置保持部の位置情報を用いて部分木に対応する構造化文書の一部を取得してオブジェクトに展開し、該展開したオブジェクトを前記処理部に受け渡すことを特徴とする構造化文書処理システム。（３）
【００７３】
（付記４）
付記２又は３記載の構造化文書処理システムに於いて、前記部分木管理部は、構造化文書を１つ又は複数の部分木の１単位として分割して前記構造化文書保持部に格納する構造化文書分割部を備えたことを特徴とする構造化文書処理システム。（４）
【００７４】
（付記５）
付記１記載の構造化文書処理システムに於いて、更に、
前記処理部で変更があった部分木のオブジェクトを構造化文書に逆変換して前記構造化文書保持部に格納する逆変換部と、
前記処理部で変更ががなかった前記構造化文書保持部の構造化文書の部分をそのままコピーして前記逆変換により格納された部分と合わせて変更後の構造化文書を生成するコピー部と、
を設けたことを特徴とする構造化文書処理システム。（５）
【００７５】
（付記６）
構造化文書保持部に構造化文書を格納する構造化文書保持ステップと、
部分木管理部により、前記構造化文書保持部に格納されている構造化文書を木構造で捉え、前記木構造を部分木に分けて管理する部分木管理ステップと、
展開部により、記部分木管理ステップで通知された部分木に対応する構造化文書の一部を前記構造化文書保持部から取得し、取得した構造化文書の一部を構造解析して木構造に階層化されたオブジェクトに展開する展開ステップと、
処理部により、展開されているオブジェクトをユーザアプリケーションからの指示に従って処理する処理ステップと、
を備えたことを特徴とする構造化文書処理方法。
【００７６】
（付記７）
付記６記載の構造化文書処理方法に於いて、
前記部分木管理ステップは、構造化文書の中の特定のタグで囲われた領域の位置を部分木の位置として保持し、
前記展開ステップは、前記位置保持部に保持する位置情報を用いて、任意の部分木に対応する構造化文書の一部を取得してオブジェクトに展開し、該展開したオブジェクトを前記処理部に受け渡すことを特徴とする構造化文書処理方法。
【００７７】
（付記８）
付記６記載の構造化文書処理方法に於いて、
前記部分木管理ステップは、
構造化文書の中の特定のタグで囲われた領域の位置を部分木の位置として保持する位置保持ステップと、
前記展開ステップにより展開された部分木に対応する構造化文書の一部のオブジェクトをキャッシングするキャッシング管理ステップとを備え、
前記処理ステップにて処理対象となる部分がキャッシングされていないとき、前記展開ステップは、前記位置保持部の位置情報を用いて部分木に対応する構造化文書の一部を取得してオブジェクトに展開し、該展開したオブジェクトを前記処理部に受け渡すことを特徴とする構造化文書処理方法。
【００７８】
（付記９）
付記７又は８記載の構造化文書処理方法に於いて、前記部分木管理ステップは、構造化文書を複数の部分木単位に分割して前記構造化文書保持部に格納する構造化文書分割ステップを備えたことを特徴とする構造化文書処理方法。
【００７９】
（付記１０）
付記６記載の構造化文書処理方法に於いて、更に、
前記処理ステップで変更があった部分木のオブジェクトを構造化文書に逆変換して前記構造化文書保持部に格納する逆変換ステップと、
前記処理ステップで変更がなかった前記構造化文書保持部の構造化文書の部分をそのままコピーして前記逆変換により格納された部分と合わせて変更後の構造化文書を生成するコピーステップと、
を設けたことを特徴とする構造化文書処理方法。
【００８０】
（付記１１）
コンピュータに、
構造化文書保持部に構造化文書を格納する構造化文書保持ステップと、
前記構造化文書保持部に格納されている構造化文書を木構造で捉え、前記木構造を部分木に分けて管理する部分木管理ステップと、
記部分木管理ステップで通知された部分木に対応する構造化文書の一部を前記構造化文書保持部から取得し、取得した構造化文書の一部を構造解析して木構造に階層化されたオブジェクトに展開する展開ステップと、
展開されているオブジェクトをユーザアプリケーションからの指示に従って処理する処理ステップと、
を実行させることを特徴とするプログラム。
【００８１】
（付記１２）
付記１１記載のプログラムに於いて、
前記部分木管理ステップは、構造化文書の中の特定のタグで囲われた領域の位置を部分木の位置として保持し、
前記展開ステップは、前記位置保持部に保持する位置情報を用いて、任意の部分木に対応する構造化文書の一部を取得してオブジェクトに展開し、該展開したオブジェクトを前記処理部に受け渡すことを特徴とするプログラム。
【００８２】
（付記１３）
付記１１記載のプログラムに於いて、
前記部分木管理ステップは、
構造化文書の中の特定のタグで囲われた領域の位置を部分木の位置として保持する位置保持ステップと、
前記展開ステップにより展開された部分木に対応する構造化文書の一部のオブジェクトをキャッシングするキャッシング管理ステップとを備え、
前記処理ステップにて処理対象となる部分がキャッシングされていないとき、前記展開ステップは、前記位置保持部の位置情報を用いて部分木に対応する構造化文書の一部を取得してオブジェクトに展開し、該展開したオブジェクトを前記処理部に受け渡すことを特徴とするプログラム。
【００８３】
（付記１４）
付記１２又は１３記載のプログラムに於いて、前記部分木管理ステップは、構造化文書を複数の部分木単位に分割して前記構造化文書保持部に格納する構造化文書分割ステップを備えたことを特徴とするプログラム。
【００８４】
（付記１５）
付記１１記載のプログラムに於いて、更に、
前記処理ステップで変更があった部分木のオブジェクトを構造化文書に逆変換して前記構造化文書保持部に格納する逆変換ステップと、
前記処理ステップで変更がなかった前記構造化文書保持部の構造化文書の部分をそのままコピーして前記逆変換により格納された部分と合わせて変更後の構造化文書を生成するコピーステップと、
を設けたことを特徴とするプログラム。
【００８５】
（付記１６）
プログラムを記録したコンピュータ読取可能な記録媒体に於いて、
コンピュータに、
構造化文書保持部に構造化文書を格納する構造化文書保持ステップと、
前記構造化文書保持部に格納されている構造化文書を木構造で捉え、前記木構造を部分木に分けて管理する部分木管理ステップと、
前記部分木管理ステップで通知された部分木に対応する構造化文書の一部を前記構造化文書保持部から取得し、取得した構造化文書の一部を構造解析して木構造に階層化されたオブジェクトに展開する展開ステップと、
展開されているオブジェクトをユーザアプリケーションからの指示に従って処理する処理ステップと、
を実行させることを特徴とする記録媒体。
【００８６】
【発明の効果】
以上説明したように、本発明によれば次のような効果がある。
【００８７】
（１）展開部で、部分木管理部から通知された部分木に対応する構造化文書の一部を構造化文書保持部から取得して部分木オブジェクトに展開し、展開したオブジェクトを処理部に受け渡すため、構造化文書の一部しか展開しないので高い処理性能を得ることができる。
【００８８】
（２）部分木管理部に構造化文書の中の特定のタグで囲われた領域の位置を保持する位置保持部に保持する位置情報を用いて、部分木に対応した構造化文書の一部を取得して部分木オブジェクトに展開し、展開したオブジェクトを処理部に受け渡すため、特定のタグで囲われた領域しか展開しないので高い処理性能を得ることができる。
【００８９】
（３）展開したオブジェクトを処理部に受け渡すと共に、キャッシング管理部に保持するため、キャッシング管理部に保持された処理対象となる部分の処理'性能を高めることができる。
【００９０】
（４）構造化文書を分割する構造化文書分割部で、構造化文書を複数の構造化文書に分割して構造化文書保持部に格納するため、分割した一つの文書の変更が分割した他の文書に影響することを防ぐことができる。
【００９１】
（５）展開したオブジェクトを処理部で変更した場合、変更があった箇所の部分木を逆変換部で逆変換し、残りの処理部で変更がない箇所はそのまま構造化文書をコピー部でコピーするため、変更部分を含む構造化文書の生成につき逆変換は変更した部分木オブジェクトのみであるため、高い処理性能を得ることができる。
【図面の簡単な説明】
【図１】本発明の原理説明図
【図２】本発明による構造化文書処理システムの実施形態の説明図
【図３】図２の実施形態における構造化文書処理のフローチャート
【図４】キャッシング管理部を備えた本発明の実施形態の説明図
【図５】本発明における部分木位置リストおよび部分木キャッシングリストの説明図
【図６】構造化文書を複数の構造化文書に分割して管理する実施形態の説明図
【図７】展開したオブジェクトの変更内容を構造化文書に反映させる本発明の他の実施形態の説明図
【図８】従来技術と本発明の性能比較の説明図
【図９】従来例の説明図
【図１０】従来の処理フローチャート
【図１１】従来のＰＤＯＭ処理の説明図
【図１２】従来のＰＤＯＭ処理のフローチャート
【符号の説明】
１：構造化文書保持部
２：展開部
３：オブジェクト保持部
４：処理部
５：部分木管理部
６：ユーザアプリケーション
７：逆変換部
８：コピー部
１０：構造化文書
１０Ａ：更新構造化文書
１０−０１，１０−２３：分割構造化文書
１１−０：オブジェクト
２１：位置保持部
２２：キャッシング管理部
２３：部分木位置リスト
２４：部分木キャッシングリスト
２５：構造化文書分割部
【図１】
0003984129.tif 000002
【図２】
0003984129.tif 000003
【図３】
0003984129.tif 000004
【図４】
0003984129.tif 000005
【図５】
0003984129.tif 000006
【図６】
0003984129.tif 000007
【図７】
0003984129.tif 000008
【図８】
0003984129.tif 000009
【図９】
0003984129.tif 000010
【図１０】
0003984129.tif 000011
【図１１】
0003984129.tif 000012
【図１２】
0003984129.tif 000013