(57)【要約】　　　（修正有）【課題】あるコードフラグメントから別のコードフラグメントにイベント通知メッセージを発行する機構を提供する。【解決手段】ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ　Ｍａｒｋｕｐ　Ｌａｎｇｕａｇｅ）で作成されたドキュメントを編集するように構成されたアプリケーションにおいて、ＸＭＬ関連のアクションの出現により、イベント通知メッセージが発行させられる。このＸＭＬ関連のアクションは、ＸＭＬ関連の移動アクション、ＸＭＬ関連の挿入アクション、またはＸＭＬ関連の削除アクションのいずれかであるとすることができる。このようにして、単一のイベント通知メッセージを使用して、ＸＭＬドキュメントの編集中における３つの異なるタイプのアクションの出現を示すことができる。【選択図】図２
2004133892.tif 000002
【特許請求の範囲】
【請求項１】
第１のプログラムから第２のプログラムにメッセージを発行するためのデータ構造が符号化されたコンピュータ可読媒体であって、
前記データ構造は、
前記データ構造がＸＭＬドキュメントに対して行われたアクションに関連するイベントの出現を表わすことを指示する識別子フィールドと、
前記イベントに関連する第１のＸＭＬノードを識別する第１のパラメータフィールドと、
前記イベントに関連する第２のＸＭＬノードを識別する第２のパラメータフィールドと、
複数のタイプのイベントから選択された１つである出現したイベントのタイプを識別する第３のパラメータと
を含むことを特徴とするコンピュータ可読媒体。
【請求項２】
前記データ構造は、前記ＸＭＬドキュメントの中の現在の選択を識別する第４のパラメータフィールドをさらに含むことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項３】
前記第１のＸＭＬノードは、前記アクションの実行が開始したときに前記現在の選択が内部に存在していたノードに該当することを特徴とする請求項２に記載のコンピュータ可読媒体。
【請求項４】
前記第２のＸＭＬノードは、前記アクションが行われた後に前記現在の選択が内部に存在することになるノードに該当することを特徴とする請求項２に記載のコンピュータ可読媒体。
【請求項５】
前記第１のＸＭＬノードは、前記アクションの実行が開始したときに前記現在の選択が内部に存在していたノードに該当し、かつ前記第２のＸＭＬノードは、前記アクションが行われた後に前記現在の選択が内部に存在することになるノードに該当することを特徴とする請求項２に記載のコンピュータ可読媒体。
【請求項６】
前記複数のタイプのイベントは、ＸＭＬ関連の移動アクション、ＸＭＬ関連の挿入アクション、およびＸＭＬ関連の削除アクションを含むことを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項７】
前記ＸＭＬ関連の移動アクションは、前記第１のＸＭＬノードから前記第２のＸＭＬノードへ現在の選択を移動させることを含むことを特徴とする請求項６に記載のコンピュータ可読媒体。
【請求項８】
前記ＸＭＬ関連の移動アクションは、関連するＸＭＬノードを有さない内容から前記第２のＸＭＬノードへ現在の選択を移動させることを含むことを特徴とする請求項６に記載のコンピュータ可読媒体。
【請求項９】
前記ＸＭＬ関連の移動アクションは、前記第１のＸＭＬノードから関連するＸＭＬノードを有さない内容に現在の選択を移動させることを含むことを特徴とする請求項６に記載のコンピュータ可読媒体。
【請求項１０】
前記ＸＭＬ関連の挿入アクションは、現在の選択が前記第２のＸＭＬノードの中に入るようにさせることを含むことを特徴とする請求項６に記載のコンピュータ可読媒体。
【請求項１１】
前記ＸＭＬ関連の削除アクションは、前記第１のＸＭＬノードの中にあった現在の選択が前記第２のＸＭＬノードの中に入るように前記第１のＸＭＬノードを削除することを含むことを特徴とする請求項６に記載のコンピュータ可読媒体。
【請求項１２】
前記データ構造が、前記アクションの実行が開始されたときに前記第１のプログラムから前記第２のプログラムに渡されるように構成されていることを特徴とする請求項１に記載のコンピュータ可読媒体。
【請求項１３】
コンピュータ実行可能成分を有するコンピュータ可読媒体であって、
内容を含む少なくとも複数のＸＭＬノードを有するドキュメントを編集するための第１のプログラムであって、該第１のプログラムにより実行される、複数のタイプのアクションから識別される、１つのアクションに応答して単一のイベント通知を発行するように構成された第１のプログラムと、
前記単一のイベント通知を受け取り、前記複数のタイプのアクションの少なくとも１つに応答するためのコンピュータ実行可能命令を含むイベントハンドラを用いて前記単一のイベント通知を扱うように構成された第２のプログラムとを含むことを特徴とするコンピュータ可読媒体。
【請求項１４】
前記イベントハンドラは、前記複数のタイプのアクションのそれぞれに応答するためのコンピュータ実行可能命令を含むことを特徴とする請求項１３に記載のコンピュータ可読媒体。
【請求項１５】
前記複数のタイプのアクションは、関連するＸＭＬノードを有さない内容からＸＭＬノードの中に現在の選択を移動させることに対応するＸＭＬ関連の移動アクションを含むことを特徴とする請求項１３に記載のコンピュータ可読媒体。
【請求項１６】
前記複数のタイプのアクションは、ＸＭＬノードの中から関連するＸＭＬノードを有さない内容に現在の選択を移動させることに対応するＸＭＬ関連の移動アクションを含むことを特徴とする請求項１３に記載のコンピュータ可読媒体。
【請求項１７】
前記複数のタイプのアクションは、あるＸＭＬノードの中から別のＸＭＬノードの中に現在の選択を移動させることに対応するＸＭＬ関連の移動アクションを含むことを特徴とする請求項１３に記載のコンピュータ可読媒体。
【請求項１８】
前記複数のタイプのアクションは、ＸＭＬノードを前記ドキュメント内の内容の周囲に挿入することに対応するＸＭＬ関連の挿入アクションを含むことを特徴とする請求項１３に記載のコンピュータ可読媒体。
【請求項１９】
前記複数のタイプのアクションは、前記ドキュメントからＸＭＬノードを削除することに対応するＸＭＬ関連の削除アクションを含むことを特徴とする請求項１３に記載のコンピュータ可読媒体。
【請求項２０】
前記複数のタイプのアクションは、ＸＭＬ関連の移動アクション、ＸＭＬ関連の挿入アクション、およびＸＭＬ関連の移動アクションを含むことを特徴とする請求項１３に記載のコンピュータ可読媒体。
【請求項２１】
コンピュータ実行可能成分を有するコンピュータ可読媒体であって、
第１のＸＭＬノードを第１のパラメータが識別し、第２のＸＭＬノードを第２のパラメータが識別し、複数のタイプのイベントから選択された１つの出現したイベントのタイプを第３のパラメータが識別する複数のパラメータを含む、ＸＭＬドキュメントエディタ内部のイベントの出現を示すメッセージ手段を含むことを特徴とするコンピュータ可読媒体。
【請求項２２】
前記複数のタイプのイベントは、ＸＭＬ関連の移動イベント、ＸＭＬ関連の挿入イベント、およびＸＭＬ関連の削除イベントを含むことを特徴とする請求項２１に記載のコンピュータ可読媒体。
【請求項２３】
前記ＸＭＬ関連の移動イベントは、前記第１の識別されたＸＭＬノードから前記第２の識別されたＸＭＬノードに選択を移動させることを含むことを特徴とする請求項２２に記載のコンピュータ可読媒体。
【請求項２４】
前記第１の識別されたＸＭＬノードまたは前記第２の識別されたＸＭＬノードのどちらかは、ＮＵＬＬノードを含むことを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項２５】
第１のプログラムから第２のプログラムにメッセージを発行するためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、
前記第１のプログラムに関連して出現したＸＭＬ関連のアクションと、複数のパラメータ、前記ＸＭＬ関連のアクションに関連の第１のＸＭＬノードを識別するための第１のパラメータと、前記ＸＭＬ関連のアクションに関連の第２のＸＭＬノードを識別するための第２のパラメータと、前記ＸＭＬ関連のアクションに対応する複数タイプのアクションの１つを識別するための第３のパラメータとを含むイベント通知を前記第１のプログラムから前記第２のプログラムへ発行することを含むことを特徴とするコンピュータ可読媒体。
【請求項２６】
第１のプログラムから第２のプログラムにメッセージを発行するためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、
前記第１のプログラムに関連して出現したＸＭＬ関連のアクションと、複数のパラメータ、前記ＸＭＬ関連のアクションに関連の第１のＸＭＬノードを識別するための第１のパラメータと、前記ＸＭＬ関連のアクションに関連の第２のＸＭＬノードを識別するための第２のパラメータと、前記ＸＭＬ関連のアクションに対応する複数タイプのアクションの１つを識別するための第３のパラメータとを含むイベント通知を前記第１のプログラムから前記第２のプログラムによって受け取ることを含むことを特徴とするコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ソフトウェアアプリケーションは、次第にますます複雑で、高性能になってきている。かつて単純なテキストエディタであったものが、現在では、無数の豊かな機能、例えば、Ｗｅｂページを作成する能力、またはＸＭＬマークアップを編集する能力を備えた複雑なワードプロセッサとなる傾向にある。技術が発展するにつれ、各ソフトウェアアプリケーションは、ユーザの経験から得る知識や技術（ｅｘｐｅｒｉｅｎｃｅ）を向上させるますます多くの機能を提供する。さらに、多くのソフトウェアアプリケーションは、現在では、プログラマティックインターフェース（ｐｒｏｇｒａｍｍａｔｉｃ　ｉｎｔｅｒｆａｃｅ）を介して固有の機能をアドオン（ａｄｄ−ｏｎ）アプリケーションに公開している。例えば、オブジェクト指向プログラミングにより、一部のソフトウェアアプリケーション、およびそのアプリケーションのドキュメントをオブジェクトとして取り扱うことが可能になっている。これらのオブジェクトは、アプリケーションまたはドキュメントを操作するために、呼び出すことができるメソッド、および読み取る、または設定することが可能なプロパティの形態で、アプリケーションの機能を公に公開している。これらの進歩により、プログラマは、以前にはアプリケーションと対話しながら手作業で実行していたタスクおよび機能を自動化する、サードパーティ（第３の関係者）アドオンを開発することができるようになっている。多くのそのようなアドオンアプリケーションが、ビジュアルベーシックフォーアプリケーションズ（Ｖｉｓｕａｌ　Ｂａｓｉｃ　ｆｏｒ　Ａｐｐｌｉｃａｔｉｏｎｓ）（ＶＢＡ）言語などの簡単なプログラミング言語で開発されている。それらのアドオンは、アプリケーションのメソッドおよびプロパティを呼び出して様々な目的を達成し、アプリケーションのコア機能をカスタム（顧客）環境に合わせてカスタマイズ（特注作成）することによって機能することが可能である。
【０００２】
アドオンのカスタムコードからコアのアプリケーションに呼出しを行うことができることに加えて、アプリケーション自体において何かが生じたときにアプリケーションからの呼出しに（「開始」に対抗させて）実際に応答するようにカスタムコードを書く必要性がある。例えば、アプリケーションによって受け取られたユーザのキーストローク（打鍵）に何らかの特別の仕方で反応し、おそらくは、いくつかのタイプの文字だけが許されているエリアをユーザが編集している場合にユーザのキーストロークの一部をブロックする、ワードプロセッシングアプリケーションのためのカスタムコードを書くことが望まれることがあり得る。そのような場合、プログラマが、所定のタイプのイベントが生じたときに、アプリケーションが実行すべき特別なカスタムコードが存在することをアプリケーションに知らせる手立てが必要とされる。カスタムコードがアプリケーションに登録されると、そのコードは、コアのアプリケーション内部で生じる特定のイベントに役立つ形で「反応する」ことができ、これにより、アプリケーションのコア機能を拡張することができる。
【考案の開示】
【発明が解決しようとする課題】
【０００３】
本発明は、あるコードフラグメントから別のコードフラグメント（プログラムの元のコードの一部ではなく、元のプログラムの機能を拡張するためにサードパーティ・ソリューションベンダ（ｓｏｌｕｔｉｏｎ　ｖｅｎｄｏｒ）によって追加されたものとすることが可能である）にイベント通知メッセージを発行するための機構を対象とする。通知メッセージは、可能なイベントのどれが実際に生じたのかを示す特定のタイプのものである。例えば、通知メッセージは、プログラムが入った何らかの特別な状態によってトリガされ得る。イベント通知メッセージは、そのような場合、旧状態がどのようなものであったかを記述するパラメータ、新状態がどのようなものであるかを記述するパラメータ、およびプログラムがこの状態に入らされた理由の記述を含むことがあり得る。より具体的には、ｅＸｔｅｎｓｉｂｌｅ　Ｍａｒｋｕｐ　Ｌａｎｇｕａｇｅ　ＸＭＬで作成されたドキュメントを編集するように構成されたアプリケーションにおいて、ユーザによって開始されたアクションの結果としてのＸＭＬ関連の状態変化が生じたことにより、イベント通知メッセージが発行させられる。
【課題を解決するための手段】
【０００４】
イベントによって報告されるＸＭＬ関連の状態変化は、ワードプロセッシングアプリケーションにおけるユーザの挿入ポイントのＸＭＬベースのコンテキストにおける変更であり得る。この状態変化は、例えば、ユーザが、あるＸＭＬ要素から別のＸＭＬ要素に挿入ポイントを移動することによってトリガされ得る。あるいは、この状態変化は、ユーザが、新しいＸＭＬ要素を選択の周囲に挿入したときにトリガされる可能性がある。あるいは、この状態変化は、ユーザが、ユーザの挿入ポイントを現在、囲んでいるＸＭＬ要素を削除したときにトリガされる可能性がある。このようにして、単一のイベント通知メッセージを使用して、ＸＭＬドキュメント編集中に、以上３つの異なるユーザアクションのどれが状態変化を生じさせたかにかかわらず、その種類の状態変化を示すことができる。アドオンプログラマが、例えば、ＸＭＬ構造の中のどこで、現在、ユーザが内容を編集しているかに応じてコンテキストセンシティブなフィードバックをユーザに提供するために、その種類のイベントに対応するコードを書くことができることが有用である。例えば、ユーザが、＜都市＞ＸＭＬ要素の内容の編集を始めたとき、カスタムのアドオンが、頻繁に使用される都市のリストをユーザに自動的に示唆することが可能である。一態様では、本発明は、別のプログラム（または同じプログラムの別の部分）におけるＸＭＬ関連のアクションの出現をプログラムに通知するためのデータ構造を対象とする。このデータ構造は、ＸＭＬ関連の状態変化が生じたことを示す識別子を含む。また、データ構造は、複数のパラメータも含む。あるパラメータは、その状態変化によって影響を受ける第１のＸＭＬノードを識別するのに使用され、別のパラメータは、その状態変化によって影響を受ける第２のＸＭＬノードを識別するのに使用される（状態変化が複数のＸＭＬノードに関わる場合）。第３のパラメータは、複数の原因のなかのどれが、その状態変化の原因であるかを識別するのに使用される。本発明の主題であるタイプの状態変化は、ユーザの挿入ポイントのＸＭＬコンテキストの変化である。なぜこの状態変化が生じたかの可能な原因は、ＸＭＬ関連の移動アクション、ＸＭＬ関連の挿入アクション、またはＸＭＬ関連の削除アクションである。別のパラメータを使用して、ＸＭＬ関連の状態変化によって影響を受ける内容の特定の選択を識別する。
【０００５】
別の態様では、本発明は、第１のプログラムが、ＸＭＬマークアップを含むドキュメントを編集することを可能にするように設計されている一対の実行可能プログラム（同一のプロセスの中で、または２つの別個のプロセスの中で実行される）を対象とする。また、第１のプログラムは、ユーザ選択のＸＭＬコンテキストに影響を与えるユーザアクションの結果としてドキュメント編集中に生じる状態変化に応答して、単一のイベント通知を発行するようにも設計されている。ＸＭＬコンテキストに影響を与えるイベントの原因は、ＸＭＬ関連の移動アクションやＸＭＬ関連の挿入アクション、またはＸＭＬ関連の削除アクションなどの複数のタイプのＸＭＬ関連のアクションの１つとして識別される。第２のプログラムは、単一のイベント通知を受け取り、イベントハンドラを使用してその単一のイベント通知を扱うように設計されている。イベントハンドラは、以上のタイプのアクションに何らかの適切な仕方で応答するためのコンピュータ実行可能命令を含む。
【０００６】
さらに別の態様では、本発明は、イベント通知メッセージがパラメータを含む場合に、イベント通知メッセージを発行するためのプログラム、またはイベント通知メッセージを受け取るためのプログラムを対象としている。イベント通知メッセージ自体は、ＸＭＬ関連の状態変化が生じたことを示す。イベント通知メッセージの第１のパラメータは、ＸＭＬ関連の状態変化に関連する第１のＸＭＬノードを識別し、イベント通知メッセージの第２のパラメータは、ＸＭＬ関連の状態変化に関連する第２のＸＭＬノードを識別し、イベント通知メッセージの第３のパラメータは、その状態変化の原因である複数のタイプのアクションの１つを識別し、またイベント通知メッセージの第４のパラメータは、ＸＭＬドキュメントの影響を受けた選択を識別する。
【０００７】
本発明の例示的な計算環境
図１は、本発明を実施するシステムに様々な形態で含むことが可能な例示的な計算デバイスを示している。非常に基本的な構成では、計算デバイス１００は、通常、少なくとも１つの処理ユニット１０２およびシステムメモリ１０４を含む。処理ユニット１０２には、既存の物理的プロセッサ、計画中のプロセッサ、一緒に動作するマルチプロセッサ、仮想プロセッサ、および２進実行可能命令を解釈することができる任意の他のデバイスまたはソフトウェアプログラムが含まれる。計算デバイスの具体的な構成およびタイプに応じて、システムメモリ１０４は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリなど）、または揮発性メモリと不揮発性メモリの何らかの組合せであるとすることが可能である。システムメモリ１０４は、通常、オペレーティングシステム１０５、１つまたは複数のプログラムモジュール１０６を含み、またプログラムデータ１０７も含むことが可能である。この基本的な構成を図１に破線１０８内の構成要素で示している。
【０００８】
計算デバイス１００は、さらなる機構または機能も有することが可能である。例えば、計算デバイス１００は、例えば、磁気ディスク、光ディスク、またはテープなどの追加のデータ記憶デバイス（取外し可能なデバイスおよび／または取外し不可能なデバイス）も含むことが可能である。そのような追加の記憶装置を図１に取外し可能な記憶装置１０９および取外し不可能な記憶装置１１０で図解している。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するために任意の方法または任意の技術で実装された揮発性の媒体および不揮発性の媒体、取外し可能な媒体および取外し不可能な媒体を含むことが可能である。システムメモリ１０４、取外し可能な記憶装置１０９、および取外し不可能な記憶装置１１０はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは所望の情報を記憶するのに使用することができ、計算デバイス１００がアクセスすることができる任意の他の媒体が含まれるが、以上には限定されない。任意のそのようなコンピュータ記憶媒体が、デバイス１００の一部であることが可能である。また、計算デバイス１００は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス１１２も含むことが可能である。また、ディスプレイ、スピーカ、プリンタなどの出力デバイスも含むことが可能である。以上のすべてのデバイスは、当技術分野で周知であり、本明細書で詳述する必要はない。
【０００９】
コンピュータデバイス１００は、デバイスが、ネットワークを介するなどして、他の計算デバイス１１８と通信することを可能にする通信接続１１６も含むことが可能である。通信接続１１６は、通信媒体の例である。通信媒体は、通常、搬送波などの変調されたデータ信号、または他のトランスポート機構でコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを具現化し、あらゆる情報配信媒体が含まれる。「変調されたデータ信号」という用語は、信号に情報を符号化するような仕方で特性の１つまたは複数が設定または変更されている信号を意味する。限定としてではなく例として、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、およびその他の無線媒体などの無線媒体が含まれる。本明細書で使用するコンピュータ可読媒体という用語は、記憶媒体と通信媒体をともに含む。
【発明を実施するための最良の形態】
【００１０】
本発明により、ワードプロセッサなどのソフトウェアアプリケーションが、メッセージを純化する（ｒｅｆｉｎｅ）パラメータを含む単一のタイプのメッセージを発行して、状態変化の出現を、その状態変化が異なるユーザアクションによって生じさせられた可能性がある場合でも、別のアプリケーションに通知することができるようになる。より具体的には、ｅＸｔｅｎｓｉｂｌｅ　Ｍａｒｋｕｐ　Ｌａｎｇｕａｇｅ（ＸＭＬ）ドキュメントの編集を可能にするソフトウェアアプリケーションが、ある機能を他のソフトウェアアプリケーションに公開する。この機能は、特定のマークアップタグ、または特定の内容を編集することに関連していることが可能である。ソフトウェアアプリケーションに対するアドオンの開発者は、あるマークアップ編集アクションの通知を受けることを当てにすることができる。そのために、ソフトウェアアプリケーションは、そのアクションの通知を公開する。本発明によれば、ソフトウェアアプリケーションは、単一の「イベント」メッセージを発行することによって２つ以上のアクションの通知を発行するように構成される。一実施形態では、単一のイベントメッセージは、３つの別個のアクションの１つの出現からもたらされる状態変化を示すように機能することが可能である。第１に、単一のイベントは、現在の選択が中にあった要素が削除されたことに応答して発行することが可能である。第２に、単一のイベントは、要素が現在の選択の周囲に挿入されたことに応答して発行することが可能である。第３に、単一のイベントは、現在の選択がある場所から別の場所に変化したことに応答して発行することが可能である。状態変化の原因が何であるかにかかわらず、生じるイベントは同一であるが、状態変化の原因をパラメータのなかに含んでいる。
【００１１】
図２は、複数の異なるアクションの１つの出現に応答して単一のイベントメッセージを別のソフトウェアアプリケーション、または別のプログラムに発行する本発明の一実施形態を実施するソフトウェアアプリケーションを示す機能ブロック図である。ＸＭＬドキュメントエディタ２０１は、ユーザが、フリースタイルの編集環境において、ＸＭＬドキュメント２０２のようなＸＭＬドキュメントを作成し、編集することができるようにするソフトウェアアプリケーションである。ＸＭＬドキュメントエディタ２０１は、ＸＭＬの作成および編集を可能にするように特別にプログラミングされたワードプロセッサであるとすることが可能である。本明細書では、ワードプロセッサの文脈で説明しているが、本発明は、ワードプロセッサには限定されず、実際、いくつかの例を挙げれば、スプレッドシートアプリケーション、フォームズエディタ（ｆｏｒｍｓ　ｅｄｉｔｏｒ）、デスクトップパブリッシング（ｄｅｓｋｔｏｐ　ｐｕｂｌｉｓｈｉｎｇ）パッケージ、電子メールエディタ、コード編集ツール、またはアプリケーションとのユーザ対話によりＸＭＬドキュメントが変更されることがもたらされる可能性がある（ユーザに気付かれない場合でも）任意のツールなどの、ＸＭＬ（またはそれに類する）ドキュメントを操作することができる任意のアプリケーションに対しても同等の適用性を有することが分かるであろう。
【００１２】
ＸＭＬドキュメント２０２は、ＸＭＬ要素およびＸＭＬ内容を含むファイルである。ＸＭＬドキュメント２０２は、フォーマティング（書式設定）等に関連する、ＸＭＬドキュメントエディタ２０１によって挿入された要素を含むことが可能である。さらに、ＸＭＬドキュメント２０２は、ユーザが手作業で挿入し、ユーザの選択と意図による任意の要素に相当する要素を含むことが可能である。いずれにしても、ＸＭＬドキュメントエディタ２０１により、ユーザが、要素、および要素の内容を挿入すること、変更すること、および削除することを含め、ＸＭＬドキュメント２０２を編集することが可能になる。
【００１３】
ＸＭＬドキュメントエディタ２０１に関連するイベント生成器２５０は、あるアクションの結果としてのドキュメントにおけるある状態変化の出現を聴取し、その状態変化が生じた場合、その状態変化の通知を発行するようにプログラミングされている。通知は、ＸＭＬドキュメントエディタ２０１のある機能を公開する公開インターフェース（ｐｕｂｌｉｃ　ｉｎｔｅｒｆａｃｅ）２５１の形態をとる。
【００１４】
公開インターフェース２５１については暫く置くとして、自動化成分２０９などの別のプログラムも含まれ、これは何らかの補足的な機能、または自動化された機能をＸＭＬドキュメントエディタ２０１に追加するようにプログラミングされている。言い換えれば、自動化成分２０９は、ＸＭＬドキュメントエディタ２０１のユーザに、ＸＭＬドキュメントエディタ２０１において既に存在するタスクの何らかの自動化を提供するように開発されることが可能なソフトウェアアプリケーションである。１つの一般的な例が、会社規格に従ってドキュメントをフォーマッティングすることなどの何らかの活動を行う、いくつかの、そうでなければ手作業となるステップを、単一のボタンクリック等に減らす「マクロ」アプリケーションであり得る。あるいは、自動化成分２０９は、ドキュメントをＷｅｂ等に公開するための何らかの外部プロセスをユーザが呼び出すことができるようにするなどの、補足的な機能をＸＭＬドキュメントエディタ２０１に追加してもよい。いずれにしても、自動化成分２０９は、ＸＭＬドキュメント編集環境における何らかの活動の出現に応答する、イベントハンドラ２７５などのコードを含む。詳細には、自動化成分２０９は、ＸＭＬ関連の編集アクションを自動化する、またはＸＭＬ関連の編集アクションに補足的な機能を追加するようにプログラミングされる。より具体的には、本発明によれば、イベントハンドラ２７５は、ＸＭＬドキュメント２０２の編集に直接に関連する特定のアクションの出現に応答するようにプログラミングされる。
【００１５】
次に、ＸＭＬドキュメントエディタ２０１によって公開されるインターフェースに戻ると、自動化成分２０９などのＸＭＬ関連のアドオンソフトウェアアプリケーションの関心対象となるＸＭＬコンテキスト状態変化をもたらす３つのカテゴリのアクションが存在することが、本発明者によって判断された。これらのカテゴリには、（１）現在の選択ポイントを囲むＸＭＬ要素を削除すること、（２）選択ポイントの周囲に新しいＸＭＬ要素を挿入すること、および（３）ある場所から別の場所に選択ポイントを移動させることが含まれる。さらに、ある場所から別の場所に選択ポイントを移動させるケースには、次の３つの別個のＸＭＬ関連状況が含まれる。すなわち、（１）あるＸＭＬ要素の中から別のＸＭＬ要素の中に選択ポイントを移動させること、（２）あるＸＭＬ要素の中からＸＭＬ要素の中にない内容に選択ポイントを移動すること、および（３）ＸＭＬ要素の中にない内容からＸＭＬ要素の中に選択ポイントを移動させることである。
【００１６】
これまでは、以上のカテゴリのアクションのそれぞれが、別個の通知を正当化するものとなり、自動化成分２０９の開発者が、３つの異なるイベントについて知り、３つの異なるイベントを扱うことが必要とされた。しかし、これら特定の３つの異なるカテゴリのアクションは、同様のコードによって同様の目的で共通に扱われることが、本発明者によって判断された。それに従い、これら３つのアクションのそれぞれからもたらされるドキュメントの中の状態変化をアドオンソフトウェアアプリケーションに通知する単一のイベントが開発された。このようにして、イベントハンドラ２７５のような単一イベントハンドラが、ＸＭＬドキュメントエディタ２０１によって公開される機能をうまく活かすように実装されることが可能である。この場合、「機能」という用語は、ＸＭＬ関連の内容または要素を編集する体験に関連する機能を意味することに留意されたい。
【００１７】
単一のイベントを使用すると、自動化成分２０９は、３つのカテゴリのアクションのそれぞれによって生じさせられるＸＭＬ内容の状態変化に応答するようにプログラミングされた単一のイベントハンドラ２７５を含むことが可能である。この設計により、異なるイベントを扱うことの柔軟性を犠牲にすることなく、自動化成分２０９を開発する仕事が簡単になる。１つの特定の実施形態では、公開インターフェース２５１によって公開されるイベントは、実質的に、図３に示し、以下に再現する形態をとることが可能である。
ＸＭＬＣｈａｎｇｅ（Ｓｅｌ　Ａｓ　Ｓｅｌｅｃｔｉｏｎ，　ＯｌｄＸＭＬＮｏｄｅ　ＡＳ　ＸＭＬＮｏｄｅ，
ＮｅｗＸＭＬＮｏｄｅ　Ａｓ　ＸＭＬＮｏｄｅ，　Ｒｅａｓｏｎ　Ａｓ　ＷｄＸＭＬＣｈａｎｇｅＲｅａｓｏｎ）
【００１８】
ただし、この命令の中の各ターム（用語）は、次の意味を有する。「ＸＭＬＣｈａｎｇｅ」という用語は、公開されているイベントの名前を指し、「Ｓｅｌ」パラメータ３０１は、編集中のＸＭＬドキュメント内の現在の選択ポイントまたは選択された内容を表わすオブジェクトに相当し、「ＯｌｄＸＭＬＮｏｄｅ」パラメータ３０２は、選択が、待ち状態のアクションの完了に先立って内部に存在していたＸＭＬ要素を表わすオブジェクトに相当し、「ＮｅｗＸＭＬＮｏｄｅ」パラメータ３０３は、選択が、待ち状態のアクションの完了後に内部に存在することになるＸＭＬ要素を表わすオブジェクトに相当し、また「Ｒｅａｓｏｎ」パラメータ３０４は、そのＸＭＬ内容の状態変化をもたらす特定の待ち状態のアクションのカテゴリの識別子に相当する。Ｒｅａｓｏｎパラメータは、前述した３つのカテゴリのアクションの１つを識別するのに使用される。したがって、ＸＭＬドキュメントエディタ２０１によってそのメッセージが発行されたとき、送られるＲｅａｓｏｎパラメータは、３つのタイプのアクションのどれが生じたかを定義する３つのうちの１つである。
【００１９】
ＸＭＬドキュメントエディタ２０１によって公開されるイベントをうまく活用するため、イベントハンドラ２７５は、イベントハンドラ２７５にイベントを認知させる宣言を含み、そしてまた、３つのカテゴリのアクションのそれぞれに応答して実行されるコードを含む。以下は、前述したイベントを扱うように１つの特定の実施形態で使用されることが可能な擬似コードである。
Ｐｕｂｌｉｃ　ＷｉｔｈＥｖｅｎｔｓ　ｏＷｏｒｄＰｒｏｃ　Ａｓ　ＷｏｒｄＰｒｏｃ．Ａｐｐｌｉｃａｔｉｏｎ
Ｐｒｉｖａｔｅ　Ｓｕｂ　ｏＷｏｒｄＰｒｏｃ＿ＸＭＬＣｈａｎｇｅ（Ｓｅｌ　Ａｓ　Ｓｅｌｅｃｔｉｏｎ，
ＯｌｄＸＭＬＮｏｄｅ　Ａｓ　ＸＭＬＮｏｄｅ，　ＮｅｗＸＭＬＮｏｄｅ　Ａｓ　ＸＭＬＮｏｄｅ，
Ｒｅａｓｏｎ　Ａｓ　ＷｄＸＭＬＣｈａｎｇｅＲｅａｓｏｎ）
Ｓｅｌｅｃｔ　Ｃａｓｅ　Ｒｅａｓｏｎ
Ｃａｓｅ　ｗｄＸＭＬＣｈａｎｇｅＲｅａｓｏｎＩｎｓｅｒｔ
ＸＭＬ挿入に応答して実行されるコード
Ｃａｓｅ　ｗｄＸＭＬＣｈａｎｇｅＲｅａｓｏｎＤｅｌｅｔｅ
ＸＭＬ削除に応答して実行されるコード
Ｃａｓｅ　ｗｄＸＭＬＣｈａｎｇｅＲｅａｓｏｎＭｏｖｅ
選択ポイントを移動することに応答して実行されるコード
Ｅｎｄ　Ｓｅｌｅｃｔ
Ｅｎｄ　Ｓｕｂ
【００２０】
以上の擬似コードは、最初に、「ＷｏｒｄＰｒｏｃ．Ａｐｐｌｉｃａｔｉｏｎ」タイプのものであるオブジェクト「ｏＷｏｒｄＰｒｏｃ」を生成するが、ここで、ＷｏｒｄＰｒｏｃ．Ａｐｐｌｉｃａｔｉｏｎタイプのオブジェクトは、基本的に、「ＷｏｒｄＰｒｏｃ．」という名前の付けられたソフトウェアアプリケーションによって提供される機能のインスタンス化であることが、当分野の技術者には認められよう。この場合、ＷｏｒｄＰｒｏｃ．　Ａｐｐｌｉｃａｔｉｏｎは、ＸＭＬドキュメントエディタ２０１に相当して、ｏＷｏｒｄＰｒｏｃオブジェクトが、ＸＭＬドキュメントエディタ２０１のインスタンスに相当するようになっている。「ＷｉｔｈＥｖｅｎｔｓ」ステートメントを含めることにより、ｏＷｏｒｄＰｒｏｃオブジェクトが、ＸＭＬドキュメントエディタ２０１によって生成されたイベントを認知させられる。この目的で、「ｏＷｏｒｄＰｒｏｃ＿ＸＭＬＣｈａｎｇｅ」という名前が付けられたサブルーチンが、前述したＸＭＬＣｈａｎｇｅイベントを扱うコードを含む。このハンドラコードのパラメータとメッセージのパラメータは、同一である。
【００２１】
この特定の実例では、Ｓｅｌｅｃｔ／Ｃａｓｅ構成が、イベントが生じる可能性がある３つの原因のそれぞれを扱うのに使用されている。例えば、「Ｃａｓｅ　ｗｄＸＭＬＣｈａｎｇｅＲｅａｓｏｎＩｎｓｅｒｔ」というステートメントは、ＸＭＬ要素が選択の周囲に挿入されたことが原因で生じたイベントを扱うのに使用されることができる。「Ｃａｓｅ　ｗｄＸＭＬＣｈａｎｇｅＲｅａｓｏｎＤｅｌｅｔｅ」というステートメントは、選択の周囲のＸＭＬ要素が削除されたことが原因で生じたイベントを扱うのに使用されることができる。また、「Ｃａｓｅ　ｗｄＸＭＬＣｈａｎｇｅＲｅａｓｏｎＭｏｖｅ」というステートメントは、何らかのＸＭＬに関連する仕方で選択ポイントが移動されたことが原因で生じたイベントを扱うのに使用されることができる。次に、以上３つのケースのそれぞれを図４ないし６を参照して説明する。
【００２２】
図４は、ＸＭＬドキュメント２０２を編集することができるようにされているとき、ＸＭＬドキュメントエディタ２０１によって提示されるようにみえる表示がどのようなものであるかを示す図である。図示するとおり、ＸＭＬドキュメント２０２は、ＸＭＬ要素によっていくつかの部分が包まれている経歴書ドキュメントであるとすることが可能である。例えば、「ジョンドウ」という名前が、＜名前＞要素４０５の間に含まれており、＜名前＞要素４０５は、＜経歴書＞要素４０７の間に順に含まれている。挿入ポイントが、＜ｐ＞要素４３０の間の内容に対応する元の場所４１５に示されている。
【００２３】
編集中、ユーザは、挿入ポイントを移動することを含め、ＸＭＬドキュメント２０２に対して多くのアクションを行うことができる。例えば、編集中、挿入ポイントを元の場所４１５から、「スミス教授」というテキストストリーム（ｓｔｒｅａｍ　ｏｆ　ｔｅｘｔ）の中の新しい場所４２５に移動することができる。図示するこのテキストストリームは、現行のどのＸＭＬ要素の中にも含まれていないことに留意されたい。したがって、そのアクション、および周囲の状況に基づき、挿入ポイントがあるＸＭＬ要素からどのＸＭＬ要素の中にもない内容に移動されたことを示すイベントが生じさせられる。この場合、前に例示したイベントに非常によく似たメッセージが、以下に定義するとおりパラメータを伴って発行することが可能である。
【００２４】
Ｓｅｌパラメータは、現在の選択を含むオブジェクトを含めることが可能である。記述例では、現在の選択は、挿入ポイントの元の場所４１５に関連している。言い換えれば、＜ｐ＞要素の内容全体が、Ｓｅｌｅｃｔｉｏｎオブジェクトの中に、または、すべての内容より少ない内容が選択されている場合には、その内容のサブセットの中に、入れられることが可能である。挿入ポイントは、ＸＭＬ要素＜ｐ＞の中から移動されているので、ＯｌｄＸＭＬＮｏｄｅは、元の場所４１５が内部に存在していた特定の＜ｐ＞要素に対応する。同様に、ＮｅｗＸＭＬＮｏｄｅは、挿入ポイントが移動した先のＸＭＬ要素に対応し、このケースでは、新しい場所４２５を囲むＸＭＬ要素が存在しないため、ＮＵＬＬ（無効）である。最後に、Ｒｅａｓｏｎパラメータは、ＸＭＬ関連のＭＯＶＥ（移動）アクションが行われたことの指示子を含む。
【００２５】
挿入ポイントは、別の方向（例えば、新しい場所４２５から元の場所４１５）に移動されることも可能であったことに留意されたい。その場合、それでも、ＸＭＬ内容変更イベントが依然として生じさせられるが、ただし、ＯｌｄＸＭＬＮｏｄｅは、ＮＵＬＬとなり、またＮｅｗＸＭＬＮｏｄｅは、＜ｐ＞要素４３０となる。その他のパラメータは、前述したとおりである。
【００２６】
文書処理アプリケーションの作成者は、どのタイプのＸＭＬ要素によってイベントが生じさせられるか否かを自由に定義することができることが、当分野の技術者には認められよう。例えば、アプリケーション作成者は、自らが選択する何らかの特殊なネームスペースの要素に関わるＭｏｖｅ（移動）アクション、Ｉｎｓｅｒｔ（挿入）アクション、またはＤｅｌｅｔｅ（削除）アクションは、イベントを生じさせないが、要素が別のネームスペースからのものである場合には、イベントを生じさせると決めることができる。より具体的には、アプリケーション作成者は、文書処理アプリケーションの固有ＸＭＬスキーマを表わすネームスペースからの要素が、イベントを生じさせる状態変化検出器に対して完全に不可視であり、固有でないネームスペースからの要素だけが、イベント生成器２５０によって「監視」される。
【００２７】
図５は、さらに編集が行われた後のＸＭＬドキュメント２０２の別の表示である。最初に、ユーザは、「スミス教授」というテキストの周囲に新しいＸＭＬ要素を挿入し、これにより、「スミス教授」というテキストを＜経歴書＞要素４０７の中に移動することができる。以上の状況に基づき、ＸＭＬ関連の挿入イベントが、ＸＭＬドキュメントエディタ２０１によって生じさせられる。したがって、そのイベントのＳｅｌパラメータは、新しいＸＭＬ要素５１０の内容、「スミス教授」というテキストを表わす選択オブジェクトを含む。このテキストは、挿入アクションの前にはＸＭＬ要素の中に含まれていなかったので、ＯｌｄＸＭＬＮｏｄｅは、ＮＵＬＬである。ＮｅｘｔＸＭＬＮｏｄｅは、新しい要素、＜照会先＞要素５１０を識別する。最後に、Ｒｅａｓｏｎパラメータは、挿入イベントに対応する識別子を含む。
【００２８】
この例では、ユーザが、＜照会先＞要素５１０を挿入した後、挿入ポイントが、＜照会先＞要素５１０から＜目的＞要素５１２に移動され、これにより、別の移動イベントが生じさせられる。ただし、前述した移動イベントとは異なり、現行の移動イベントは、挿入ポイントをあるＸＭＬ要素（＜照会先＞要素５１０）から別のＸＭＬ要素（＜目的＞要素５１２）に移動することに相当する。このケースでは、このイベントのＳｅｌパラメータは、＜照会先＞要素５１０の内容、「スミス教授」というテキストに対応する。ＯｌｄＸＭＬＮｏｄｅパラメータは、＜照会先＞要素５１０を識別し、またＮｅｗＸＭＬＮｏｄｅパラメータは、＜目的＞要素５１２を識別する。また、最後に、Ｒｅａｓｏｎパラメータは、イベントのタイプをＸＭＬ関連の移動イベントとして識別する。
【００２９】
図６は、さらなる編集が行われた後のＸＭＬドキュメント２０２のさらに別の表示である。この状況では、ユーザが、「働きがいのある就職」というテキスト６１０の周囲から＜目的＞要素を削除すると、ＸＭＬ関連の削除イベントが生じさせられる。前述したイベントと同様の形で、削除イベントは、「働きがいのある就職」というテキスト６１０を現在の選択として、＜目的＞要素５１２（図５）をＯｌｄＸＭＬＮｏｄｅとして、また＜経歴書＞要素４０７をＮｅｗＸＭＬＮｏｄｅとして識別するＳｅｌパラメータを含む。最後に、Ｒｅａｓｏｎパラメータは、ＸＭＬ関連の削除アクションが行われたことの指示を含む。
【００３０】
要約すれば、本発明により、ＸＭＬ編集環境における複数のＸＭＬ関連のアクションからもたらされた状態変化の出現を示すように単一のイベント通知により多くを担わせる（ｏｖｅｒｌｏａｄ）ことが可能になる。複数のアクションに関する単一のイベント通知により、ＸＭＬ編集環境によって公開される機能を活用するアドオンソフトウェアアプリケーションを開発する仕事が簡単になる。
【００３１】
以上の詳細説明、例示、およびデータにより、本発明の構成の製作および使用の完全な説明が提供される。本発明の趣旨および範囲を逸脱することなく、本発明の多数の実施形態を実施することが可能であるため、本発明は、添付の特許請求の範囲に存するものとする。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施形態を実施することが可能な計算環境を示す機能ブロック図である。
【図２】本発明の一実施形態による公開インターフェースを公開し、使用するソフトウェアアプリケーションの概要を示す機能ブロック図である。
【図３】本発明の一実施形態において使用されることが可能なイベント通知メッセージの一実施形態の論理を示す図である。
【図４】本発明の一実施形態によるＸＭＬドキュメントを編集することを可能にするソフトウェアアプリケーションによって提示される表示がどのようなものであるかを示す図である。
【図５】本発明の一実施形態によるＸＭＬドキュメントをさらに編集することを可能にするソフトウェアアプリケーションによって提示される別の表示がどのようなものであるかを示す図である。
【図６】本発明の一実施形態によるＸＭＬドキュメントをまたさらに編集することを可能にするソフトウェアアプリケーションによって提示されるさらに別の表示がどのようなものであるかを示す図である。
【符号の説明】
【００３３】
１００　計算デバイス
１０２　処理ユニット
１０４　システムメモリ
１０５　オペレーティングシステム
１０６　プログラムモジュール
１０７　プログラムデータ
１０８　基本的な構成
１０９　取外し可能な記憶装置
１１０　取外し不可能な記憶装置
１１２　入力デバイス
１１４　出力デバイス
１１６　通信接続
１１８　他の計算デバイス
２０１　ＸＭＬドキュメントエディタ
２０２　ＸＭＬドキュメント
２０９　自動化成分
２５０　イベント生成器
２５１　公開インターフェース
２７５　イベントハンドラ
３０１　「Ｓｅｌ」パラメータ
３０２　「ＯｌｄＸＭＬＮｏｄｅ」パラメータ
３０３　「ＮｅｗＸＭＬＮｏｄｅ」パラメータ
３０４　「Ｒｅａｓｏｎ」パラメータ
４０５　＜名前＞要素
４０７　＜経歴書＞要素
４１５　元の場所
４２５　新しい場所
４３０　＜ｐ＞要素
５１０　＜照会先＞要素
５１２　＜目的＞要素
６１０　＜働きがいのある就職＞テキスト
【図１】
2004133892.tif 000003
【図２】
2004133892.tif 000004
【図３】
2004133892.tif 000005
【図４】
2004133892.tif 000006
【図５】
2004133892.tif 000007
【図６】
2004133892.tif 000008
【外国語明細書】
2004133892.tif 000009
2004133892.tif 000010
2004133892.tif 000011
2004133892.tif 000012
2004133892.tif 000013
2004133892.tif 000014
2004133892.tif 000015
2004133892.tif 000016
2004133892.tif 000017
2004133892.tif 000018
2004133892.tif 000019
2004133892.tif 000020
2004133892.tif 000021
2004133892.tif 000022
2004133892.tif 000023
2004133892.tif 000024
2004133892.tif 000025
2004133892.tif 000026
2004133892.tif 000027
2004133892.tif 000028
2004133892.tif 000029
2004133892.tif 000030
2004133892.tif 000031
2004133892.tif 000032
2004133892.tif 000033
2004133892.tif 000034
2004133892.tif 000035
2004133892.tif 000036