JP3907187B2 - Saxパーサー、saxパーサー用方法、及びプログラム - Google Patents

Saxパーサー、saxパーサー用方法、及びプログラム Download PDF

Info

Publication number
JP3907187B2
JP3907187B2 JP2002222688A JP2002222688A JP3907187B2 JP 3907187 B2 JP3907187 B2 JP 3907187B2 JP 2002222688 A JP2002222688 A JP 2002222688A JP 2002222688 A JP2002222688 A JP 2002222688A JP 3907187 B2 JP3907187 B2 JP 3907187B2
Authority
JP
Japan
Prior art keywords
xml document
set information
cache
event set
application program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2002222688A
Other languages
English (en)
Other versions
JP2004062716A (ja
Inventor
克尚 片岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2002222688A priority Critical patent/JP3907187B2/ja
Priority to US10/632,178 priority patent/US20040034620A1/en
Publication of JP2004062716A publication Critical patent/JP2004062716A/ja
Application granted granted Critical
Publication of JP3907187B2 publication Critical patent/JP3907187B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Document Processing Apparatus (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、XML(eXtensible Markup Language)文書について、アプリケーション・プログラムからの処理要求に応じて文字コード調整及び字句解析の処理と共に、該アプリケーション・プログラムへ、構造化文書に係る一連のイベントを通知する処理とを実施するSAXパーサー、SAXパーサー用方法、及びプログラムに関するものである。
【0002】
【従来の技術】
近年、XML文書は、構成情報等の静的な情報を記述するために、使用される傾向が増大している。XML文書は高い可読性をもつので、アプリケーション・プログラムは、XML文書をインタープリタ形式で、つまり、必要のつど、SAXパーサー(SAX:Simple API for XML)を起動して、SAXパーサーによりXML文書を解析させ、解析結果としてのイベントをSAXパーサーより通知される形式で、該XML文書を処理するのが望ましいことが多い。
【0003】
従来のSAXパーサーは、アプリケーション・プログラムからの処理要求を受けると、一律に、(a)該当XML文書を読込み、(b)文字コード調整、(c)字句解析、及び(d)処理要求して来たアプリケーション・プログラムへの一連のイベントの通知を行っている。
【0004】
【発明が解決しようとする課題】
本発明の目的は、XML文書についてのアプリケーション・プログラムからの処理要求に対して該構造化文書に対応の一連のイベントを該アプリケーション・プログラムへ通知するSAXパーサー、SAXパーサー用方法、及びプログラムにおいて、処理速度を改善することである。
【0005】
【課題を解決するための手段】
本発明のSAXパーサー及び方法は、キャッシュを利用して、アプリケーション・プログラムへ通知した一連のイベントの情報としてのイベント・セット情報をキャッシュにストアする。そして、次に、前回のアプリケーション・プログラムと同一又は別のアプリケーション・プログラムから、イベント・セット情報がキャッシュにストアしてある構造化文書について、処理要求があった場合には、該構造化文書についてキャッシュにストアしてあるイベント・セット情報に基づいて、該構造化文書に係る一連のイベントを順番に、今回の処理要求元のアプリケーション・プログラムへ通知する。こうして、SAXパーサーが、一度、処理して、キャッシュにイベント・セット情報をストアしてそれが残っている構造化文書について、同一又は別のアプリケーション・プログラムがSAXパーサーへ再度、処理要求して来たときは、該アプリケーション・プログラムへのイベント通知処理のための処理量及び処理時間を大幅に低減できる。また、キャッシュにストアされるイベント・セット情報はアプリケーション・ユニークなものではないので、すなわち特定のアプリケーション・プログラムのみへのイベント通知しか適用できないものではないので、キャッシュにストアされるイベント・セット情報の活用が向上する。
【0006】
構造化文書とは、各内容が所定の要素に分類されている文書を含む。各要素は階層化されていてもよいとする。すなわち、本発明の構造化文書には、構造化及び階層化された文書を含む。構造化及び階層化された文書として例えばXML文書がある。構造化文書における各要素の内容は典型的にはテキストで記述される。構造化文書とは、各内容が文書構造上のどの要素に該当するかを示しつつ、要素内容を記述した文書構造定義文書と把握することもできる。構造化文書は文書構造を例えばタグと要素名とにより定義している。
【0007】
本発明のSAXパーサーは、アプリケーション・プログラムから処理要求のあった構造化文書について、字句解析の処理と、該構造化文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理を実施する。該SAXパーサーは、アプリケーション・プログラムへ通知した一連のイベントをイベント・セット情報としてその構造化文書に対応付けてキャッシュにストアするストア手段、及び処理対象の構造化文書についてそのイベント・セット情報がキャッシュに有るときは、該構造化文書に係る一連のイベントをキャッシュのイベント・セット情報に基づいて処理要求元のアプリケーション・プログラムへ順番に通知する第1の通知手段、を有している。
【0008】
本発明のSAXパーサーは、処理要求対象の構造化文書について、それを読込んで、字句解析の処理と、該構造化文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理と、さらに該通知した一連のイベントをイベント・セット情報としてその構造化文書に対応付けてキャッシュにストアする処理とを実施する第1の処理手段、処理要求対象の構造化文書についてのキャッシュのイベント・セット情報を読込んで、該イベント・セット情報に係る一連のイベントを順番に、処理要求元のアプリケーション・プログラムへ通知する第2の処理手段、及び処理対象の構造化文書についてそのイベント・セット情報がキャッシュに有るか無いかを調べそのイベント・セット情報がキャッシュに無いときには第1の処理手段に処理対象の構造化文書についての処理を委譲し、また、そのイベント・セット情報がキャッシュに有るときには第2の処理手段に処理対象の構造化文書についての処理を委譲する制御手段、を有している。
【0009】
本発明のSAXパーサー用方法は、アプリケーション・プログラムから処理要求のあった構造化文書について、字句解析の処理と、該構造化文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理を実施する。該SAXパーサー用方法は、アプリケーション・プログラムへ通知した一連のイベントをイベント・セット情報としてその構造化文書に対応付けてキャッシュにストアする第1のステップ、及び処理対象の構造化文書についてそのイベント・セット情報がキャッシュに有るときは、該構造化文書に係る一連のイベントをキャッシュのイベント・セット情報に基づいて処理要求元のアプリケーション・プログラムへ順番に通知する第2のステップ、を有している。
【0010】
本発明のSAXパーサー用方法は、処理要求対象の構造化文書について、それを読込んで、字句解析の処理と、該構造化文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理と、さらに該通知した一連のイベントをイベント・セット情報としてその構造化文書に対応付けてキャッシュにストアする処理とを実施する標準処理用ステップ、処理要求対象の構造化文書についてのキャッシュのイベント・セット情報を読込んで、該イベント・セット情報に係る一連のイベントを順番に、処理要求元のアプリケーション・プログラムへ通知する短縮処理用ステップ、及び処理対象の構造化文書についてそのイベント・セット情報がキャッシュに有るか無いかを調べそのイベント・セット情報がキャッシュに無いときには標準処理用ステップを実行するように制御し、また、そのイベント・セット情報がキャッシュに有るときには短縮処理用ステップを実行するように制御する制御ステップ、を有している。本発明のSAXパーサー用プログラムは、本発明のSAXパーサー用方法の各ステップをコンピュータに実行させる。
【0011】
【発明の実施の形態】
図1は構造化文書入手のためにインターネット/イントラネット101が利用されるシステムの構成図である。クライアント101は、複数個の構造化文書サーバ102へインターネット/イントラネット101を介して接続されている。例えば、クライアント11は、構造化文書12を使用する後述のアプリケーション・プログラム11(図2)と共に、後述の構造化文書用インターフェース装置10、20、又は25を実装する。クライアント101は、今回の処理対象の構造化文書12(図2)を管理する構造化文書サーバ102へURL(Uniform Resource Locator)を指定してHTTP(HyperText Transfer Protocol)を使ってアクセスし、該所望の構造化文書12を入手する。なお、アプリケーション・プログラム及び構造化文書用インターフェース装置を実装するコンピュータが、自身のローカルのハード・ディスク装置内に処理対象の構造化文書を有していることもあり、そのような場合はパス名やファイル名等を利用して、構造化文書を入手する。
【0012】
図2は本発明の第1の実施形態としての構造化文書用インターフェース装置10の機能ブロック図である。図2におけるS1〜S7は後述の図3のステップS1〜S7に対応する。構造化文書用インターフェース装置10は、種々のアプリケーション・プログラム11,11,・・・から種々の構造化文書12,12,・・・についての処理要求を受け付ける。構造化文書12は、例えば、構造化文書用インターフェース装置10及びアプリケーション・プログラム11を実装するコンピュータ又は該コンピュータとはLAN又はインターネットを介して接続されているサーバの記憶装置の所定フォルダ内に存在する。構造化文書12は、階層化された構造化文書であってもよく、階層化された構造化文書として例えばXML文書がある。アプリケーション・プログラム11,11,・・・は、例えば、構造化文書12の内容に基づく音声応答を電話問い合わせに対して実施するアプリケーション・プログラムや、オペレータの指示に応じて構造化文書12の内容に基づく案内画面を作るアプリケーション・プログラムである。以下、説明の便宜上、処理要求対象の構造化文書12を「構造化文書A」と呼び、構造化文書Aについての処理要求を構造化文書用インターフェース装置10へ先に出したアプリケーション・プログラム11を「アプリケーション・プログラムA」と呼び、構造化文書Aについての処理要求を構造化文書用インターフェース装置10へアプリケーション・プログラムAの後に出したアプリケーション・プログラム11を「アプリケーション・プログラムB」と呼ぶことにする。典型的には、アプリケーション・プログラムBはアプリケーション・プログラムAと異なるものであるが、アプリケーション・プログラムBがアプリケーション・プログラムAである場合もある。構造化文書用インターフェース装置10は、ストア手段15及び第1の通知手段17を備え、キャッシュ16を適宜、利用する。
【0013】
構造化文書用インターフェース装置10は、アプリケーション・プログラムAからの構造化文書Aについての処理要求に対して(S1)、構造化文書Aを読込んで、構造化文書Aの文字コード調整及び字句解析を実施しつつ(S2)、構造化文書Aに係る一連のイベントを、今回の処理要求元であるアプリケーション・プログラムAへ順番に通知する(S3)。なお、文字コード調整とは、構造化文書が日本語XML文書である場合、例えばShift JISからユニコードへの変換である。典型的なXMLパーサーはXML文書をユニコードへ変換して処理する。典型的な構造化文書用インターフェース装置は、構造化文書Aの文字コード調整及び字句解析の両方を実施するが、一部の構造化文書用インターフェース装置は、構造化文書Aの文字コード調整を省略して、直ちに構造化文書Aの字句解析を実施することがある。構造化文書用インターフェース装置10のストア手段15は、アプリケーション・プログラムAへ通知した一連のイベントをイベント・セット情報として構造化文書Aに対応付けてキャッシュ16にストアする(S4)。注意すべきは、字句解析においてエラーが見つかったときは、キャッシュ16へのイベント・セット情報のストアは中止されることである。したがって、構造化文書Aに字句解析上のエラーが1個でもあれば、構造化文書Aについてのキャッシュ16へのイベント・セット情報のストアは行われない。該エラーには例えば、要素名の開始のタグはあるものの、終わりのタグが無いと言うものがある。構造化文書が例えばXML文書である場合の字句解析上のエラーは、W3C(World Wide Web Consortium)のXML1.0(1.0は本願出願時のバージョン)の推薦(Recommndation)に定義されている通りであり、XML1.0の仕様書で規定しているXML規則に違反するものはすべて、字句解析上のエラーに含まれる。次に、アプリケーション・プログラムBが構造化文書用インターフェース装置10へ構造化文書Aについての処理要求を出したとする(S5)。構造化文書用インターフェース装置10の第1の通知手段17は、アプリケーション・プログラムAが構造化文書Aに対する処理要求を出したときの処理全体を繰り返すことなく、具体的には、構造化文書Aの再び読込んで、アプリケーション・プログラムAの文字コード調整及び字句解析を再び実施する処理はせずに、構造化文書Aについてキャッシュ16にストアされているイベント・セット情報を読込み(S6)、読込んだイベント・セット情報に基づいて一連のイベントを検出し、該一連のイベントをアプリケーション・プログラムBへ順番に通知する(S7)。
【0014】
図3は図2の構造化文書用インターフェース装置10の処理手順のフローチャートである。構造化文書用インターフェース装置10はアプリケーション・プログラム11に対して構造化文書API(Application Program Interface)としての機能を果たす。S1では、アプリケーション・プログラムAから構造化文書Aについての処理要求を受け付ける。S2では、構造化文書Aを読込む。アプリケーション・プログラムAからの構造化文書Aについての処理要求では、構造化文書Aはパス名(構造化文書Aがローカル・ファイルの場合)又はURL(構造化文書Aをネットワークを介して入手する場合)で特定されており、構造化文書Aの読込みは、構造化文書用インターフェース装置10を実装するコンピュータが直接(構造化文書Aがパス名で特定されているとき)又はHTTP(構造化文書AがURLで特定されているとき)を介して行われる。S3では、アプリケーション・プログラムAへ該構造化文書Aに係る一連のイベントを順番に通知する。S4では、S3において通知した一連のイベントをイベント・セット情報として構造化文書Aに対応付けてキャッシュ16にストアする。S5では、アプリケーション・プログラムBから構造化文書Aについての処理要求を受け付ける。S6では、キャッシュ16におけるアプリケーション・プログラムAについてのイベント・セット情報を読み出す。S7では、読み出したイベント・セット情報に基づいて一連のイベントを検出し、各イベントを順番にアプリケーション・プログラムBへ通知する。
【0015】
図4は本発明の第2の実施形態としての構造化文書用インターフェース装置20の機能ブロック図である。図4におけるS1〜S13は後述の図5のステップS1〜S13に対応する。構造化文書用インターフェース装置20について、構造化文書用インターフェース装置10との同一部分についての説明は省略し、構造化文書用インターフェース装置10との相違点について説明する。構造化文書用インターフェース装置20では、第2の通知手段22が構造化文書用インターフェース装置10に対して付加されている。ここで次の仮定を行う。該仮定では、キャッシュ16には、構造化文書Aのイベント・セット情報がストアされているものの、構造化文書Aとは別の構造化文書としての構造化文書Bのイベント・セット情報がまだストアされていない状態であるとし、さらに、この状態において、アプリケーション・プログラムBが構造化文書用インターフェース装置20に対して構造化文書Bの処理を要求したとする(S10)。第2の通知手段22は、構造化文書Bについて、それを読込んで、文字コード調整及び字句解析を実施した後(S11)、字句上のエラーが無ければ、アプリケーション・プログラムBへ構造化文書Bについての一連のイベントを順番に通知する(S12)。一方、ストア手段15は、構造化文書用インターフェース装置10(図2)が構造化文書Aについてのイベント・セット情報をキャッシュ16にストアしたときと同様に、アプリケーション・プログラムBへ通知した一連のイベントをイベント・セット情報として構造化文書Bに対応付けてキャッシュ16にストアする(S13)。
【0016】
図5は図4の構造化文書用インターフェース装置20の処理手順のフローチャートである。図5において、S1〜S4は図3のS1〜S4と同一であるので、説明は省略し、S10〜S13についてのみ説明する。S10〜S13は、構造化文書Aに対するS1〜S4の処理に対して、構造化文書Bに対する処理となっており、内容はS1〜S4にそれぞれ対応している。S10では、アプリケーション・プログラムBから構造化文書Bについての処理要求を受け付ける。S11では、構造化文書Bを読込む。アプリケーション・プログラムBからの構造化文書Bについての処理要求では、構造化文書Aの場合と同様に、構造化文書Bはパス名又はURLで特定されている。S12では、アプリケーション・プログラムBへ該構造化文書Bに係る一連のイベントを順番に通知する。S13では、S12において通知した一連のイベントをイベント・セット情報として構造化文書Bに対応付けてキャッシュ16にストアする。
【0017】
図6は本発明の第3の実施形態としての構造化文書用インターフェース装置25の機能ブロック図である。図6におけるS20〜S29は後述の図7のS20〜S29に対応する。構造化文書用インターフェース装置25について構造化文書用インターフェース装置20との相違点を説明する。構造化文書用インターフェース装置25は、第1の処理手段26、第2の処理手段27、及び制御手段28を有している。制御手段28は、アプリケーション・プログラムAから或る構造化文書についての処理要求を受ける(S20)、該或る構造化文書を構造化文書Aと呼ぶことにする。制御手段28は、該構造化文書Aについてのイベント・セット情報がキャッシュ16にストアされていないか調べ(S21)、無いと分かれば、第1の処理手段26へ処理の指示を出す(S22)。第1の処理手段26は、構造化文書Aを読込んで、文字コード調整及び字句解析を実施する(S22)。第1の処理手段26は、構造化文書Aについての字句解析の結果、エラー無しと判明すれば、構造化文書Aについての一連のイベントを順番にアプリケーション・プログラムAへ通知する(S23)。第1の処理手段26は、また、該通知した一連のイベントをイベント・セット情報としてその構造化文書に対応付けてキャッシュ16にストアする(S24)。その後、制御手段28は、アプリケーション・プログラムB(アプリケーション・プログラムBは、アプリケーション・プログラムAであることもあり得る。)から或る構造化文書についての処理要求を受け付ける(S20)。制御手段28は、アプリケーション・プログラムから処理要求のあった構造化文書についてのイベント・セット情報がキャッシュ16に有るか無いかを調べる(S21)。S20で受け付けた該或る構造化文書が、構造化文書Aとは異なる構造化文書Bであるときは、構造化文書Bについてのイベント・セット情報はキャッシュ16には無いので、制御手段28は第1の処理手段26に処理を委譲する(delegate)。S20で受け付けた該或る構造化文書が、構造化文書Aであるときは、構造化文書Aについてのイベント・セット情報はキャッシュ16に有るので、制御手段28は第2の処理手段27に処理を委譲する(S28)。第2の処理手段27は、キャッシュ16から構造化文書Aに係るイベント・セット情報を読込み(S28)、該イベント・セット情報に基づいて、構造化文書Aに係る一連のイベントを順番にアプリケーション・プログラムBへ通知する(S29)。
【0018】
図7は図6の構造化文書用インターフェース装置25の処理手順のフローチャートである。S20,S22〜S24は図3のS1〜S4に対応する。S28,S29は図3のS6,S7に対応する。S20では、或るアプリケーション・プログラムから或る構造化文書についての処理要求を受け付ける。S21では、該或る構造化文書に係るイベント・セット情報がキャッシュ16に有るか無いかを調べ、無ければ、S22へ進み、また、有れば、S28へ進む。S22では、処理要求のあった構造化文書を読込み、文字コード調整及び字句解析等の処理を行う。字句上のエラーがなかったならば、S23では、S20において処理要求を出して来たアプリケーション・プログラムに、処理対象の構造化文書に係る一連のイベントを通知する。S24では、S23において通知した一連のイベントをイベント・セット情報としてキャッシュ16にストアする。S28では、今回、処理要求の出された構造化文書に係るイベント・セット情報をキャッシュ16から読み出す。S29では、S28に読み出したイベント・セット情報に基づいて一連のイベントを順番に、S20で処理要求を出して来たアプリケーション・プログラムへ通知する。S28,S29のステップは、S22〜S24のステップに対して、文字コード調整や字句解析の処理が省かれるので、アプリケーション・プログラムへの一連のイベントの通知を早めることができる。
【0019】
図6及び図7についての今までの説明では、イベント・セット情報がキャッシュ16に有る構造化文書が、そのイベント・セット情報についてのキャッシュ16へのストア後、変更されていないことを前提にしている。キャッシュ16の容量上の制約のために、新規なイベント・セット情報をストアするだけ残存量がキャッシュ16に無いときは、例えばストア日時の古いイベント・セット情報から順番に捨てられていく。或る構造化文書についてのイベント・セット情報がキャッシュ16に捨てられずに存在する期間は、限定されているかもしれないものの、該存在期間中にも、ソース(Source)の構造化文書が更新されることがあり、キャッシュ16にファイル名の同じ構造化文書についてのイベント・セット情報があるとしても、ソースの構造化文書の更新を反映していない場合が起こり得る。これに対処するため、キャッシュ16のイベント・セット情報の基になっている構造化文書が最新版のものか否かを調べ、最新版のものでなければ、該構造化文書についてキャッシュ16におけるイベント・セット情報は利用しないことにする。なお、利用できないと判明したイベント・セット情報はキャッシュ16から直ちに削除することが望ましい。図8は構造化文書の更新に対処してキャッシュのイベント・セット情報を利用する処理手順のフローチャートである。図8のフローチャートでは、図7のS21の判断処理に加えて、S34〜S36が追加されている。S21では、今回、処理要求のあった構造化文書に係るイベント・セット情報が有るか否かを判定するが、この判定では、単に、今回、処理要求のあった構造化文書と同一ファイル名Xの構造化文書に係るイベント・セット情報が有るか否かを判定する。すなわち、該判定では、処理対象の構造化文書についての更新の有無は問わない。S21の判定がNOであれば、S22へ進むのに対し、S21の判定がYESであれば、S34へ進む。S34では、構造化文書原物(ソース構造化文書)についての作成日時D1を検出する。通常のファイル・システムでは、ファイル自体に対してファイル作成日時等の管理情報が所定の記憶エリアに記録されており、構造化文書原物についての作成日時D1は該記憶エリアへのアクセスにより検出される。S35では、キャッシュ16におけるファイル名Xについてのイベント・セット情報の基になっている構造化文書の作成日時D2を検出する。S36では、D1がD2以降の日時か否か、すなわちキャッシュ16におけるファイル名Xについてのイベント・セット情報の基になっている構造化文書が最新版のものであるか否かを判定し、該判定がYESであれば、S28へ進み、NOであれば、S22へ進む。なお、ここでは更新情報の確認を日時を用いて行ったが、更新の有無を確認できるのであれば他の方法を用いることもできる。ソースの構造化文書がローカル・ファイルである場合の文書の作成日時はタイム・スタンプを検出することにより検出でき、また、ソースの構造化文書がHTTPにより入手するものである場合の文書の更新状態は、Last−Modifiedのヘダー付加に対するサーバからの応答(サーバ応答が304であれは、更新無しで、200であれば更新有り。)に基づいて検出できる。
【0020】
制御手段28は、(a)XMLパーサーのような構造化文書用パーサに実装される場合、及び(b)アプリケーション・プログラム内に実装される場合がある。アプリケーション・プログラムが、構造化文書用インターフェース装置25へURI(Uniform Resource Identifiers。後述のURLと区別。)で処理対象の構造化文書を指定するときは、構造化文書用パーサーは、URIを読むことできるので、自ら、アプリケーション・プログラムから処理要求された構造化文書が何であるかをURIから解釈できる。したがって、ケース(a)には何ら支障はない。これに対して、Java(Sun Microsystems, Inc.の米国及びその他の国における商標)で記述された一部のアプリケーション・プログラムは、データをバイト・ストリームで構造化文書用パーサーへ渡すことがある。すなわち、アプリケーション・プログラムは、処理要求対象の構造化文書を開いて、この開いた構造化文書Xの内容をバイト・ストリームの形式で構造化文書用パーサーへ渡すことがある。バイト・ストリーム、すなわち構造化文書の内容自体からは更新日時情報等の管理情報は検出不能となるので、構造化文書用パーサーがアプリケーション・プログラムからデータをバイト・ストリームで受け取る場合には、制御手段28は、キャッシュ16内に処理対象の構造化文書についてのイベント・セット情報が有るか無いかを判定することができない。これに対処するためには、ケース(b)のように、制御手段28はアプリケーション・プログラムに実装され、制御手段28は、アプリケーション・プログラムが処理対象の構造化文書を開くのに先立って、該構造化文書についての作成日時等の必要情報を取得する。そして、該構造化文書Xに係るイベント・セット情報がキャッシュ16にあり、かつ該イベント・セット情報が基にしている構造化文書の日時が構造化文書原物の日時と同じであるかを調べ、その結果に基づいて、構造化文書用パーサーの第1の処理手段26及び第2の処理手段27のいずれに処理を移譲するかを決定することになる。
【0021】
【実施例】
図9は構造化文書用インターフェース装置としてのSAXパーサー34の構成図である。SAXパーサー34は、キャッシュ使用決定用パーサー35、キャッシュ・データ生成用パーサー36、キャッシュ・データ再生用パーサー37、及びキャッシュ・データ管理部38を有している。SAXパーサー34及びアプリケーション・プログラム41は、典型的には、LAN、イントラネット又はインターネットを介して相互に接続されているサーバ及びクライアントにそれぞれ実装される。しかしながら、SAXパーサー34及びアプリケーション・プログラム41は、同一のコンピュータに実装されている場合もある。アプリケーション・プログラム41は、所定のXMLファイル48をパス名及びURL等で指定して、該XMLファイル48についての処理をSAXパーサー34に要求する。SAXパーサー34のXMLデータ情報取得部45は、アプリケーション・プログラム41から処理要求のあったXMLファイル48を読込む。なお、XMLデータ情報取得部45は、XMLファイル48が、SAXパーサー34の実装されているコンピュータ内にあるときは、すなわちローカル・ファイルであるときは、パス名の指定により読込むが、XMLファイル48が、SAXパーサー34の実装されているコンピュータへインターネットやイントラネットを介して接続されているサーバに蓄積されているときは、httpやhttps(http secured)によりURLを指定して、読込むことになる。
【0022】
下記はXMLファイル48の内容を例示したものである。
[XMLファイル48の内容例]
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE GUIDef SYSTEM "GUIDef.dtd" >
<GUIDef>
<Parts name="DirTree" class="editor.DirTree" vp="FileAsString"/>
<Window name="Main" clear="true">
<Layout class="java.awt.BorderLayout"/>
<Group name="tab" parts="Tab" pos="Center">
<Ctrl parts="Label" pos="North">
<Init>プロジェクトの新規作成</Init>
</Ctrl>
</Group>
<Event action="Cleaner"/>
<Pr name="Title">プロジェクトの選択</Pr>
</Window>
</GUIDef>
【0023】
一方、キャッシュ使用決定用パーサー35のキャッシュ・データ確認部46はキャッシュ・データ管理部38を使ってキャッシュ内をSAXイベント・セット情報について検索する。キャッシュ・データ管理部38が管理するキャッシュ内には、キャッシュの容量内で幾つかのXMLファイル48についてSAXイベント・セット情報が蓄積可能になっている。新規のSAXイベント・セット情報をキャッシュにストアしようとするときに、キャッシュにストアする容量が残されていない時は、古い方のSAXイベント・セット情報から適当個数、適宜、削除して、該新規のSAXイベント・セット情報をストアする容量を確保し、そこへ該新規のSAXイベント・セット情報をストアすることになる。各XMLファイル48の作成日時の情報は例えばタイム・スタンプとして記録されており、ソースのXMLファイル48のタイム・スタンプから該XMLファイル48の作成日時として最後の更新日時を知ることができる。キャッシュ・データ確認部46は、アプリケーション・プログラム41からキャッシュ使用決定用パーサー35へ今回、処理要求のあったXMLファイル48と同一ファイル名のXMLファイル48に対応付けられているSAXイベント・セット情報を検索し、該検索SAXイベント・セット情報の日時を確認する。キャッシュ使用決定用パーサー35は、XMLデータ情報取得部45が読込んだ現在のXMLファイル48の作成日時とキャッシュ・データ確認部46が確認したSAXイベント・セット情報の日時とを照合して、キャッシュ内のSAXイベント・セット情報が現在の構造化文書の内容を基にしたSAXイベント・セット情報であるか否かを調べる。(a)アプリケーション・プログラム41より今回、処理要求のあったXMLファイル48について、同一ファイル名のXML文書についてのSAXイベント・セット情報がキャッシュに無いとき、又は(b)アプリケーション・プログラム41より今回、処理要求のあったXMLファイル48について、同一ファイル名のXML文書についてのSAXイベント・セット情報がキャッシュに有るものの、そのSAXイベント・セット情報について、それが基にしているXMLファイル48の作成日時が現在のXMLファイル48の作成日時より古いとき、キャッシュ使用決定用パーサー35は、キャッシュのSAXイベント・セット情報は利用不可とし、処理要求対象のXMLファイル48についての以降の処理をキャッシュ・データ生成用パーサー36へ委譲する。これに対して、(c)アプリケーション・プログラム41より今回、処理要求のあったXMLファイル48について、同一ファイル名のXML文書についてのSAXイベント・セット情報がキャッシュに有り、かつそのSAXイベント・セット情報に対して、それが基にしているXMLファイル48の作成日時が現在のXMLファイル48の作成日時より古くないとき、すなわちXMLファイル48が更新されていないとき、キャッシュ使用決定用パーサー35は、キャッシュのSAXイベント・セット情報は利用可能とし、処理対象のXMLファイル48についての以降の処理をキャッシュ・データ再生用パーサー37へ委譲する。
【0024】
キャッシュ・データ生成用パーサー36は、XMLデータ取得部53、文字コード調整部54、字句解析部55、SAXイベント生成部56、及びSAXイベント記録部58を有している。キャッシュ・データ生成用パーサー36がキャッシュ使用決定用パーサー35から処理を委譲されると、XMLデータ取得部53は、処理対象のXMLファイル48を読込んで、XMLファイル48のXMLデータを取得する。文字コード調整部54は、XMLデータ取得部53が読込んだXMLデータの文字コード(例:Shift JIS)をユニコード(Unicode)へ変換する。字句解析部55は、XMLファイル48のユニコードに基づいて処理対象のXMLファイル48の字句解析を行う。字句解析部55が、XMLファイル48の字句解析においてエラーがないと判断したら、SAXイベント生成部56は、XMLファイル48に係る一連のイベントを生成する処理に移り、SAXイベント・ハンドラ57を介して、今回、XMLファイル48の処理を要求して来たアプリケーション・プログラム41へ一連のイベントを順番に通知する。エラーがあるときは、アプリケーション・プログラム41へは、一連のイベントは通知することなく、エラーがある旨を通知する。図10はSAXイベント生成部56がアプリケーション・プログラム41へ通知するSAXイベントを示している。SAXイベント・ハンドラ57を介するSAXイベント生成部56からアプリケーション・プログラム41への一連のイベントの通知は、SAXイベント生成部56に実装されるOOP(Object Oriented Program)のメソド(Method)を介して行われる。或る種のメソドには、1個以上のパラメータ(引数)が付属し、パラメータには、XMLファイル48の要素名(例:GUIDef,Parts)、及び属性名(例:name,class,vp)=属性値(例:”Dirtree”,”editor.DirTree”)が含まれる。このようなメソドを実行するために、SAXイベント生成部56,63は、各種のインターフェースを実装する必要がある。SAXイベント生成部56,63が実装すべきインターフェースの例は、例えば、クラスorg.xml.sax.DocumentHandlerに定義されており、次の通りである。
public abstract void setDocumentLocator (Locator locator);
public abstract void startDocument ()
public abstract void endDocument ()
public abstract void startElement (String name, AttributeList atts)
public abstract void endElement (String name)
public abstract void characters (char ch[], int start, int length)
public abstract void ignorableWhitespace (char ch[], int start, int length)
public abstract void processingInstruction (String target, String data)
【0025】
SAXイベント記録部58は、SAXイベント生成部56がアプリケーション・プログラム41へ通知した一連のイベントをSAXイベント・セット情報としてキャッシュ・データ管理部38を介してキャッシュへ記録する。このSAXイベント・セット情報には、XMLファイル48の更新チェックのために、SAXイベント・セット情報が基にしているXMLファイル48の作成日時情報を含める必要がある。図11及び図12はキャッシュに記録するSAXイベント・セット情報の第1及び第2のパートである。SAXイベント・セット情報の第1のパートでは、各レコードにはメソドとパラメータとが記述されている。パラメータは要素名と属性とを含む。メソド名と要素名とはコード化されている。第2のパートでは、要素名とコードとの対応関係が記述されている。メソドについてコードとメソド名との関係は次の通りである。メソドについてのコードとメソド名との関係は、XMLファイル48に関係なく、定義されている。
startDocument:1
startElement:2
endElement:3
characters:4
endDocument:5
【0026】
図12の第2のパートでは、テーブルの1番目のレコードには、SAXイベント・セット情報が基にしているXML文書の作成日時が記録される。テーブルの2番目以降のレコードには、XMLファイル48の要素についてコードとタグ(要素名)との関係が記録される。XMLファイル48の要素についてコードとタグ(要素名)との関係は、各XMLファイル48ごとに定義される。キャッシュ使用決定用パーサー35におけるXMLファイル48の前述の更新チェックは、現在のXMLファイル48の作成日時と図12の1番目のレコードの日時と照合することにより行う。
【0027】
キャッシュ・データ再生用パーサー37はSAXイベント生成部63及びSAXイベント記録部64を有している。キャッシュ・データ再生用パーサー37がキャッシュ使用決定用パーサー35から処理対象のXMLファイル48についての処理を委譲されると、SAXイベント記録部64は、キャッシュ・データ管理部38に指示して、構造化文書におけるSAXイベント・セット情報を自分に送らせ、一連のSAXイベントを再生する(換言すると、例えば、一連のSAXイベントの各イベントをその順番に対応付けて検出する。)。SAXイベント記録部64がキャッシュ・データ管理部38から受けるSAXイベント・セット情報は図11及び図12のものである。SAXイベント記録部64は、図12におけるXMLファイル48の要素についてのコードとタグ(要素名)との関係に基づいて、図11の要素コードを要素名に変換して、図10のリストを再現し、SAXイベント生成部63へ渡す。SAXイベント生成部63は、これを基に、各メソドを図11のリストの上から順番に実行し、一連のイベントの各々がSAXイベント・ハンドラ57を介してアプリケーション・プログラム41へ通知される。
【0028】
図13は図9のキャッシュ使用決定用パーサー35の処理手順のフローチャートである。S51では、アプリケーション・プログラム41が今回、処理要求したXMLファイル48に係るキャッシュ・データ(=キャッシュにおけるSAXイベント・セット情報)があるか否か、すなわち、該XMLファイル48のファイル名に対応付けられているキャッシュ・データがあるか否かを判定し、判定がYESであれば、S52へ進み、NOであれば、S54へ進む。S51の判定は、XMLファイル48の更新状況は調べておらず、処理対象のXMLファイル48のファイル名と同一のファイル名のXMLファイルに係るキャッシュ・データがキャッシュに有るか否かのみを調べている。S52では、処理対象のXMLファイル48に係るキャッシュ・データを読込み、すなわち図12のデータを読込み、該データの日時、すなわちキャッシュにおけるSAXイベント・セット情報の基にしたXMLファイル48の作成日時を検出する。S53では、キャッシュにおけるキャッシュデータが、現在のXMLファイル48の更新前のXML文書を基にしたデータか否かを調べる。S53における判定がYESであれば、すなわち、キャッシュにおけるSAXイベント・セット情報が基にしたXML文書が更新前のものであるときは、S54へ進む。S53における判定がNOであれば、すなわち、キャッシュにおけるSAXイベント・セット情報が基にしたXML文書が現在のXML文書であるときは、S55へ進む。処理対象のXMLファイル48の処理について、S54では、キャッシュ・データ生成用パーサー36へ委譲し、S55では、キャッシュ・データ再生用パーサー37へ委譲する。
【0029】
図14は図9のキャッシュ・データ生成用パーサー36の処理手順のフローチャートである。S60では、処理対象のXMLファイル48の文字データを読込む。S61では、S60で読込んだ文字データをユニコードへ変換する。日本語XML文書の文字コードは例えばSift JISに準拠している。S62では、字句解析処理を行う。S63では、処理対象のXMLファイル48において要素名定義のタグを見つけ次第、該要素名に対応の1個のSAXイベントを生成する。生成されたSAXイベントは、対応のメソドを使って、イベント・ハンドラを呼び出すことによりアプリケーション・プログラム41へ通知される。S65では、XMLファイル48の最後(EOF)に到達したか否かを判定し、該判定がYESであれば、この処理手順を終了し、NOであれば、S60へ戻り、次の文字データを読込む。
【0030】
図15は図9のキャッシュ・データ再生用パーサー37の処理手順のフローチャートである。S68では、処理対象のXMLファイル48に係るSAXイベント・セット情報としてのキャッシュ・データの所定分をキャッシュから読込む。S69では、S68で読込んだ所定分のキャッシュ・データに基づいてSAXイベントを生成する。生成されたSAXイベントは、対応のメソドを使ってイベント・ハンドラを呼び出すことによりアプリケーション・プログラム41へ通知される。S70では、SAXイベント・セット情報(図12)の最後(EOF)に到達したか否かを判定し、該判定がYESであれば、この処理手順を終了し、NOであれば、S68へ戻る。
【0031】
まとめとして本発明の構成に関して以下の事項を開示する。
(1):アプリケーション・プログラムから処理要求のあった構造化文書について、字句解析の処理と、該構造化文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理を実施する構造化文書用インターフェース装置において、
アプリケーション・プログラムへ通知した一連のイベントをイベント・セット情報としてその構造化文書に対応付けてキャッシュにストアするストア手段、及び
処理対象の構造化文書についてそのイベント・セット情報がキャッシュに有るときは、該構造化文書に係る一連のイベントをキャッシュのイベント・セット情報に基づいて処理要求元のアプリケーション・プログラムへ順番に通知する第1の通知手段、
を有していることを特徴とする構造化文書用インターフェース装置。
(2):そのイベント・セット情報がキャッシュに無い構造化文書については、それを読込んで、字句解析の処理と、該構造化文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理を実施する第2の通知手段を有し、
ストア手段は、第2の通知手段がアプリケーション・プログラムへ通知した一連のイベントをイベント・セット情報としてその構造化文書に対応付けてキャッシュにストアすることを特徴とする(1)記載の構造化文書用インターフェース装置。
(3):処理要求対象の構造化文書について、それを読込んで、字句解析の処理と、該構造化文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理と、さらに該通知した一連のイベントをイベント・セット情報としてその構造化文書に対応付けてキャッシュにストアする処理とを実施する第1の処理手段、
処理要求対象の構造化文書についてのキャッシュのイベント・セット情報を読込んで、該イベント・セット情報に係る一連のイベントを順番に、処理要求元のアプリケーション・プログラムへ通知する第2の処理手段、及び
処理対象の構造化文書についてそのイベント・セット情報がキャッシュに有るか無いかを調べそのイベント・セット情報がキャッシュに無いときには第1の処理手段に処理対象の構造化文書についての処理を委譲し、また、そのイベント・セット情報がキャッシュに有るときには第2の処理手段に処理対象の構造化文書についての処理を委譲する制御手段、
を有していることを特徴とする構造化文書用インターフェース装置。
(4):制御手段は、処理対象の構造化文書についてそのイベント・セット情報がキャッシュに有るか無いかを判断するとき、処理対象の構造化文書と同一ファイル名の構造化文書に係るイベント・セット情報がキャッシュに有ったとしても、それが現在の構造化文書に対して更新前の構造化文書に係るイベント・セット情報であるならば、処理対象の構造化文書についてそのイベント・セット情報がキャッシュに無いとの判断を下すことを特徴とする(3)記載の構造化文書用インターフェース装置。
(5):制御手段は、処理要求対象の構造化文書を処理要求元のアプリケーション・プログラムからURI(Uniform Resource Identifiers)により通知されるパーサーであることを特徴とする(4)記載の構造化文書用インターフェース装置。
【0032】
(6):第1及び第2の処理手段はそれぞれ対応のパーサーに実装されるのに対し、制御手段は処理要求元のアプリケーション・プログラムに実装されていることを特徴とする(4)記載の構造化文書用インターフェース装置。
(7):アプリケーション・プログラムから処理要求のあった構造化文書について、字句解析の処理と、該構造化文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理を実施する構造化文書用処理方法において、
アプリケーション・プログラムへ通知した一連のイベントをイベント・セット情報としてその構造化文書に対応付けてキャッシュにストアする第1のステップ、及び
処理対象の構造化文書についてそのイベント・セット情報がキャッシュに有るときは、該構造化文書に係る一連のイベントをキャッシュのイベント・セット情報に基づいて処理要求元のアプリケーション・プログラムへ順番に通知する第2のステップ、
を有していることを特徴とする構造化文書用処理方法。
(8):そのイベント・セット情報がキャッシュに無い構造化文書については、それを読込んで、字句解析の処理と、該構造化文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理を実施する第3のステップ、及び
第3のステップにおいてアプリケーション・プログラムへ通知した一連のイベントをイベント・セット情報としてその構造化文書に対応付けてキャッシュにストアする第4のステップ、
を有していることを特徴とする(7)記載の構造化文書用処理方法。
(9):処理要求対象の構造化文書について、それを読込んで、字句解析の処理と、該構造化文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理と、さらに該通知した一連のイベントをイベント・セット情報としてその構造化文書に対応付けてキャッシュにストアする処理とを実施する標準処理用ステップ、
処理要求対象の構造化文書についてのキャッシュのイベント・セット情報を読込んで、該イベント・セット情報に係る一連のイベントを順番に、処理要求元のアプリケーション・プログラムへ通知する短縮処理用ステップ、及び
処理対象の構造化文書についてそのイベント・セット情報がキャッシュに有るか無いかを調べそのイベント・セット情報がキャッシュに無いときには標準処理用ステップを実行するように制御し、また、そのイベント・セット情報がキャッシュに有るときには短縮処理用ステップを実行するように制御する制御ステップ、
を有していることを特徴とする構造化文書用処理方法。
(10):制御ステップは、処理対象の構造化文書についてそのイベント・セット情報がキャッシュに有るか無いかを判断するとき、処理対象の構造化文書と同一ファイル名の構造化文書に係るイベント・セット情報がキャッシュに有ったとしても、それが現在の構造化文書に対して更新前の構造化文書に係るイベント・セット情報であるならば、処理対象の構造化文書についてそのイベント・セット情報がキャッシュに無いとの判断を下すことを特徴とする(9)記載の構造化文書用処理方法。
【0033】
(11):制御ステップは、処理要求対象の構造化文書を処理要求元のアプリケーション・プログラムからURIにより通知されるパーサーにおいて実施されるものであることを特徴とする(10)記載の構造化文書用処理方法。
(12):第1及び第2の処理ステップは、それぞれ対応のパーサーにおいて実施されるものであるのに対し、制御ステップは、構造化文書についての処理要求を出すアプリケーション・プログラムにおいて実施されるものであることを特徴とする(10)記載の構造化文書用処理方法。
(13):アプリケーション・プログラムから処理要求のあった構造化文書について、字句解析の処理と、該構造化文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理を実施する構造化文書用処理プログラムにおいて、
アプリケーション・プログラムへ通知した一連のイベントをイベント・セット情報としてその構造化文書に対応付けてキャッシュにストアする第1のステップ、及び
処理対象の構造化文書についてそのイベント・セット情報がキャッシュに有るときは、該構造化文書に係る一連のイベントをキャッシュのイベント・セット情報に基づいて処理要求元のアプリケーション・プログラムへ順番に通知する第2のステップ、
をコンピュータに実行させるための構造化文書用処理プログラム。
(14):そのイベント・セット情報がキャッシュに無い構造化文書については、それを読込んで、字句解析の処理と、該構造化文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理を実施する第3のステップ、及び
第3のステップにおいてアプリケーション・プログラムへ通知した一連のイベントをイベント・セット情報としてその構造化文書に対応付けてキャッシュにストアする第4のステップ、
をコンピュータに実行させるための(13)記載の構造化文書用処理プログラム。
(15):処理要求対象の構造化文書について、それを読込んで、字句解析の処理と、該構造化文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理と、さらに該通知した一連のイベントをイベント・セット情報としてその構造化文書に対応付けてキャッシュにストアする処理とを実施する標準処理用ステップ、
処理要求対象の構造化文書についてのキャッシュのイベント・セット情報を読込んで、該イベント・セット情報に係る一連のイベントを順番に、処理要求元のアプリケーション・プログラムへ通知する短縮処理用ステップ、及び
処理対象の構造化文書についてそのイベント・セット情報がキャッシュに有るか無いかを調べそのイベント・セット情報がキャッシュに無いときには標準処理用ステップを実行するように制御し、また、そのイベント・セット情報がキャッシュに有るときには短縮処理用ステップを実行するように制御する制御ステップ、
をコンピュータに実行させるための構造化文書用処理プログラム。
【0034】
(16):制御ステップは、処理対象の構造化文書についてそのイベント・セット情報がキャッシュに有るか無いかを判断するとき、処理対象の構造化文書と同一ファイル名の構造化文書に係るイベント・セット情報がキャッシュに有ったとしても、それが現在の構造化文書に対して更新前の構造化文書に係るイベント・セット情報であるならば、処理対象の構造化文書についてそのイベント・セット情報がキャッシュに無いとの判断を下すことをコンピュータに実行させるための(15)記載の構造化文書用処理プログラム。
(17):制御ステップは、処理要求対象の構造化文書を処理要求元のアプリケーション・プログラムからURIにより通知されるパーサーにおいて実施されるものであることをコンピュータに実行させるための(16)記載の構造化文書用処理プログラム。
(18):第1及び第2の処理ステップは、それぞれ対応のパーサーにおいて実施されるものであるのに対し、制御ステップは、構造化文書についての処理要求を出すアプリケーション・プログラムにおいて実施されるものであることをコンピュータに実行させるための(16)記載の構造化文書用処理プログラム。
【0035】
【発明の効果】
本発明によれば、処理要求のあった構造化文書についての一連のイベントを通知するとともに、該通知した一連のイベントをイベント・セット情報としてキャッシュにストアする。そして、次に、同一構造化文書について処理要求を再度、受付けたときは、キャッシュにストアされているイベント・セット情報に基づいて一連のイベントを検出し、通知するようになっているので、構造化文書用インターフェース装置の処理時間を大幅に短縮できる。
【図面の簡単な説明】
【図1】構造化文書入手のためにインターネット/イントラネットが利用されるシステムの構成図である。
【図2】本発明の第1の実施形態としての構造化文書用インターフェース装置の機能ブロック図である。
【図3】図2の構造化文書用インターフェース装置の処理手順のフローチャートである。
【図4】本発明の第2の実施形態としての構造化文書用インターフェース装置の機能ブロック図である。
【図5】図4の構造化文書用インターフェース装置の処理手順のフローチャートである。
【図6】本発明の第3の実施形態としての構造化文書用インターフェース装置の機能ブロック図である。
【図7】図6の構造化文書用インターフェース装置の処理手順のフローチャートである。
【図8】構造化文書の更新に対処してキャッシュのイベント・セット情報を利用する処理手順のフローチャートである。
【図9】構造化文書用インターフェース装置としてのSAXパーサーの構成図である。
【図10】SAXイベント生成部がアプリケーション・プログラムへ通知するSAXイベントを示す図である。
【図11】キャッシュに記録するSAXイベント・セット情報の第1のパートである。
【図12】キャッシュに記録するSAXイベント・セット情報の第2のパートである。
【図13】図9のキャッシュ使用決定用パーサーの処理手順のフローチャートである。
【図14】図9のキャッシュ・データ生成用パーサーの処理手順のフローチャートである。
【図15】図9のキャッシュ・データ再生用パーサーの処理手順のフローチャートである。
【符号の説明】
10 構造化文書用インターフェース装置
11 アプリケーション・プログラム
12 構造化文書
15 ストア手段
16 キャッシュ
17 第1の通知手段
20 構造化文書用インターフェース装置
22 第2の通知手段
25 構造化文書用インターフェース装置
26 第1の処理手段
27 第2の処理手段
28 制御手段
35 キャッシュ使用決定用パーサー
36 キャッシュ・データ生成用パーサー
37 キャッシュ・データ再生用パーサー
41 アプリケーション・プログラム
48 XMLファイル

Claims (12)

  1. アプリケーション・プログラムから処理要求のあったXML文書について、該XML文書の開始及び終了、該XML文書内の各要素の開始及び終了、並びに該XML文書内の文字列の出現をそれぞれイベントと呼び、該XML文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理を実施するSAXパーサーにおいて、
    アプリケーション・プログラムへ通知した一連のイベントをイベント・セット情報としてそのXML文書に対応付けてキャッシュにストアするストア手段、及び
    処理対象のXML文書についてそのイベント・セット情報が前記キャッシュに有るときは、該XML文書に係る一連のイベントの各々をキャッシュのイベント・セット情報に基づいて順番に検出して、処理要求元のアプリケーション・プログラムへ検出順に通知する第1の通知手段、
    を有していることを特徴とするSAXパーサー。
  2. そのイベント・セット情報がキャッシュに無いXML文書については、それを読込んで、該XML文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理を実施する第2の通知手段を有し、
    前記ストア手段は、第2の通知手段がアプリケーション・プログラムへ通知した前記一連のイベントをイベント・セット情報としてそのXML文書に対応付けてキャッシュにストアすることを特徴とする請求項1記載のSAXパーサー。
  3. 処理要求対象のXML文書について、それを読込んで、該XML文書の開始及び終了、該XML文書内の各要素の開始及び終了、並びに該XML文書内の文字列の出現をそれぞれイベントと呼び、該XML文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理と、さらに該通知した一連のイベントをイベント・セット情報としてそのXML文書に対応付けてキャッシュにストアする処理とを実施する第1の処理手段、
    処理要求対象のXML文書についてのキャッシュのイベント・セット情報を読込んで、該イベント・セット情報に係る一連のイベントの各々該イベント・セット情報に基づいて順番に検出し、処理要求元のアプリケーション・プログラムへ検出順に通知する第2の処理手段、及び
    処理対象のXML文書についてそのイベント・セット情報がキャッシュに有るか無いかを調べそのイベント・セット情報がキャッシュに無いときには前記第1の処理手段に処理対象のXML文書についての処理を委譲し、また、そのイベント・セット情報がキャッシュに有るときには前記第2の処理手段に処理対象のXML文書についての処理を委譲する制御手段、
    を有していることを特徴とするSAXパーサー。
  4. 前記制御手段は、処理対象のXML文書についてそのイベント・セット情報がキャッシュに有るか無いかを判断するとき、処理対象のXML文書と同一ファイル名のXML文書に係るイベント・セット情報がキャッシュに有ったとしても、それが現在のXML文書に対して更新前のXML文書に係るイベント・セット情報であるならば、処理対象のXML文書についてそのイベント・セット情報がキャッシュに無いとの判断を下すことを特徴とする請求項3記載のSAXパーサー。
  5. アプリケーション・プログラムから処理要求のあったXML文書について、該XML文書の開始及び終了、該XML文書内の各要素の開始及び終了、並びに該XML文書内の文字列の出現をそれぞれイベントと呼び、該XML文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理を実施するSAXパーサー用方法において、
    アプリケーション・プログラムへ通知した一連のイベントをイベント・セット情報としてそのXML文書に対応付けてキャッシュにストアする第1のステップ、及び
    処理対象のXML文書についてそのイベント・セット情報が前記キャッシュに有るときは、該XML文書に係る一連のイベントの各々をキャッシュのイベント・セット情報に基づいて順番に検出して、処理要求元のアプリケーション・プログラムへ検出順に通知する第2のステップ、
    を有していることを特徴とするSAXパーサー用方法。
  6. そのイベント・セット情報がキャッシュに無いXML文書については、それを読込んで、該XML文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理を実施する第3のステップ、及び
    第3のステップにおいてアプリケーション・プログラムへ通知した前記一連のイベントをイベント・セット情報としてそのXML文書に対応付けてキャッシュにストアする第4のステップ、
    を有していることを特徴とする請求項5記載のSAXパーサー用方法。
  7. 処理要求対象のXML文書について、それを読込んで、該XML文書の開始及び終了、該XML文書内の各要素の開始及び終了、並びに該XML文書内の文字列の出現をそれぞれイベントと呼び、該XML文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理と、さらに該通知した一連のイベントをイベント・セット情報としてそのXML文書に対応付けてキャッシュにストアする処理とを実施する標準処理用ステップ、
    処理要求対象のXML文書についてのキャッシュのイベント・セット情報を読込んで、該イベント・セット情報に係る一連のイベントの各々該イベント・セット情報に基づいて順番に検出し、処理要求元のアプリケーション・プログラムへ検出順に通知する短縮処理用ステップ、及び
    処理対象のXML文書についてそのイベント・セット情報がキャッシュに有るか無いかを調べそのイベント・セット情報がキャッシュに無いときには前記標準処理用ステップを実行するように制御し、また、そのイベント・セット情報がキャッシュに有るときには前記短縮処理用ステップを実行するように制御する制御ステップ、
    を有していることを特徴とするSAXパーサー用方法。
  8. 前記制御ステップは、処理対象のXML文書についてそのイベント・セット情報がキャッシュに有るか無いかを判断するとき、処理対象のXML文書と同一ファイル名のXML文書に係るイベント・セット情報がキャッシュに有ったとしても、それが現在のXML文書に対して更新前のXML文書に係るイベント・セット情報であるならば、処理対象のXML文書についてそのイベント・セット情報がキャッシュに無いとの判断を下すことを特徴とする請求項7記載のSAXパーサー用方法。
  9. アプリケーション・プログラムから処理要求のあったXML文書について、該XML文書の開始及び終了、該XML文書内の各要素の開始及び終了、並びに該XML文書内の文字列の出現をそれぞれイベントと呼び、該XML文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理を実施するSAXパーサー用プログラムにおいて、
    アプリケーション・プログラムへ通知した一連のイベントをイベント・セット情報としてそのXML文書に対応付けてキャッシュにストアする第1のステップ、及び
    処理対象のXML文書についてそのイベント・セット情報が前記キャッシュに有るときは、該XML文書に係る一連のイベントの各々をキャッシュのイベント・セット情報に基づいて順番に検出して、処理要求元のアプリケーション・プログラムへ検出順に通知する第2のステップ、
    をコンピュータに実行させるためのSAXパーサー用プログラム。
  10. そのイベント・セット情報がキャッシュに無いXML文書については、それを読込んで、該XML文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理を実施する第3のステップ、及び
    第3のステップにおいてアプリケーション・プログラムへ通知した前記一連のイベントをイベント・セット情報としてそのXML文書に対応付けてキャッシュにストアする第4のステップ、
    をコンピュータに実行させるための請求項9記載のSAXパーサー用プログラム。
  11. 処理要求対象のXML文書について、それを読込んで、該XML文書の開始及び終了、該XML文書内の各要素の開始及び終了、並びに該XML文書内の文字列の出現をそれぞれイベントと呼び、該XML文書に係る一連のイベントを処理要求元のアプリケーション・プログラムへ順番に通知する処理と、さらに該通知した一連のイベントをイベント・セット情報としてそのXML文書に対応付けてキャッシュにストアする処理とを実施する標準処理用ステップ、
    処理要求対象のXML文書についてのキャッシュのイベント・セット情報を読込んで、該イベント・セット情報に係る一連のイベントの各々該イベント・セット情報に基づいて順番に検出し、処理要求元のアプリケーション・プログラムへ検出順に通知する短縮処理用ステップ、及び
    処理対象のXML文書についてそのイベント・セット情報がキャッシュに有るか無いかを調べそのイベント・セット情報がキャッシュに無いときには前記標準処理用ステップを実行するように制御し、また、そのイベント・セット情報がキャッシュに有るときには前記短縮処理用ステップを実行するように制御する制御ステップ、
    をコンピュータに実行させるためのSAXパーサー用プログラム。
  12. 前記制御ステップは、処理対象のXML文書についてそのイベント・セット情報がキャッシュに有るか無いかを判断するとき、処理対象のXML文書と同一ファイル名のXML文書に係るイベント・セット情報がキャッシュに有ったとしても、それが現在のXML文書に対して更新前のXML文書に係るイベント・セット情報であるならば、処理対象のXML文書についてそのイベント・セット情報がキャッシュに無いとの判断を下すことをコンピュータに実行させるための請求項11記載のSAXパーサー用プログラム。
JP2002222688A 2002-07-31 2002-07-31 Saxパーサー、saxパーサー用方法、及びプログラム Expired - Fee Related JP3907187B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002222688A JP3907187B2 (ja) 2002-07-31 2002-07-31 Saxパーサー、saxパーサー用方法、及びプログラム
US10/632,178 US20040034620A1 (en) 2002-07-31 2003-07-31 Interface apparatus for structured documents

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002222688A JP3907187B2 (ja) 2002-07-31 2002-07-31 Saxパーサー、saxパーサー用方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2004062716A JP2004062716A (ja) 2004-02-26
JP3907187B2 true JP3907187B2 (ja) 2007-04-18

Family

ID=31711485

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002222688A Expired - Fee Related JP3907187B2 (ja) 2002-07-31 2002-07-31 Saxパーサー、saxパーサー用方法、及びプログラム

Country Status (2)

Country Link
US (1) US20040034620A1 (ja)
JP (1) JP3907187B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4716709B2 (ja) * 2004-06-10 2011-07-06 インターナショナル・ビジネス・マシーンズ・コーポレーション 構造化文書処理装置、構造化文書処理方法、及びプログラム
JP4144885B2 (ja) 2004-12-28 2008-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーション アプリケーション・オブジェクトの再利用方法
JP4236055B2 (ja) 2005-12-27 2009-03-11 インターナショナル・ビジネス・マシーンズ・コーポレーション 構造化文書処理装置、方法、プログラム
JP5006632B2 (ja) * 2006-03-29 2012-08-22 キヤノン株式会社 データ処理装置及びデータ処理方法
US8201143B2 (en) * 2006-09-29 2012-06-12 Microsoft Corporation Dynamic mating of a modified user interface with pre-modified user interface code library
US20130031454A1 (en) * 2011-07-28 2013-01-31 Peter Griffiths System for Programmatically Accessing Document Annotations
CN114399774A (zh) * 2022-01-19 2022-04-26 润申标准化技术服务(上海)有限公司 文件处理方法、装置和电子设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020681B1 (en) * 1999-06-14 2006-03-28 Sun Microsystems, Inc. Method for caching XML documents viewable on devices with different displays
US20020107881A1 (en) * 2001-02-02 2002-08-08 Patel Ketan C. Markup language encapsulation
US6813690B1 (en) * 2001-06-12 2004-11-02 Network Appliance, Inc. Caching media data using content-sensitive identifiers
US7535583B2 (en) * 2001-11-05 2009-05-19 Hewlett-Packard Development Company, L.P. Printer-based pre-ripping and caching of network documents

Also Published As

Publication number Publication date
US20040034620A1 (en) 2004-02-19
JP2004062716A (ja) 2004-02-26

Similar Documents

Publication Publication Date Title
US7269633B2 (en) Method and system for playback of dynamic HTTP transactions
US6611835B1 (en) System and method for maintaining up-to-date link information in the metadata repository of a search engine
US6785740B1 (en) Text-messaging server with automatic conversion of keywords into hyperlinks to external files on a network
US7120869B2 (en) Enhanced mechanism for automatically generating a transformation document
US20060031751A1 (en) Method for creating editable web sites with increased performance &amp; stability
US20090157859A1 (en) Methods And Systems For Accessing A Resource Based On URN Scheme Modifiers
US8312222B1 (en) Event-driven regeneration of pages for web-based applications
WO2002039310A1 (en) Content publication system for supporting real-time integration and processing of multimedia content including dynamic data, and method thereof
US20060070022A1 (en) URL mapping with shadow page support
JP2007264792A (ja) 音声ブラウザプログラム
US20100250729A1 (en) Method and System For Providing Access To Metadata Of A Network Accessible Resource
JP3907187B2 (ja) Saxパーサー、saxパーサー用方法、及びプログラム
US20060095449A1 (en) Data managing method, data managing system data managing apparatus, data handling apparatus, computer program, and recording medium
US7778969B2 (en) Information-processing apparatus and method for processing document
US8484282B2 (en) High-speed content transformation engine
JP5063877B2 (ja) 情報処理装置およびコンピュータプログラム
JP2000090120A (ja) 文書処理方法及び文書処理装置及び機械可読媒体
WO2006115654A2 (en) Pack uri scheme to identify and reference parts of a package
KR20100010299A (ko) 어플리케이션의 포커스 제어 방법 및 장치
EP1125221A1 (en) Method and apparatus for improving code execution performance by using parsed html
US20030037031A1 (en) Mechanism for automatically generating a transformation document
US20050021709A1 (en) Method for creating a protocal-independent manager/agent relationship, in a network management system of a telecommunication network
JPH11143910A (ja) 複合オブジェクト展開方式及びコンピュータ読み取り可能な記録媒体
JP3948851B2 (ja) コンテンツ管理システム、その方法およびコンテンツ管理プログラムを記録したコンピュータ読み取り可能な記録媒体
US7596564B1 (en) Method and system for cache management of a cache including dynamically-generated content

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051214

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060117

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060510

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060724

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20060830

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070110

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20070110

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070115

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100126

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110126

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120126

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130126

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees