(57)【要約】  文書内のデータストアと対話するためのプログラム可能性モードが、実時間対話を可能にする。文書メタデータなど、文書に関連付けられた情報を構造化するためのデータが、文書の表面レベルビューと異なるロケーションにおいて、異なるデータ間の関係が維持されるデータストア内で維持される。データストアは、様々なアプリケーションがデータの１つまたは複数にアクセスし働きかけることができるように、データストア内の様々なデータにインターフェースを公開する。諸データは、拡張マークアップ言語（ＸＭＬ）などマークアップ言語に従って構造化することができ、データストアが、所与のデータに関連付けられたＸＭＬスキーマに基づいて、データに適用された構造を妥当性検証することができるように、ＸＭＬスキーマを各データに関連付けることができる。
2009508228.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによって生成された文書に関連付けられたデータを管理するためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、
文書に関連付けられる構造化データ項目を、前記文書とは別々に維持されるデータストア内に格納する工程と、
データコンシューマによる前記構造化データ項目に対するプログラム的なアクセスを可能にするために、前記データコンシューマにアプリケーションプログラミングインターフェース（ＡＰＩ）を公開する工程と
を具え、ここで、前記文書がオープンである間、および前記文書がクローズされているとき、前記アプリケーションプログラミングインターフェース（ＡＰＩ）が、前記データストア内の前記構造化データ項目にアクセスする能力を提供することを特徴とするコンピュータ可読媒体。
【請求項２】
拡張マークアップ言語（ＸＭＬ）に従って前記構造化データ項目を構造化することをさらに具えたことを特徴とする請求項１記載のコンピュータ可読媒体。
【請求項３】
前記データコンシューマによる前記構造化データ項目に対する前記プログラム的なアクセスを可能にする前記アプリケーションプログラミングインターフェース（ＡＰＩ）は、複数のデータコンシューマが同時に同じ構造化データ項目にアクセスすることを可能にすることを含むことを特徴とする請求項２記載のコンピュータ可読媒体。
【請求項４】
前記アプリケーションプログラミングインターフェース（ＡＰＩ）を使用して、前記構造化データ項目の１つに変更がいつ加えられたか判定する工程と、
変更が加えられたとき、登録されているデータコンシューマに前記変更について通知する工程と、
前記変更が前記登録されているデータコンシューマによっていつ受け入れられたか、または拒絶されたか判定する工程と
をさらに具えたことを特徴とする請求項３記載のコンピュータ可読媒体。
【請求項５】
前記登録されているデータコンシューマの１つが前記変更を拒絶したとき前記変更を逆戻しする工程と、
前記登録されているデータコンシューマのそれぞれが前記変更を受け入れたとき前記変更を前記データストアに引き渡す工程と
をさらに具えたことを特徴とする請求項４記載のコンピュータ可読媒体。
【請求項６】
前記アプリケーションプログラミングインターフェース（ＡＰＩ）を使用し、前記変更が前記データストアに引き渡される前に前記構造化データ項目を妥当性検証するために使用されるＸＭＬスキーマファイルに、前記構造化データ項目を関連付ける工程
をさらに具えたことを特徴とする請求項５記載のコンピュータ可読媒体。
【請求項７】
前記アプリケーションプログラミングインターフェース（ＡＰＩ）は、前記データストアに対する変更、および前記構造化データ項目の１つまたは複数に対する変更のうちの少なくとも１つに対する変更通知に関する通知を受け取るように登録するための機能を提供し、前記変更は、前記データストアおよび前記構造化データ項目のうちの少なくとも１つに対する削除、追加、および修正を含むことを特徴とする請求項２記載のコンピュータ可読媒体。
【請求項８】
前記アプリケーションプログラミングインターフェース（ＡＰＩ）は、ノードを前記データストアに追加し、ノードを前記データストアから削除し、前記データストア内のノードを置換するためのインターフェースを提供することを特徴とする請求項７記載のコンピュータ可読媒体。
【請求項９】
前記アプリケーションプログラミングインターフェース（ＡＰＩ）は、既存のファイルを使用して前記データストアを占有し、ＸＭＬの文字列を使用して前記データストアを占有するためのインターフェースを提供することを特徴とする請求項７記載のコンピュータ可読媒体。
【請求項１０】
前記アプリケーションプログラミングインターフェース（ＡＰＩ）は、名前空間を追加し、名前空間をルックアップし、スキーマを追加し、スキーマを削除し、スキーマを再ロードするためのインターフェースを提供することを特徴とする請求項７記載のコンピュータ可読媒体。
【請求項１１】
前記アプリケーションプログラミングインターフェース（ＡＰＩ）は、ストリームを追加し、ストリームを除去し、サブツリーを追加し、サブツリーを除去し、現在のノードの隣の兄弟を取得し、ノードタイプを得る現在のノードの以前の兄弟を取得するためのインターフェースを提供することを特徴とする請求項７記載のコンピュータ可読媒体。
【請求項１２】
前記アプリケーションプログラミングインターフェース（ＡＰＩ）は、ノード値を取得し、構造を押し付けるためのインターフェースを提供することを特徴とする請求項７記載のコンピュータ可読媒体。
【請求項１３】
コンピュータによって生成された文書に関連付けられたデータを管理するための、コンピュータによって実施される方法であって、
拡張マークアップ言語（ＸＭＬ）に従って構造化される、文書に関連付けられる構造化データ項目を、データストアを使用して格納する工程と、
前記文書に対する、また前記データストア内に含まれる前記構造化データ項目に対するプログラム的なアクセスを可能にするアプリケーションプログラミングインターフェース（ＡＰＩ）をデータコンシューマに公開する工程と、
前記文書が編集されている間、および前記文書がクローズされているとき、前記データストア内の前記構造化データ項目にアクセスするために前記ＡＰＩを使用する工程と
を具え、ここで、前記データコンシューマが、登録されているとき、前記データストアに加えられる変更に関する通知を受け取ることを特徴とする方法。
【請求項１４】
前記アプリケーションプログラミングインターフェース（ＡＰＩ）を使用する工程は、
前記アプリケーションプログラミングインターフェース（ＡＰＩ）を使用して、前記データストアの１つ対する変更を開始する工程と、
前記変更に関して前記登録されているデータコンシューマに前記通知を送る工程と、
前記登録されているデータコンシューマからの応答がいつ拒絶であるか判定する工程と、
前記応答が拒絶であるとき、前記変更、および副作用変更を逆戻しする工程と、
前記登録されているデータコンシューマのすべてが前記変更をいつ受け入れたか判定する工程と、
前記登録されているデータコンシューマが前記変更を受け入れたとき、前記データコンシューマの１つによってあるアプリケーションプログラミングインターフェース（ＡＰＩ）を介して送られるＸＭＬスキーマファイルを使用して、任意選択で前記変更を妥当性検証する工程と、
前記データストアの１つまたは複数に前記変更を引き渡す工程と
をさらに具えたことを特徴とする請求項１３記載のコンピュータによって実施される方法。
【請求項１５】
前記アプリケーションプログラミングインターフェース（ＡＰＩ）を使用する工程は、ノードについて値を取得し、ノードを追加し、ノードを削除し、ノードを移動し、スキーマを追加し、スキーマを削除し、スキーマを再ロードし、名前空間を追加し、名前空間を除去するためのプログラミングインターフェースを提供する工程
をさらに具えたことを特徴とする請求項１４記載のコンピュータによって実施される方法。
【請求項１６】
コンピュータによって生成された文書に関連付けられたデータを管理するためのシステムであって、
外部データコンシューマと、
文書を格納するように構成される文書データストアと、
前記文書の１つまたは複数に関連付けられる構造化データ項目を格納するように構成されるデータストアと
を具え、
前記データストアは、ＸＭＬデータストアと、前記外部データコンシューマおよび内部データコンシューマと対話するように構成されるＡＰＩブローカと、構造化データ項目に加えられる変更に関連付けられる変更を格納するように構成される変更ストアと、前記構造化データ項目に対して加えられる前記変更の結果として加えられる変更を逆戻しするように構成されるアンデューストアとを含み、
前記ＡＰＩブローカは、前記文書に対する、また前記データストア内に含まれる前記構造化データ項目に対するプログラム的なアクセスを可能にするプログラミングインターフェース（ＡＰＩ）を公開し、前記文書がオープンである間、および前記文書がクローズされているとき、前記データストア内の前記構造化データ項目にアクセスするために前記プログラミングインターフェース（ＡＰＩ）を使用することを特徴とするシステム。
【請求項１７】
前記データストアが、
前記構造化データ項目に適用された拡張マークアップ言語（ＸＭＬ）マークアップデータに対する変更を受け取り、
前記ＸＭＬマークアップデータに対する前記変更が対象とする前記構造化データ項目に関連付けられたＸＭＬスキーマファイルを読み取り、
前記読み取られたＸＭＬスキーマファイルに従って、前記ＸＭＬマークアップデータに対する前記変更が有効であるかどうか判定し、
前記読み取られたＸＭＬスキーマファイルに従って前記ＸＭＬマークアップデータに対する前記変更が有効でない場合、前記ＸＭＬマークアップデータに対する前記変更を許さず、前記読み取られたＸＭＬスキーマファイルに従って前記ＸＭＬマークアップデータに対する前記変更が有効であるとき、１つまたは複数の前記ＸＭＬストアに前記変更を引き渡すようにさらに構成されることを特徴とする請求項１６記載のシステム。
【請求項１８】
前記ＸＭＬデータストアのそれぞれは、アンドゥストアと、変更ストアとを具えたことを特徴とする請求項１６記載のシステム。
【請求項１９】
前記アプリケーションプログラミングインターフェース（ＡＰＩ）は、ノードを前記データストアに追加し、ノードを前記データストアから削除し、前記データストア内のノードを置換し、前記データストアから値を取得するためのインターフェースを提供することを特徴とする請求項１６記載のシステム。
【請求項２０】
前記アプリケーションプログラミングインターフェース（ＡＰＩ）は、スキーマを追加し、スキーマを削除し、スキーマを再ロードするためのインターフェースを提供することを特徴とする請求項１９記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータによって生成された文書に関連付けられたデータを管理するための方法およびシステムに係り、文書用のＸＭＬデータストアのためのプログラム可能性に関する。
【背景技術】
【０００２】
コンピュータユーザは、ものを書き、計算し、計画を立て、プレゼンテーションを準備し、電子メールを送受信し、音楽を作る、などの助けとなるユーザフレンドリなソフトウェアアプリケーションに慣れてきている。たとえば、ワードプロセッシングアプリケーションは、ユーザが様々な、有用な文書を作成することを可能にする。スプレッドシートアプリケーションは、ユーザがデータを入力し、操作し、編成することを可能にする。スライドプレゼンテーションアプリケーションは、テキスト、ピクチャ、データ、または他の有用なオブジェクトを含む様々なスライドプレゼンテーションをユーザが作成することを可能にする。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、そのようなアプリケーションによって作成された文書（たとえば、ワードプロセッシング文書、スプレッドシート、スライドプレゼンテーション文書）は、その文書のコンテキストによって必要とされる任意のメタデータのコンテンツを格納する／移送するための機構が限られている。たとえば、ワードプロセッシング文書の上で構築されたソリューション（ｓｏｌｕｔｉｏｎ）は、文書の様々な状態、たとえば以前のワークフロー承認状態（日付、時間、名前）、現在の承認状態、完成前の将来のワークフロー状態、文書の著者の名前および事務所住所、文書変更などについて説明するワークフローデータを格納することを必要とする可能性がある。この情報を格納するための選択肢は、主に、文書変数、または制限を有する既存のカスタムＯＬＥ（オブジェクトのリンクと埋込み）文書プロパティの使用に制限される。たとえば、階層データを格納することができない、キャラクタ長が制限される、などである。そのようなメソッドのためのプロパティは、単一のストア、たとえばＯＬＥプロパティストア内に格納され、これはプロパティが衝突する可能性を有することを意味する。さらに、そのような格納されたプロパティは、データ妥当性検証（ｄａｔａ  ｖａｌｉｄａｔｉｏｎ）を有していない。そのようなアプリケーションおよび関連文書のユーザが文書と共に任意のデータを格納することは困難であり、これが多数のユーザから共通に求められている。
【課題を解決するための手段】
【０００４】
この概要は、以下、詳細な説明でさらに述べられる概念の集まりを、簡潔な形態で紹介するために提供されている。この概要は、特許請求されている主題の重要な特徴または不可欠な特徴を識別することが意図されているものでも、特許請求されている主題の範囲を決定する上で助けとして使用されることが意図されているものでもない。
【０００５】
コンピュータによって生成された文書に関連付けられる任意のデータを格納し、関係付け、その使用を可能にするために、１つまたは複数のデータストアが、文書内の主プレゼンテーションストレージとは別々に維持される。文書メタデータなど、文書に関連付けられた情報を構造化するためのデータが、異なるデータ間の関係が維持されるデータストア内で維持される。データストアは、様々なアプリケーションがデータの１つまたは複数にアクセスし働きかけることができるように、データストア内の様々なデータにアプリケーションプログラミングインターフェース（ＡＰＩ）を公開（ｅｘｐｏｓｅ）する。
【０００６】
諸データは、拡張マークアップ言語（ＸＭＬ）などマークアップ言語に従って構造化することができる。ＸＭＬスキーマを各データに関連付けることができ、データストアは、所与のデータに関連付けられたＸＭＬスキーマに基づいて、データに適用されたＸＭＬ構造を妥当性検証することができる。文書が編集されている間に、ＸＭＬ形態にあるデータにプログラム的にアクセスすることができる。複数のクライアントアプリケーションが、同じ文書データにアクセスし編集することができ、所与のデータに対する、衝突する変更があれば、それが解決される。また、標準的なＸＭＬスキーマ（ＸＳＤ）を使用し、文書データに適用されたＸＭＬデータが有効であることを確実にするために、文書メタデータに関連付けられたいずれかのカスタムＸＭＬデータのコンテンツを定義することができる。
【発明を実施するための最良の形態】
【０００７】
次に、同様の符号が同様の要素を表す図面を参照して、本発明の様々な態様について述べる。具体的には、図１および対応する考察は、本発明の実施形態を実施することができる好適なコンピューティング環境を簡潔に、一般的に説明することが意図されている。
【０００８】
一般に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造、および特定のタスクを実行する、または特定の抽象データ型を実装する他のタイプの構造を含む。また、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサをベースとする、またはプログラム可能な家電、ミニコンピュータ、メインフレームコンピュータなどを含めて、他のコンピュータシステム構成を使用することもできる。通信ネットワークを介してリンクされた遠隔処理デバイスによってタスクが実行される分散コンピューティング環境をも使用することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルと遠隔双方のメモリ記憶装置内に位置する可能性がある。
【０００９】
図１を参照すると、本発明を実施するための１つの例示的なシステムが、コンピューティングデバイス１００など、コンピューティングデバイスを含んでいる。非常に基本的な構成では、コンピューティングデバイス１００は、典型的には、少なくとも１つの処理装置１０２と、システムメモリ１０４とを含む。コンピューティングデバイスの厳密な構成およびタイプに応じて、システムメモリ１０４は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリなど）、またはその２つの何らかの組合せとすることができる。システムメモリ１０４は、典型的には、オペレーティングシステム１０５、１つまたは複数のアプリケーション１０６を含み、プログラムデータ１０７を含むことができる。一実施形態では、アプリケーション１０６は、ワードプロセッサアプリケーション１２０を含むことができる。この基本構成は、図１に、破線１０８内の構成要素によって示される。
【００１０】
コンピューティングデバイス１００は、追加の特徴または機能を有することができる。たとえば、コンピューティングデバイス１００は、たとえば磁気ディスク、光ディスク、またはテープなど、追加のデータ記憶装置（取外し式および／または非取外し式）をも含むことができる。そのような追加のストレージは、図１に、取外し式ストレージ１０９および非取外し式ストレージ１１０によって示されている。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなど情報を記憶するための任意の方法または技術で実施される揮発性と不揮発性、取外し式と非取外し式の媒体が含まれる可能性がある。システムメモリ１０４、取外し式ストレージ１０９、非取外し式ストレージ１１０は、すべてコンピュータ記憶媒体の例である。コンピュータ記憶媒体には、それだけには限らないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気記憶デバイス、または、所望の情報を記憶するために使用することができ、コンピューティングデバイス１００によってアクセスすることができる任意の他の媒体が含まれる。そのようなどのコンピュータ記憶媒体をもデバイス１００の一部とすることができる。コンピューティングデバイス１００はまた、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなど、入力デバイス１１２を有することができる。ディスプレイ、スピーカ、プリンタなど、出力デバイス１１４もまた含むことができる。これらのデバイスはすべて当技術分野で周知であり、ここで詳しく論じる必要はない。
【００１１】
コンピューティングデバイス１００はまた、ネットワークを介してなど、他のコンピューティングデバイス１１８と通信することが可能になる通信接続１１６を含むことができる。通信接続１１６は、通信媒体の一例である。通信媒体は、典型的には、搬送波または他の移送機構など変調データ信号内のコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータによって例示することができ、任意の情報送達媒体を含む。「変調データ信号」という用語は、情報を信号に符号化するようにその特性の１つまたは複数が設定または変更された信号を意味する。限定ではなく例を挙げると、通信媒体は、有線ネットワークまたは直接配線接続など有線媒体と、音響、ＲＦ、赤外線および他の無線媒体など無線媒体とを含む。本明細書では、コンピュータ可読媒体という用語は、記憶媒体と通信媒体を共に含む。
【００１２】
いくつかのプログラムモジュールおよびデータファイルは、ワシントン州レドモンドのＭＩＣＲＯＳＯＦＴ  ＣｏｒｐｏｒａｔｉｏｎのＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムなど、ネットワーク化されたパーソナルコンピュータの動作を制御するのに適したオペレーティングシステム１０５を含めて、コンピューティングデバイス１００のシステムメモリ１０４内に記憶することができる。システムメモリ１０４はまた、ワードプロセッサアプリケーション１２０、および下記で述べられている他のアプリケーションなど、１つまたは複数のプログラムモジュールを記憶することができる。ワードプロセッサアプリケーション１２０は、電子文書を作成し、編集し、処理するための機能を提供するように動作する。
【００１３】
本発明の一実施形態によれば、ワードプロセッサアプリケーション１２０は、ＭＩＣＲＯＳＯＦＴ  ＣｏｒｐｏｒａｔｉｏｎのＷＯＲＤプログラムを含む。しかし、他の製造者のワードプロセッサアプリケーションプログラムを使用することができることを理解されたい。ワードプロセッシングアプリケーションの例示は、例としてのものにすぎず、文書を制作し、文書に働きかけることができる他のタイプのアプリケーションを限定するものではない。たとえば、スプレッドシートアプリケーションプログラム、データベースアプリケーションプログラム、スライドプレゼンテーションアプリケーションプログラム、描画またはコンピュータ支援アプリケーションプログラムなど、様々な形態のコンテンツ（たとえば、テキスト、画像、ピクチャなど）を処理することが可能な他のアプリケーションプログラム１０６も等しく適用可能である。様々な異なるタイプの文書を制作し、それに働きかけるアプリケーションプログラム１０６例には、ＭＩＣＲＯＳＯＦＴ  ＣｏｒｐｏｒａｔｉｏｎのＯＦＦＩＣＥが含まれる。
【００１４】
諸実施形態は、コンピュータプロセス、コンピューティングシステムとして、あるいは、コンピュータプログラム製品またはコンピュータ可読媒体など製造品として実施することができる。コンピュータプログラム製品は、コンピュータシステムによって可読な、また、コンピュータプロセスを実行するための命令のコンピュータプログラムを符号化するコンピュータ記憶媒体とすることができる。また、コンピュータプログラム製品は、コンピューティングシステムによって可読な、また、コンピュータプロセスを実行するための命令のコンピュータプログラムを符号化する、搬送波上の伝播信号とすることができる。
【００１５】
本明細書および特許請求の範囲全体にわたって、以下の用語は、その用語の状況によって別段示されない限り、本明細書に関連する意味をとる。
【００１６】
「データ」という用語は、語、文、段落など文書の表面レベルまたはプレゼンテーションレベルの情報、ならびに補足情報、たとえばワードプロセッシング文書と共に搬送され、その文書を参照し、その文書によって使用されるメタデータを指す可能性がある。この情報は、しばしば大規模なものであり、文書のプレゼンテーションレイヤ上で露出されない可能性が高い。
【００１７】
「プレゼンテーション」という用語は、文書がプリントされた場合現れることになるテキストおよびレイアウトなど、文書の可視部分を指す。
【００１８】
「タグ」という用語は、ＸＭＬ文書内で要素の境界を画する、文書内に挿入されたキャラクタを指す。各要素は、一般に２つのタグ、すなわち開始タグおよび終了タグを含む。空の要素（コンテンツなし）を有することが可能であり、その場合には、１つのタグが許される。
【００１９】
「マークアップ言語」または「ＭＬ」という用語は、文書の諸部がアプリケーションによってどのように解釈されるかを指定する、文書内の特別なコードのための言語を指す。ワードプロセッサファイルでは、マークアップ言語は、テキストがどのようにフォーマットされるか、またはレイアウトされるかを指定する。
【００２０】
「要素（ｅｌｅｍｅｎｔ）」という用語は、ＸＭＬ文書の基本単位を指す。要素は、ＸＭＬ文書に関して、属性、他の要素、テキスト、および他のコンテンツ領域を含むことができる。
【００２１】
「構成単位（ｂｕｉｌｄｉｎｇ  ｂｌｏｃｋ）」という用語は、ユーザによって入力された特定のタイプのコンテンツのためのコンテナとして働く、境界を画された、潜在的にラベルを付けられた、文書内の領域を指す。
【００２２】
「データバインディング、データマッピング、およびデータフィールド」という用語は、ある構成単位のコンテンツを格納すべき文書内に格納されたＸＭＬ  ＤＯＭへのＸＰａｔｈを決定する、その構成単位上のプロパティを指す。
【００２３】
タグ間のＸＭＬコンテンツは、その要素の「子」（または子孫）と見なされる。したがって、要素のコンテンツに埋め込まれた他の要素は、「子要素」または「子ノード」またはその要素と呼ばれる。要素のコンテンツに直接埋め込まれたテキストは、その要素の「子テキストノード」と見なされる。ある要素内の子要素とテキストは共に、その要素の「コンテンツ」を構成する。
【００２４】
「属性」という用語は、特定の値に設定され、要素に関連付けられた追加のプロパティを指す。要素には、なしを含めて、任意の数の属性設定を関連付けることができる。属性は、追加の要素を含まない、またはテキストノードとして処理される要素に、追加の情報を関連付けるために使用される。
【００２５】
「ＸＰａｔｈ」は、パターン式を使用し、ＸＭＬ文書内のノードを識別する演算子である。ＸＰａｔｈのパターンは、ＸＭＬ文書全体にわたる経路を説明する、スラッシュによって分離された子要素名のリストである。パターンは、経路に合致する要素を「選択」する。
【００２６】
「ＸＭＬデータストアまたはデータストア」という用語は、ワードプロセッサ文書、スプレッドシート文書、スライドプレゼンテーション文書など文書内のコンテナを指し、ファイルがオープンである間に、文書内に格納された（たとえば、ＸＭＬフォーマットにある）データを格納および修正するためのアクセスを実現する。ＸＭＬデータストアは、図２に関連して、下記でさらに定義される。
【００２７】
図２は、１つまたは複数のクライアントアプリケーションと、１つまたは複数のデータストアおよびデータストアのコンテンツとの関係を示すブロック図である。一般的に述べると、コンピュータによって生成された文書に関連付けられる任意のデータを格納し、関係付け、その使用を可能にするために、１つまたは複数のデータストアが、文書内の主プレゼンテーションストレージとは別々に維持される。文書メタデータなど、文書に関連付けられた情報を構造化するためのデータが、異なるデータ間の関係が維持されるデータストア内で維持される。データストアは、様々なアプリケーションがデータの１つまたは複数にアクセスし働きかけることができるように、データストア内の様々なデータにアプリケーションプログラミングインターフェース（ＡＰＩ）を公開する。本明細書では、「データコンシューマ」「アプリケーション」「プロセス」という用語は、文脈によって別段明らかに指示されない限り、相互交換可能に使用することができる。
【００２８】
諸データは、拡張マークアップ言語（ＸＭＬ）などマークアップ言語に従って構造化することができる。ＸＭＬスキーマを各データに関連付けることができ、データストアは、所与のデータに関連付けられたＸＭＬスキーマに基づいて、データに適用されたＸＭＬ構造を妥当性検証することができる。データストアは、拡張マークアップ言語（ＸＭＬ）に従って構造化された任意の数の任意のデータ項目、たとえばメタデータを容れることができる。したがって、文書ソリューションプロバイダは、所与の文書と共に、任意のメタデータをＸＭＬとして格納し、データが除去された、もしくはデータストアにロードされたとき、および／または文書がユーザによってオープン／編集／保存されたときなど、イベントが発生したときデータにアクセスする所与のソリューションによってその情報を処理させることができる。
【００２９】
また、文書が編集されている間に、ＸＭＬ形態にあるデータにプログラム的にアクセスすることができる。一実施形態によれば、文書がオープンである間に、データにアクセスし、プログラム的に修正することができる、ソリューション開発者によく知られている標準的な機構が提供される。このプログラム的なアクセスは、標準的なＸＭＬインターフェースに似ている。データに対するプログラム的なアクセスは、１つまたは複数の編集用クライアントアプリケーション（たとえば、文書編集または作成用アプリケーション、および／またはサードパーティのアプリケーションアドインソリューションなど）に対するアプリケーションプログラミングインターフェースを介して実現される。したがって、複数のクライアントアプリケーションが、同じ文書データにアクセスし編集することができ、所与のデータに対する、衝突する変更があれば、それが解決される。任意の所与の変更に対する「副作用（ｓｉｄｅ  ｅｆｆｅｃｔ）」を加えることができる（たとえば、会社名を「Ｍｉｃｒｏｓｏｆｔ」に設定したことに応答して、銘柄記号を「ＭＳＦＴ」に変更すること）。さらに、データに対する変更と、関連する副作用があればそれは、データストアによって「束ね」させることができ、その結果、１つまたは複数の変更を取り消すことにより、関連の変更すべてが覆される。これは、ユーザが、たとえばＵｎｄｏコマンドを押すことによって文書表面から元の変更の取消しを開始したときソリューションが変更すべてを覆していることを確実にするための、ソリューションそれ自体からの開発の負担を除去する上で助けになる。
【００３０】
標準的なＸＭＬスキーマ（ＸＳＤ）を使用し、文書データに適用されたＸＭＬデータが有効であることを確実にするために、文書メタデータに関連付けられたいずれかのカスタムＸＭＬデータのコンテンツを定義することができる。これらのスキーマは、文書内に格納されたＸＭＬデータの任意のインスタンスに添付することができ、データストアは、そのデータのＸＭＬ構造（すなわち、ＸＭＬタグのコンテンツではなくＸＭＬタグ）が無効になるであろうＸＭＬデータに対する任意の変更を許さないことになる。これは、ソリューション開発者が特定のＸＭＬメタデータを文書に添付することができることを確実にする、また、ＸＭＬデータを修正するためにどのデータコンシューマ（たとえば、アドイン）が使用されるかにかかわらず、そのデータが、関連付けられたスキーマに従って引き続き構造的に「正しい」ものとなることを確実にする助けとなる。
【００３１】
次に、図２を参照すると、文書データ２２０は、ＸＭＬ構造データと、文書の表面またはプレゼンテーションレベルのビューを表す、関連する文書データとを含む。たとえば、文書データ２２０は、ＸＭＬ構造（たとえば、ｈｅａｄｉｎｇタグ、ｂｏｄｙタグ、ｃｏｎｃｌｕｓｉｏｎタグ）と、ワードプロセッシング文書、スプレッドシート文書、スライドプレゼンテーション文書などの、関連する表面ビューデータ（たとえば、語、文、段落）とを含むことができる。
【００３２】
データストア２０８は、所与の文書に関連付けられた１つまたは複数のタイプのデータに関連付けられた１つまたは複数の構造化データを格納するための文書データリポジトリである。データストアが１つだけ示されているが、複数のデータストアを使用することができる。メタデータ１  ２２５（構造化データ項目）は、ＸＭＬ構造データと、文書に関連付けられた第１のメタデータのための、関連するデータとを含むことができる。たとえば、メタデータ１  ２２５は、文書の著者、文書作成日、文書の最後の変更／保存日などをリストするＸＭＬ構造データ（たとえば、日付タグ、名前タグなど）を含むことができる。メタデータ２  ２３０（構造化データ項目）は、ＸＭＬ構造データ（タグ）と、文書に関連付けられた第２のメタデータを表す、関連するデータとを含むことができる。メタデータ１およびメタデータ２は、例としてのものにすぎず、所与の文書に関連してデータストア２０８内で維持することができる様々な、いくつかの異なるタイプのデータを限定するものではないことを理解されたい。たとえば、本明細書で述べられているように、ソリューションプロバイダ、または文書データにアクセスすることができるユーザが望むなら、任意のデータを、１つまたは複数のソフトウェアアプリケーションによって構造化し、文書に追加することができる。
【００３３】
各データ２２５、２３０に適用された拡張マークアップ言語（ＸＭＬ）データに関連付けられた構文および妥当性検証規則を指示するために、任意選択で、スキーマファイル２４０、２４５が、データストア２０８内に格納された各データに添付されてもよい。ＸＭＬスキーマファイルは、ＸＭＬ環境内のデータを説明および妥当性検証するための方法を提供する。スキーマファイルは、要素および属性を含めてどのＸＭＬマークアップデータがＸＭＬ文書内のコンテンツを説明するために使用されるかについて述べ、スキーマファイルは、各要素がどこに許されるか、どのタイプのコンテンツが要素内で許されるか、またどの要素が他の要素内で現れることができるかを含めて、ＸＭＬマークアップ構文を定義する。スキーマファイルの使用により、文書（または、この場合には個々のデータ）が一貫した、予測可能な形で確実に構造化される。スキーマファイル２４０、２４５は、ユーザが作成することができ、概してＸＭＬなど関連するマークアップ言語によってサポートされる。
【００３４】
文書の体系化により、データストアは、データストアレベルで所与のスキーマファイルに違反する変更があればそれを拒絶することによって、文書の構造的な有効性を「保証」する能力を提供することができる。一実施形態によれば、データストア２０８は、関連付けられたスキーマファイルに反して所与のデータに追加されたＸＭＬ構造、または所与のデータに加えられた変更を妥当性検証するために、スキーマ妥当性検証モジュール２６０を使用する。たとえば、文書作成者または編集者が、所与のデータ、たとえばメタデータ１にＸＭＬ構造上の変更を加え、編集者が所与のＸＭＬタグを追加または除去した場合、データストア２０８は、スキーマ妥当性検証モジュールを使用し、変更の有効性を確保するように、関連付けられたスキーマファイルと突き合わせてＸＭＬ構造の変更を検査することになる。変更が有効でない場合、編集者に対してエラーが生成される可能性がある。わかるように、所与のデータに適用されたＸＭＬ構造のそのような制御により、クライアントおよびサードパーティアプリケーションが、関連するデータと対話することを可能にするのに特に重要な構造上の一貫性および予測可能性がもたらされる。
【００３５】
データストア２０８は、クライアントアプリケーション２０５（たとえば、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、スライドプレゼンテーションアプリケーションなど）、ならびにサードパーティアプリケーション２１０、２１５による、それぞれのアプリケーション２０５、２１０、２１５のオブジェクトモデル（ＯＭ）を介するアクセスを受けることができる１つまたは複数のアプリケーションプログラミングインターフェース（ＡＰＩ）２７０を提供する。これらのＡＰＩは、クライアントアプリケーションおよびサードパーティアプリケーションが任意の既存のＸＭＬファイルを所与の文書のデータストア２０８内にロードすることを可能にし、したがって、データが今やその文書の一部であり、（たとえば、オープン／編集／保存／名前変更などを介して）その寿命の間、またはそのデータがデータストアから削除されるまで、その文書内で移動することを確実にする。一実施形態によれば、データストア内のデータは、所与のデータ２２５、２３０のためのソースアプリケーションが閉じられている、あるいは他の形で使用可能でないときでさえ、そのＸＭＬフォーマットで使用可能である。すなわち、所与のデータ２２５、２３０は、ＡＰＩ２７０を介して、（ソースアプリケーション以外の）他のアプリケーションによるアクセスを受けることができる。下記で述べられているように、ＡＰＩはまた、クライアントおよびサードパーティアプリケーションが、データ項目２２５、２３０に適用されたＸＭＬマークアップデータに変更を加えることを可能にする。
【００３６】
ＸＭＬデータ２２５、２３０は、文書２２０と関連付けられるようにデータストア内にロードされた後で、開発者のＸＭＬプログラミング標準に関する既存の知識を利用するために既存のＸＭＬ編集用インターフェースと同様のメソッドを提供するように設計されたデータストアインターフェースを使用して、標準的なＸＭＬとして操作することができる。これにより、ユーザは、ある文書のためのデータストアに追加されたＸＭＬデータに対して、要素および属性を追加すること、要素および属性を除去すること、既存の要素／属性の値を変更すること、ならびに関連するＸＭＬツリーの任意の既存の部分の値を読み出すことなど、標準的なＸＭＬオペレーションを実行することができる。これらのＸＭＬの標準的なオペレーションを使用して、ソリューションは、データの長さ／サイズまたはデータの構造に対する先の制約を受けずに、構造化された複雑なメタデータを文書と共に格納することができ、これにより、従来のソリューションより著しく構造化されたソリューションのためにこのＸＭＬデータストアを使用することができる。たとえば、サードパーティアプリケーション２１５は、各文書についてデータストア２０８に追加されたメタデータ１  ２２５を読み出すことによって、文書の著者の名前および文書作成日をいくつかの文書から突き止め、抽出するように記述されてもよい。サードパーティアプリケーション例は、所与の組織によって作成された文書すべてについて文書の著者の名前および文書作成日のリストを作成するようにプログラムされたアプリケーションとすることができる。本発明の実施形態によれば、サードパーティアプリケーションは、所望のデータを効率的に突き止め、抽出するために、メタデータ１に適用されたＸＭＬ構造を使用することができる。たとえば、サードパーティアプリケーションは、<docauthor>および<doccreationdate>など、これらのタグに関連付けられたデータを得る、また使用するためのＸＭＬタグを突き止めるために、メタデータ１ファイルのＸＭＬ構造を構文解析するように記述されてもよい。前述のものは、１つまたは複数のアプリケーションが、文書に関連付けられる構造化データと、データストア２０８を介して対話することができる多数の方法の１つの例にすぎないことを理解されたい。
【００３７】
さらに、データストア２０８は、複数のアプリケーション２０５、２１０、２１５が個々のＸＭＬデータ２２０、２２５、２３０（ストア項目としても知られる）と共に機能することができるように、同じデータに対するいくつかのＡＰＩインターフェース２７０を提供する。たとえば、クライアントアプリケーション（たとえば、ワードプロセッシングアプリケーション）およびサードパーティアプリケーションソリューション（たとえば、上述のアプリケーション）など、いくつかのソリューションは、同じ組の文書プロパティ（たとえば、メタデータ２  ２３０ファイル内に含まれるプロパティ）と共に機能することができる。データストア２０８を使用して、これらのアプリケーションのそれぞれは、同じデータにアクセスする複数のデータコンシューマを有するという複雑さに対処することを必要とせずに、各アプリケーションがそれ自体のＯＭを介してデータと通信することができるように、それら自体のデータストアＡＰＩインターフェース２７０を介して所望のＸＭＬデータ２３０に対する別個のアクセス権を受け取る。
【００３８】
これらの複数の、データを消費するアプリケーション２０５、２１０、２１５が同じデータにアクセスすることを可能にするために、データストア２０８は、ＸＭＬデータの任意の部分が別のアプリケーションによって変更されたとき、これらのアプリケーションのそれぞれに通知し、その結果、所与のアプリケーションは（内部からそれ自体のプロセスに対して、また外部から同じデータに対する他の変更によって）その変更に応答することができる。１つのアプリケーションが所与のデータ項目に対する変更を要求したとき、その要求された変更に対してどのように応答するか、または応答するかどうか他のアプリケーションが判断することができるように、その要求が自動的に他のアプリケーションすべてに送られる。一実施形態によれば、これは、所与のアプリケーションソリューション／プログラムがそれ自体の論理に関係するメッセージを受け取るだけとなるように、そのアプリケーションがインターフェースを有するＸＭＬデータの任意の一部を「聴取」することを各アプリケーションが登録できるようにすることによって行われる。たとえば、あるタイプのアプリケーション２１０は、詳細なビジネス論理機能をサードパーティソリューションに提供するために、所与のＸＭＬデータに加えられる変更すべてを聴取することを登録したいと望む可能性がある一方、別のタイプのアプリケーション２１５は、その論理が、そのＸＭＬデータのどの他の部分に対する変更についても関心がないため、同じデータ内の１つまたは２つの特定のＸＭＬ要素に対する変更を聴取したいと望むにすぎない可能性がある。
【００３９】
この実施形態によれば、複数のアプリケーション２０５、２１０、２１５は、同じ文書データにアクセスし編集することができ、所与のデータに対する、衝突する変更があれば、それが解決される。たとえば、あるアプリケーションによる１つの変更が別のアプリケーションによる副作用変更を引き起こすとき、任意の所与の変更に対する「副作用」を加えることができる。たとえば、第１のアプリケーション２１０は、所与の文書に関係する会社の銘柄記号のリストを編纂するために、会社名を、対応する銘柄記号が使用可能であればそれに変換するように、所与の文書に関連付けられた１つまたは複数のデータ項目２２５、２３０からこれらの会社名を抽出するタスクを課される可能性がある。第２のアプリケーション２１５が、たとえば会社名を「会社ＡＢＣ」から会社ＸＹＺ」に変更して、所与のメタデータ内の所与の会社名を追加または変更させた場合、第１のアプリケーションは、この変更を聴取し、「会社ＡＢＣ」ではなく「会社ＸＹＺ」用の銘柄記号を含むように、その銘柄記号のリストを自動的に更新することができる。さらに、そのような変更と、関連する副作用があればそれは、データストア２０８によって束ねさせることができ、その結果、１つまたは複数の変更を取り消すことにより、関連の変更すべてが覆される。
【００４０】
図３は、内部データコンシューマと外部データコンシューマの間での、ＸＭＬデータストアとの対話を示すシステム図を示す。図では、システム３００はデータストア３０２を含み、データストア３０２は、プレゼンテーションレイヤ３０４と、それぞれがエラーストアおよびアンドゥストアを含むＸＭＬストア１〜Ｎ（３０６）と、グローバル変更ストア３０８と、任意選択のグローバルアンドゥストア３１０と、内部データコンシューマ１〜Ｎ  ３１４に結合される内部ブローカ３１２と、外部データコンシューマ１〜Ｎ  ３１８に結合される外部ブローカ３１６とを含む。
【００４１】
ＸＭＬデータストア３０６を使用して、文書は、（それぞれが標準的なＸＭＬ構文に準拠する限り）任意の数の任意のデータ項目を容れる能力を有する。任意のメタデータが文書内にＸＭＬとして格納されてもよく、その情報は、文書がユーザによってオープン／編集／保存されたとき、自動的に往復させることができる。
【００４２】
上述のように、このデータに対するプログラム的なアクセスは、文書が編集されている間に使用することができるＡＰＩを介して実現され、文書がオープンである間に、この情報にアクセスし、プログラム的に修正することができる、ソリューション開発者によく知られている標準的な機構を提供する。一実施形態によれば、このプログラム的なアクセスは、標準的なＸＭＬインターフェースに似ているように設計される。このＡＰＩを使用すると、ワードプロセッシングアプリケーションなどアプリケーションが動作している間にデータを追加／除去することができ、データをストア項目（データストア内の一部）内に投入することができ、データを標準的なＸＭＬコンストラクトを使用して操作することができ、スキーマをデータストア内の任意のＸＭＬデータに関連付けることができ、スキーマを、データストア項目に関連付けられた後で追加／除去／変更することができ、ＸＭＬ変更を、任意の聴取中のクライアントに対してイベント化することができる。図では、このＡＰＩは、外部データコンシューマ３１８のためのインターフェースを提供する外部ブローカ３１６と、データストア３０２と対話する任意の内部データコンシューマ３１４のためのインターフェースを提供する内部ブローカ３１２とを備える。
【００４３】
データストア３０２に対する操作は、実時間で行われてもよい。上記で論じられているように、データストア３０６は、１つまたは複数のタイプのデータを容れることができる。たとえば、ある会社は、単一のデータストア内に格納したいと望む、異なるタイプのデータすべてを格納するために使用している１つのデータストアを有する可能性があり、一方、別の会社は、異なるデータストアに跨ってデータ異なるタイプのデータを格納したいと望む可能性がある。
【００４４】
データコンシューマ３１８は、データストア３０６に関するアクションに関係するイベントに備えて登録することができる。たとえば、データコンシューマは、任意のタイプの変更が１つまたは複数のデータストアに加えられたとき、イベントを受け取ることを登録することができる。別のデータコンシューマは、データストア内のある種の要素または要素の組に対して行われた変更に備えて登録することができる。共通のイベントには、データストアをロードすること、データストアに追加すること、およびデータストアから削除することが含まれる。イベントが発生したとき、登録されている各データコンシューマは、その変更に反応することができ、一方、データストアの状態は、一貫して維持される。データコンシューマは、たびたび、変更が加えられたときどんなアクションも実行しないことになる。他の時点では、データコンシューマは、イベントに応答して何らかのアクションを実行することになる。たとえば、データコンシューマは、タイトル変更に応答して、文書内のヘッダを更新するなど、変更に応答してデータストアにいくつかの他の変更を加えることができる。データコンシューマはまた、文書に影響を及ぼさないいくつかの他のオペレーションを実行することができる。たとえば、ストックチッカ記号（ｓｔｏｃｋ  ｔｉｃｋｅｒ  ｓｙｍｂｏｌ）が挿入された場合、データコンシューマは、その銘柄記号に関連付けられるデータを取り出すことができるが、取り出されたデータのすべてが文書内において、プレゼンテーションレイヤで表示されるわけではない可能性がある。データコンシューマはまた、変更を拒絶することができる。たとえば、データコンシューマ１が、受け入れられない変更を受けた場合、そのデータコンシューマは、ブローカにフラグを返し、その変更が受け入れられないことを示すことができる。変更が受け入れられないときはいつでも、その変更が決して行われないように、その変更が任意の副作用と共に逆戻しされる。各ＸＭＬストア３０６は、そのアンドゥストアを使用し、加えた変更を取り消すことができる。別法として、グローバルアンドゥストア３１０を使用し、データストアに跨って加えられた変更を取り消すことができる。文書プロパティに何が行われるかに関心がある３つのデータコンシューマがあり、その結果、これらのデータコンシューマのそれぞれが、そのプロパティの変更に関係するイベントを受け取ることを登録していると想像してみる。変更が加えられたとき、データストアは、登録している各データコンシューマを決定し、所定の順序でそれらのそれぞれに変更を通知する。各データコンシューマは、順に、変更に応答して何らかのアクションを実行することができる。その変更、またはその変更の結果として登録されているデータコンシューマによって加えられた変更のいずれかが、データコンシューマのいずれか１つによって受け入れられない場合、最初の変更に関係する変更のすべてが取り消される。
【００４５】
外部ブローカアプリケーションプログラミングインターフェースレイヤ３１６は、外部データコンシューマ３１８によるデータストア３０２に対するアクセスを実現し、サードパーティクライアントが、そのアプリケーションに関連する内部データコンシューマがデータストアと対話するように、データストア３０２と対話することを可能にする。データストア３０２内のＸＭＬデータストア３０６のそれぞれは、識別するために一意のＩＤを備える。これは、ＸＭＬデータストア３０６を突き止める際に助けとなる。
【００４６】
任意の点で、データコンシューマは、データストア内のデータを妥当性検証するために使用されるスキーマを追加することができる。今、ふと現れてデータを変更しようと試みる他のサードパーティコードがあれば、データストアが最初に行うことは、提供されているスキーマに対して変更が道理にかなっているかどうか判定することである。スキーマが添付された後で、ブローカは、妥当性検証用オブジェクトになる。
【００４７】
データストアはまた、一度に複数の要素を受け取ることができる。データ（ＸＭＬ）を１つの特定のストリームとして提供することにより、いくつかの状況においてスキーマを満たす助けとなる可能性がある。たとえば、添付されたスキーマには、株式データが存在する場合少なくとも２つの会社を有していなければならないと述べられているとする。株式データが１つずつ追加されるならば、有効とされないことになろう。
【００４８】
データを妥当性検証するために、単一のパス（ｐａｓｓ）が使用される。データストアに変更が加えられる可能性がある２つのパスを作成するのではなく、データがデータストアに引き渡される前に妥当性検証が実行される。これは、データコンシューマがデータストアに誤りを導入するのを防止する助けとなる。
【００４９】
図４および図５は、データストアに関係するイベントを処理するためのプロセスを示す。本明細書で提示されているルーチンの考察を読むとき、様々な実施形態の論理演算が、（１）コンピュータによって実施される動作のシーケンス、またはコンピューティングシステム上で動作するプログラムモジュールとして、および／または（２）コンピューティングシステム内の、相互接続された機械論理回路または回路モジュールとして実装されることを理解されたい。実装は、本発明を実施するコンピューティングシステムの性能要件による選択の問題である。したがって、例示されている、また本明細書に述べられている実施形態を構成する論理演算は、オペレーション、構造デバイス（ｓｔｒｕｃｔｕｒａｌ  ｄｅｖｉｃｅ）、動作（ａｃｔ）、またはモジュールと、様々に称される。これらのオペレーション、構造デバイス、動作、およびモジュールは、ソフトウェア、ファームウェア、専用デジタル論理、およびそれらの任意の組合せで実装することができる。
【００５０】
図４は、データストアに関連するイベントを処理するためのプロセスを示す。一般に、データストアがデータコンシューマから変更要求を受け取ったとき、その変更は、登録されているデータコンシューマのすべてに送られ、それらのデータコンシューマがその変更を拒絶することを、またはその変更の結果として副作用（他のＸＭＬ変更）を要求することを可能にする。
【００５１】
開始オペレーションの後で、プロセスはオペレーション４１０に進み、データコンシューマが、受け取ることに関心がある任意のイベントに備えて登録する。それらのイベントは、データをデータストアに追加すること、データをデータストアから除去すること、データストア内のデータに変更を加えることなどに関する可能性がある。イベントは、グローバル変更、またはデータストアのうちの１つまたは複数内に格納される要素に対する特定の変更に結びつけられてもよい。たとえば、あるデータコンシューマは、任意の変更がいつ加えられたか知りたいと望む可能性があり、一方、別のクライアントは、データストア内の１つの特定の値に対する変更に関心があるにすぎない可能性がある。
【００５２】
判断オペレーション４２０に移動して、イベントが発生したかどうかについて判定される。イベントは、データストアに対する変更に関する。たとえば、上記で論じたように、イベントは、追加、除去、またはデータストアに対する何らかの他の変更を加えることを含む可能性がある。たとえば、変更は、ノードをデータストアに追加することである可能性がある。イベントが発生しなかったとき、プロセスは判断オペレーション４２０に戻る。イベントが発生したとき、プロセスはオペレーション４３０に進む。
【００５３】
オペレーション４３０では、変更が、その変更に備えて登録しているデータコンシューマのそれぞれに中継される。一実施形態では、各データコンシューマが所定の順序で通知を受ける。たとえば、その順序は、データコンシューマの登録の順序に基づくものとすることができる。
【００５４】
オペレーション４４０に移行して、イベント通知を受け取ったデータコンシューマのそれぞれから応答が得られる。クライアントのそれぞれは、変更を受け入れる、または拒絶することができる。その応答により、変更がデータストアに引き渡されることになるか否か判定される。
【００５５】
判断オペレーション４５０に移動して、データコンシューマのいずれかがデータストアに対する変更を拒絶したかどうかについて判定される。変更がデータコンシューマのいずれかによって拒絶されたとき、プロセスはブロック４６０に移動し、その変更に応答して加えられたどの変更も、変更が行われなかったかのように逆戻しされる。
【００５６】
通知を受けたクライアントのすべてが変更を受け入れたとき、プロセスはオペレーション４７０に進み、任意選択で変更が妥当性検証され、次いで、プロセスはオペレーション４８０に進み、変更が適切なデータストアに引き渡される。
【００５７】
次いで、変更を開始した元のデータコンシューマは、変更が受け入れられた通知を受け取る（オペレーション４９０）。次いで、プロセスは終了ブロックに移動し、他のアクションの処理に戻る。
【００５８】
図５は、副作用を含むイベントを処理するためのプロセスを示す。一般に、データストアがデータコンシューマから変更要求を受け取ったとき、その変更は、登録されているクライアントのすべてに送られ、それらのクライアントがその変更を拒絶することを、またはその変更の結果として副作用（他のＸＭＬ変更）を要求することを可能にする。たとえば、クライアントは、データストア内の１つの項目に対する変更について通知を受ける可能性があり、その変更の結果として、データコンシューマは、データストアに別の変更を加える。副作用として変更が要求されたときには、プロセスが、図４に示されているプロセスとはわずかに異なる。
【００５９】
開始オペレーションの後で、プロセスはオペレーション５１０に進み、現在受け入れられつつある、または拒絶されつつある変更の結果として、クライアントがデータストアに対する副作用変更を開始する。
【００６０】
オペレーション５２０に移行して、この副作用変更は待ち行列に入れられるが、実行されない。換言すれば、副作用変更は、データストア内で直ちに実行されはしない。このことに基づいて、イベントの代替形態は、以下を含む。
【００６１】
【表１】
2009508228.tif 000003
【００６２】
判断オペレーション５３０に移動して、データコンシューマのいずれかがデータストアに対する元の変更を拒絶したかどうかについて判定される。
【００６３】
変更がデータコンシューマのいずれかによって拒絶されたとき、プロセスはブロック５４０に移動し、その変更に応答して加えられたどの変更も、また待ち行列に入れられているどの副作用変更も、変更が行われなかったかのように逆戻しされる。
【００６４】
クライアントが元の変更を受け入れたとき、プロセスはオペレーション５５０に進み、任意選択で変更が妥当性検証され、次いで、プロセスはオペレーション５６０に進み、元の変更が適切なデータストアに引き渡される。
【００６５】
次いで、プロセスはオペレーション５７０に進み、副作用変更が、データストア内で一度に１つ実行される。次いで、各副作用変更は、登録されているクライアントのいずれかによって受け入れられる、または拒絶される可能性がある。副作用変更のいずれかが拒絶されたとき、加えられた変更のすべてが、変更のどれも行われなかったかのように逆戻しされる。
【００６６】
次いで、プロセスは終了ブロックに移動し、他のアクションの処理に戻る。
【００６７】
以下は、データストアＯＭを介して公開される共通機能のいくつかを示すコードセグメント例である。
【００６８】
最初の例は、ストリームをデータストアに追加することを示す。
【００６９】
【表２】
2009508228.tif 000004
【００７０】
第２の例は、データストアを突き止めることを示す。
【００７１】
【表３】
2009508228.tif 000005
【００７２】
第３の例は、サブツリーをデータストアに追加することを示す。
【００７３】
【表４】
2009508228.tif 000006
【００７４】
一実施形態によれば、以下は、このＡＰＩに関連する例示的な機能である。
【００７５】
Events on CustomXMLNode
イベントは、CustomXMLNode上で、ならびに文書レベルだけで発生することができる。
【００７６】
【表５】
2009508228.tif 000007
【００７７】
パラメータ：NewNode：CustomXMLNodeにちょうど追加されたノードに対応するCustomXMLNodeオブジェクト。注：このノードは、（サブツリーが文書にちょうど追加された場合）子を有することができる。InUndoRedo：ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
【００７８】
このイベントは、ＸＭＬノードが現在の文書に追加されようとするときいつでも起こる。この追加オペレーションが、ＸＭＬ文書のサブツリーがCustomXMLNode内に追加されることを含む場合、このイベントは、その変更における最高位のノードについて１回起こされる。このイベントは、データストアにメッセージされる各変更について１回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。
【００７９】
【表６】
2009508228.tif 000008
【００８０】
パラメータ：OldNode：CustomXMLPartからちょうど除去されたノードに対応するCustomXMLNodeオブジェクト。注１：このノードは、（サブツリーが文書から除去されつつある場合）子を有することができる。注２：このノードは、クエリをノードから下に行うことができるが上がることができず、単独で存在するように見える点で、「切断された」ノードとなる（すなわち、同じOwnerStreamを有する文書要素である）。OldParentNode：OldNodeの以前の親ノードに対応するCustomXMLNodeオブジェクト。OldNextSibling：OldNodeの以前の隣の兄弟に対応するCustomXMLNodeオブジェクト。InUndoRedo：ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
【００８１】
このイベントは、ＸＭＬノードがデータストア内の現在の項目から削除されるときいつでも起こる。この削除オペレーションが、CustomXMLPart内のＸＭＬ文書のサブツリーを含む場合、このイベントをその変更における最高位のノードについて１回起こす。このイベントは、データストアにメッセージされる各変更について１回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。
【００８２】
【表７】
2009508228.tif 000009
【００８３】
パラメータ：OldNode：CustomXMLPartからちょうど除去されたノードに対応するCustomXMLNodeオブジェクト。注１：このノードは、（サブツリーが文書から除去されつつある場合）子を有することができる。注２：このノードは、クエリをノードから下に行うことができるが上がることができず、単独で存在するように見える点で、「切断された」ノードとなる（すなわち、同じOwnerStreamを有する文書要素である）。NewNode：CustomXMLPartにちょうど追加されたノードに対応するCustomXMLNodeオブジェクト。注：このノードは、（サブツリーが文書にちょうど追加された場合）子を有することができる。InUndoRedo：ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
【００８４】
このイベントは、ＸＭＬノードがデータストア内で置換されるときいつでも起こる。この置換オペレーションが、CustomXMLPart内のＸＭＬ文書のサブツリーを含む場合、このイベントをその変更における最高位のノードについて１回起こす。このイベントは、データストアにメッセージされる各変更について１回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。
【００８５】
CustomXMLParts()：ＯＬＥ文書プロパティおよびＷＳＳプロパティストリームを含めて、ファイル内で使用可能なデータストア項目すべてのコレクションを指す。
【００８６】
CustomXMLPrefixMappings：現在の部分のためのプレフィックスマッピングのすべてを表すオブジェクト。
【００８７】
【表８】
2009508228.tif 000010
【００８８】
パラメータ：Prefix：プレフィックスマッピングリストに追加するためのプレフィックスを表す文字列型。NamespaceURI：新たに追加されたプレフィックスに割り当てるための名前空間を表す文字列型。
【００８９】
この項目をクエリするとき使用するためにカスタム名前空間／プレフィックスマッピングを開発者が追加することを可能にする。プレフィックスがマネージャ内にすでに存在する場合、これにより、そのプレフィックスがデータストアによって内部で追加／使用されるものであるときを除いて、そのプレフィックスの意味が上書きされ、次いで「このプレフィックスはすでに使用されており、修正することができません」というエラーが返されることになる。
【００９０】
Count As Long：コレクション内のプレフィックスマッピングの数を返す。
【００９１】
【表９】
2009508228.tif 000011
【００９２】
パラメータ：Index：コレクション内の所望のスキーマのインデックスを表す長整数型。
【００９３】
要求されたCustomXMLPrefixMappingをコレクションから返す。このオブジェクトのデフォルト数。
【００９４】
【表１０】
2009508228.tif 000012
【００９５】
パラメータ：Prefix：プレフィックスマッピングリスト内のプレフィックスを表す文字列型。開発者が、指定されたプレフィックスに対応する名前空間を得ることを可能にする。名前空間が、要求されたプレフィックスに割り当てられていない場合、“”を返す。
【００９６】
【表１１】
2009508228.tif 000013
【００９７】
パラメータ：NamespaceURI：プレフィックスマッピングリスト内の名前空間を表す文字列型。
【００９８】
開発者が、指定された名前空間に対応するプレフィックスを得ることを可能にする。プレフィックスが、要求された名前空間に割り当てられていない場合、“”を返す。名前空間内に指定された複数のプレフィックスがある場合、マネージャは、供給された名前空間に合致する最初のものを返す。
【００９９】
CustomXMLPrefixMapping：プレフィックスマッピングを表すオブジェクト。
【０１００】
Prefix As String：このプレフィックスマッピングのためのプレフィックスを返す。
【０１０１】
NamespaceURI As String：このプレフィックスマッピングのための名前空間を返す。
【０１０２】
CustomXMLSchema：スキーマコレクションの一部であるスキーマを表すオブジェクト。
【０１０３】
Delete As Void：このスキーマをスキーマコレクションから削除する。すでに妥当性検証されている、またはストリーム（何らかのライブコレクション）に添付されているコレクション内のスキーマに対してこれが行われた場合には、「スキーマコレクションが現在使用中であるため、このスキーマは、削除できません」というエラーメッセージと共に失敗となる。
【０１０４】
Location As String：ユーザの機械上のこのスキーマのロケーションを表す文字列を返す。
【０１０５】
NamespaceURI As String：このスキーマのターゲット名前空間を返し、ＸＳＤによって何も指定されていない場合、“”を返す。
【０１０６】
Reload As Void：このスキーマをディスクから再ロードし、これは、（ＳＬが変更されている場合）そのロケーションを更新し、依然として有効なスキーマであることを確実にするために、ディスク上のこのスキーマのコピーを手直しすることになる。すでに妥当性検証されている、またはストリーム（何らかのライブコレクション）に結びつけられているコレクション内のスキーマに対してこれが行われた場合には、「スキーマコレクションが現在使用中であるため、このスキーマは、再ロードできません」というエラーメッセージと共に失敗となる。
【０１０７】
CustomXMLSchemaCollection()：（ストリームに添付されている／されることになる）スキーマのコレクションを表すオブジェクト。
【０１０８】
【表１２】
2009508228.tif 000014
【０１０９】
パラメータ：NamespaceURI：コレクションに追加しようとするスキーマの名前空間を表す文字列型。そのスキーマがスキーマライブラリ（Ｓｃｈｅｍａ  Ｌｉｂｒａｒｙ）内に存在する場合、それを取り出す。Alias：コレクションに追加しようとするスキーマの別名を表す文字列型。その別名がＳＬ内に存在する場合、この引数を使用して見出す。FileName：スキーマを見出すことができるディスク上のロケーションを表す文字列型。このパラメータが指定されている場合、スキーマをコレクションに追加するだけでなく、ＳＬにも追加する。InstallForAllUsers：スキーマをスキーマライブラリに追加する場合に、ＳＬキーを（全ユーザのための）ＨＫＬＭに書き込むべきか、それとも（現在のユーザだけのための）ＨＫＣＵに書き込むべきかを表すブール型。デフォルトは偽（ＨＫＣＵに書き込む）。
【０１１０】
このメソッドは、開発者が、１つまたは複数のスキーマを、データストア内のストリームに追加しようとするスキーマコレクションに、ならびにスキーマライブラリに追加することを可能にする。以下のパラメータの組を用いて呼び出すことができる（衝突の場合には、パラメータを以下の順序で使用しようと試みる）。すなわち、[NamespaceURI],[Alias],FileName,[InstallForAllUsers]（その名前空間についてスキーマが存在しない場合、スキーマをスキーマライブラリに追加する）。NamespaceURIのみ（スキーマライブラリからＸＳＤをルックアップする）。Aliasのみ（スキーマライブラリからＸＳＤをルックアップする）。
【０１１１】
【表１３】
2009508228.tif 000015
【０１１２】
パラメータ：SchemaCollection：現在のコレクション内にインポートしようとするスキーマのコレクションを表すCustomXMLSchemas()オブジェクト。
【０１１３】
すでに存在するコレクションを現在のコレクションに追加する。インポート中に名前空間同士が衝突した場合（たとえば、a.xsdがすでに「fooNamespace」にリンクされているが、入来コレクションが、同じ名前空間についてb.xsdを有する場合）、入来コレクションが優勢になる。
【０１１４】
Count As Long：コレクション内のスキーマの数を返す。
【０１１５】
【表１４】
2009508228.tif 000016
【０１１６】
パラメータ：Index：コレクション内の所望の項目を示すバリアント型。所望のスキーマのターゲット名前空間を表す文字列型、またはコレクション内の所望のスキーマのインデックスを表す長整数型のどちらかとなる可能性がある。
【０１１７】
要求されたCustomXMLSchemaをコレクションから返す。このオブジェクトのデフォルトメンバ。
【０１１８】
【表１５】
2009508228.tif 000017
【０１１９】
パラメータ：Index：コレクション内のスキーマのインデックスを表す長整数型。
【０１２０】
スキーマコレクションの指定されたメンバのターゲット名前空間を返す。
【０１２１】
Validate As Boolean：コレクション内のスキーマが有効か否かを表すブール型を返す。また、これは、インクルード（Ｉｎｃｌｕｄｅ）がコレクション内の各スキーマについてトラバースされ、それらを要求したスキーマに追加するときである。
【０１２２】
CustomXMLParts()：１組のCustomXMLPartオブジェクトを表すコレクション。
【０１２３】
【表１６】
2009508228.tif 000018
【０１２４】
パラメータ：XML：新たに作成されたCustomXMLPartに追加するためのＸＭＬを表す、任意選択の文字列型。SchemaCollection：このストリームを妥当性検証するために使用しようとするスキーマの組を表す、任意選択のCustomDataSchemaCollection()オブジェクト。
【０１２５】
ユーザが、新しいCustomXMLPartをファイルに追加することを可能にする。XMLパラメータ内のＸＭＬが適格でない場合、失敗となり、「コンテンツは、このストリームに追加するためには、有効、適格なＸＭＬでなければなりません」というエラーが出る。ユーザがSchemaCollectionを提供した場合、（まだ妥当性検証されていない場合）それを妥当性検証する。受け取られたＭＳＸＭＬ構文解析エラーがあれば、それをＯＭクライアントに返し、ストリームに追加することが失敗となる。ＸＭＬパラメータをＤＯＭ内にロードすることができるかどうか検査する。できない場合、失敗となり、「コンテンツは、このストリームに追加するためには、有効、適格なＸＭＬでなければなりません」というエラーが出る。スキーマコレクションをＤＯＭに添付し、インスタンス文書を妥当性検証しようと試みる。妥当性検証されない場合、失敗となり、受け取られたＸＭＬ構文解析エラーをＯＭクライアントに返し、ストリームをコレクションに追加しない。
【０１２６】
ユーザがSchemaCollectionを提供しない場合、ＸＭＬパラメータをＤＯＭ内にロードすることができるかどうか検査する。できない場合、失敗となり、「コンテンツは、このストリームに追加するためには、有効、適格なＸＭＬでなければなりません」というエラーが出る。ＸＭＬファイル内で参照された名前空間のリストを調べる。これらのスキーマをＳＬから見出し、それらについてスキーマコレクションを推論する。得られたスキーマコレクションを妥当性検証しようと試みる。妥当性検証されない場合、なおストリームをコレクションに追加するが、どのスキーマコレクションにも関連付けられず、したがって有効にされない。スキーマコレクションをＤＯＭに添付し、インスタンス文書を妥当性検証しようと試みる。妥当性検証されない場合、失敗となり、受け取られたＸＭＬ構文解析エラーをＯＭクライアントに返し、ストリームをコレクションに追加しない。妥当性検証されない場合、なおストリームをコレクションに追加するが、どのスキーマコレクションにも関連付けられず、したがって有効にされない。空のSchemaCollectionを提供することは、「このストリームを決して妥当性検証しない」ことを表すためにとられる明示的なアクションとなる。
【０１２７】
Count As Long：コレクション内のカスタムデータストリームの数を返す。
【０１２８】
【表１７】
2009508228.tif 000019
【０１２９】
パラメータ：Index：以下の２つのタイプのうちの１つ、すなわち、コレクション内の所望のCustomXMLPartのインデックスを表す長整数型、または、コレクション内の所望のCustomXMLPartのルート名前空間を表す文字列型とすることができるバリアント型。複数の部分がこのルート名前空間に合致した場合、インデックス順で最初の合致したものが返されることになる。
【０１３０】
これはCustomXMLPartsオブジェクトのデフォルトメンバであり、要求されたオブジェクトに対応するCustomXMLPartオブジェクトを返す。
【０１３１】
【表１８】
2009508228.tif 000020
【０１３２】
パラメータ：ID：コレクションから返されるべきデータストア項目用のＩＤを含む文字列型。
【０１３３】
開発者が、その特定の項目を、そのＩＤを使用してデータストアから入手する（ｇｒａｂ）ことを可能にする。このＩＤを有するストア項目が存在しない場合、Nothingを返す。
【０１３４】
【表１９】
2009508228.tif 000021
【０１３５】
パラメータ：NamespaceURI：データストアのコレクションからの所望の項目のルート名前空間を表す文字列型。
【０１３６】
要求されたエントリにルート名前空間が合致するデータストア項目のすべてを返す。このルート名前空間を有するストリームが存在しない場合、空のCustomXMLParts()コレクションを返す。
【０１３７】
【表２０】
2009508228.tif 000022
【０１３８】
パラメータ：NewStream：ちょうど追加されたストリームを含むCustomXMLPartオブジェクト。
【０１３９】
このイベントは、新しいストリームがデータストアに追加されるときいつでも起こる。複数のストリームが追加される場合、このイベントは、各新しいストリームについて１回起こる。ストリームが（適切な.Addメソッドを使用して）ＸＭＬコンテンツと共に追加された場合には、このイベントは、その項目がこのコンテンツで占有されるまで起こらないであろう。
【０１４０】
【表２１】
2009508228.tif 000023
【０１４１】
パラメータ：OldStream：データストアから削除しようとするストリームを含むCustomXMLPartオブジェクト。
【０１４２】
このイベントは、ストリームがデータストアから除去されるときいつでも起こる。複数のストリームが削除される場合、このイベントは、削除された各ストリームについて１回起こる。また、このストリームを「削除予定」としてフラグし、その結果、それに対する読出し専用オペレーション（たとえば、ノードに対するクエリ、値の検査など）は有効であるが、書込みオペレーションは、「このオペレーションは、削除しようとするストリームに対して実行することができません」というエラーメッセージと共に失敗となる。
【０１４３】
CustomXMLPart：データストア内の単一のＸＭＬストリームを表すオブジェクト。
【０１４４】
【表２２】
2009508228.tif 000024
【０１４５】
パラメータ：Name：ＸＭＬ  ＤＯＭに追加しようとするノードのベース名を表す文字列型。Namespace：ＸＭＬ  ＤＯＭに追加しようとするノードの名前空間を表す、任意選択の文字列型。msoCustomXMLNodeElementまたはmsoCustomXMLNodeAttributeタイプのノードを追加するために必要とされ、そうでない場合には無視される。Parent：このノードをその下に追加すべきノードを表すCustomXMLNode。属性を追加する場合、その属性を追加すべき要素を示す。NextSibling：新しいノードの隣の兄弟になるべきノードを表す、任意選択のCustomXMLNode。指定されない場合、そのノードは、親ノードの子の端部に追加される。msoXMLNodeAttributeタイプの追加について無視される。NextSiblingが親の子でない場合、「このノードは、隣の兄弟ノードが親ノードの子でないため、追加できません」というエラーを返す。NodeType：作成するノードのタイプを指定する、任意選択のmsoCustomXMLNodeType。指定されない場合には、msoCustomXMLNodeElementと仮定される。NodeValue：テキストを許す諸ノードについてノードの値を設定するために使用される、任意選択の文字列型。ノードがテキストを許さない場合、このパラメータは無視される。
【０１４６】
ＸＭＬノードをデータストア項目に追加するためのジェネリックメソッド。親が必要とされ、NodeTypeのデフォルトはmsoXMLNodeElementである。行われる追加が構造的に無効となる場合、「このオペレーションは、構造的に無効なデータストリームを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。名前空間がスキーマ参照コレクション内にない場合、失敗となり、「この要素を追加するためには、最初にそのスキーマをデータストリームに添付しなければなりません」というエラーメッセージを提供する。
【０１４７】
DocumentElement As CustomXMLNode
ストリームのルート要素を得る。ストリームが空である場合、Nothingを返す。
【０１４８】
Delete As Void：現在のCustomXMLPartをデータストアから削除する。ユーザがコアプロパティ部を削除しようと試みた場合、「このカスタムＸＭＬ部分は、Ｏｆｆｉｃｅが適正に機能するために必要とされ、削除することができません」と共に失敗となる。
【０１４９】
ID As String：現在のCustomXMLPartに割り当てられたＧＵＩＤを含む文字列を返す。
【０１５０】
【表２３】
2009508228.tif 000025
【０１５１】
パラメータ：FilePath：このCustomXMLPartのためのＸＭＬをそこからロードすべきユーザの機械（またはネットワークなど）上のファイルに対応する文字列型オブジェクト。
【０１５２】
テンプレート著者が、その機械上の先に存在するファイルからCustomXMLPartを投入することを可能にする。ロードに成功した場合、真を返し、成功しなかった場合（構造エンフォースメントがオンであり、ＸＭＬが構造的に無効である場合、またはＸＭＬが有効および／または適格でなかった場合を含む）、偽を返す。ＤＯＭがロードされた後、「このＤＯＭは、２回ロードすることができません」と共に失敗となる。
【０１５３】
【表２４】
2009508228.tif 000026
【０１５４】
パラメータ：XML：このCustomXMLPartを共にロードすべきＸＭＬに対応する文字列型オブジェクト。
【０１５５】
テンプレート著者が、ＸＭＬの文字列からCustomXMLPartを投入することを可能にする。ロードに成功した場合、真を返し、成功しなかった場合（構造エンフォースメントがオンであり、ＸＭＬが構造的に無効である場合、またはＸＭＬが有効および／または適格でなかった場合を含む）、偽を返す。ＤＯＭがロードされた後、「このＤＯＭは、２回ロードすることができません」と共に失敗となる。
【０１５６】
NamespaceURI As String：現在のCustomXMLPartのルートノードについて完全な名前空間ＵＲＩを含む文字列を返す。ストリームが空である（作成されたがノードが追加されない）場合、“”を返す。
【０１５７】
SchemaCollection As CustomXMLSchemaCollection()：このストリームに添付されたスキーマの組を表すCustomXMLSchemaCollection()コレクションを得る／設定する。ユーザがSchemaCollectionを提供した場合、（まだ妥当性検証されていない場合）妥当性検証する。受け取られた構文解析エラーがあれば、それをクライアントに返し、ストリームに追加することが失敗となり、スキーマコレクションをＤＯＭに添付し、インスタンス文書を妥当性検証しようと試みる。妥当性検証されない場合、失敗となり、受け取られた構文解析エラーをクライアントに返し、ストリーム上でスキーマコレクションを変更しない。
【０１５８】
【表２５】
2009508228.tif 000027
【０１５９】
現在のCustomXMLPartに反して使用される名前空間プレフィックスマッピングの組を得る。文書がオープンであるとき、これは、データストア項目に埋め込まれたプレフィックスマッピングのコンテンツで自動的に占有されるが、テンプレート著者が編集／追加／削除することができる。しかし、一実施形態によれば、このパラメータに対する変更は、文書と共に保存されない。
【０１６０】
【表２６】
2009508228.tif 000028
【０１６１】
パラメータ：XPath：ＤＯＭと突き合わせて評価するためのＸＰａｔｈ式を含む文字列型。このＸＰａｔｈに関するプレフィックスマッピングは、関連する名前空間マネージャから取り出される。ＸＰａｔｈが解決されない場合、どんなエラーが生成されたとしても通過する。
【０１６２】
このメソッドは、開発者がＤＯＭ内から１組のノードを取り戻すことを可能にする。
【０１６３】
【表２７】
2009508228.tif 000029
【０１６４】
パラメータ：XPath：ＤＯＭと突き合わせて評価するためのＸＰａｔｈ式を含む文字列型。このＸＰａｔｈに関するプレフィックスマッピングは、関連する名前空間マネージャから取り出される。ＸＰａｔｈが解決されない場合、どんなエラーが生成されたとしても通過する。
【０１６５】
このメソッドは、開発者がＤＯＭ内から単一のノードを取り戻すことを可能にする。
【０１６６】
XML As String：現在のCustomXMLPartのＸＭＬ表現を返す。
【０１６７】
【表２８】
2009508228.tif 000030
【０１６８】
パラメータ：NewNode：CustomXMLPartにちょうど追加されたノードに対応するCustomXMLNodeオブジェクト。注：このノードは、（サブツリーが文書にちょうど追加された場合）子を有することができる。InUndoRedo：ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
【０１６９】
このイベントは、ＸＭＬノードが現在の文書に追加されようとするときいつでも起こる。この追加オペレーションが、ＸＭＬ文書のサブツリーがCustomXMLPart内に追加されることを含む場合、このイベントをその変更における最高位のノードについて１回起こす。このイベントは、データストアにメッセージされる各変更について１回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。
【０１７０】
【表２９】
2009508228.tif 000031
【０１７１】
パラメータ：OldNode：CustomXMLPartからちょうど除去されたノードに対応するCustomXMLNodeオブジェクト。注１：このノードは、（サブツリーが文書から除去されつつある場合）子を有することができる。注２：このノードは、クエリをノードから下に行うことができるが上がることができず、単独で存在するように見える点で、「切断された」ノードとなる（すなわち、同じOwnerStreamを有する文書要素である）。OldParentNode：OldNodeの以前の親ノードに対応するCustomXMLNodeオブジェクト。OldNextSibling：OldNodeの以前の隣の兄弟に対応するCustomXMLNodeオブジェクト。InUndoRedo：ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
【０１７２】
このイベントは、ＸＭＬノードがデータストア内の現在の項目から削除されるときいつでも起こる。この削除オペレーションが、CustomXMLPart内のＸＭＬ文書のサブツリーを含む場合、このイベントをその変更における最高位のノードについて１回起こす。このイベントは、データストアにメッセージされる各変更について１回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。
【０１７３】
【表３０】
2009508228.tif 000032
【０１７４】
パラメータ：OldNode：CustomXMLPartからちょうど除去されたノードに対応するCustomXMLNodeオブジェクト。注１：このノードは、（サブツリーが文書から除去されつつある場合）子を有することができる。注２：このノードは、クエリをノードから下に行うことができるが上がることができず、単独で存在するように見える点で、「切断された」ノードとなる（すなわち、同じOwnerStreamを有する文書要素である）。NewNode：CustomXMLPartにちょうど追加されたノードに対応するCustomXMLNodeオブジェクト。注：このノードは、（サブツリーが文書にちょうど追加された場合）子を有することができる。InUndoRedo：ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
【０１７５】
このイベントは、ＸＭＬノードがデータストア内で置換されるときいつでも起こる。この置換オペレーションが、CustomXMLPart内のＸＭＬ文書のサブツリーを含む場合、このイベントは、その変更における最高位のノードについて１回起こされる。このイベントは、データストアにメッセージされる各変更について１回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。
【０１７６】
CustomXMLNodes()：現在の文書内の１組のCustomXMLNodeオブジェクトを表すコレクション。
【０１７７】
Count As Long：コレクション内のCustomXMLNodeの数を返す。
【０１７８】
【表３１】
2009508228.tif 000033
【０１７９】
パラメータ：Index：コレクション内の所望のCustomXMLNodeのインデックスを表す長整数型。
【０１８０】
これはCustomXMLNodesオブジェクトのデフォルトメンバであり、コレクション内の要求された項目に対応するCustomXMLNodeオブジェクトを返す。
【０１８１】
【表３２】
2009508228.tif 000034
【０１８２】
パラメータ：Name：ＸＭＬ  ＤＯＭに追加しようとする要素のベース名を表す、任意選択の文字列型。Namespace：ＸＭＬ  ＤＯＭに追加しようとする要素の名前空間を表す、任意選択の文字列型。msoCustomXMLNodeElementまたはmsoCustomXMLNodeAttributeタイプのノードを追加するために必要とされ、そうでない場合には無視される。NodeType：作成するノードのタイプを指定する、任意選択のmsoCustomXMLNodeType。指定されない場合、msoCustomXMLNodeElementと仮定される。NodeValue：テキストを許す諸ノードについてノードの値を設定するために使用される、任意選択の文字列型。ノードがテキストを許さない場合、このパラメータは無視される。
【０１８３】
コンテキストノードがmsoXMLNodeElementタイプのものである場合、開発者が、単一のノードをツリー内のコンテキスト要素の下に最後の子として追加することを可能にする。そうでない場合には、このメソッドは、「コメント、処理命令、または属性に子を添付することはできません」というエラーと共に失敗となる。また、追加されることになるノードが、すでに存在する属性である場合があれば、それを阻止する。すなわち、「すでに同じ名前の属性が現在の要素上に存在します。」
【０１８４】
【表３３】
2009508228.tif 000035
【０１８５】
パラメータ：XML：ＸＭＬ  ＤＯＭに追加するためのサブツリーを表す文字列型。このＸＭＬは、（名前空間宣言、単一のルートノードなどを含めて）適格なＸＭＬ文書でなければならない。そうでない場合、「ＸＭＬサブツリーを文書に追加するためには、有効、適格なＸＭＬを含まなければなりません」というエラーと共に失敗となる。
【０１８６】
コンテキストノードがmsoXMLNodeElementタイプのものである場合、開発者が、既存の適格なＸＭＬサブツリーをＤＯＭ内のコンテキスト要素の下に最後の子として追加することを可能にする。そうでない場合には、このメソッドは、「コメント、処理命令、または属性に子を添付することはできません」というエラーと共に失敗となる。
【０１８７】
Attributes As CustomXMLNodes()：現在の要素上の属性を表すCustomXMLNodesコレクションを返す。
【０１８８】
BaseName As String：これは、CustomXMLNodeのデフォルトメンバである。ＤＯＭ内に存在する場合、ノードのベース名を名前空間プレフィックスなしで返す。
【０１８９】
ChildNodes As CustomXMLNodes：現在のノードの子である要素のすべてを含むCustomXMLNodesコレクションを返す。
【０１９０】
Delete As Void：現在のノードを（その子があれば、そのすべてを含めて）ＸＭＬ  ＤＯＭから削除する。行われる削除が構造的に無効となる場合、「このオペレーションは、構造的に無効なＤＯＭを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。
【０１９１】
FirstChild As CustomXMLNode：現在のノードの第１の子要素に対応するCustomXMLNodeオブジェクトを返す。ノードに要素の子がない場合（または、それ自体msoCustomXMLNodeElementタイプのものでない場合）、Nothingを返す。
【０１９２】
HasChildNodes As Boolean：現在のノードが子要素ノードを有する場合、真であり、そうでない場合には偽であるブール型を返す。これは、CustomXMLNodeがNodeType  msoCustomXMLNodeElementでないとき偽を返すことになる。
【０１９３】
【表３４】
2009508228.tif 000036
【０１９４】
パラメータ：Name：ＸＭＬ  ＤＯＭに追加しようとする要素のベース名を表す文字列型。Namespace：ＸＭＬ  ＤＯＭに追加しようとする要素の名前空間を表す、任意選択の文字列型。msoCustomXMLNodeElementまたはmsoCustomXMLNodeAttributeタイプのノードを追加するために必要とされ、そうでない場合には無視される。NodeType：作成するノードのタイプを指定する、任意選択のmsoCustomXMLNodeType。指定されない場合、msoCustomXMLNodeElementと仮定される。NodeValue：テキストを許す諸ノードについてノードの値を設定するために使用される、任意選択の文字列型。ノードがテキストを許さない場合、このパラメータは無視される。NextSibling：新しいＸＭＬ要素をその前でツリーに追加すべきノードを指定する、任意選択のCustomXMLNodeオブジェクト。
【０１９５】
新しい子ノードを、指定されたロケーションでツリーに挿入する。msoCustomXMLNodeElement、msoCustomXMLNodeComment、またはmsoCustomXMLNodeProcessingInstructionタイプのノードを追加するときBeforeNodeがない場合、そのノードは、リストの端部に追加される。msoCustomXMLNodeAttributeタイプについて追加される場合、無視される。NextSiblingがコンテキストノードの子でない場合には、このメソッドは、「このＸＭＬノードは、隣の兄弟要素がコンテキスト要素の子でなければならないため、追加することができません」というエラーと共に失敗となる。行われる追加が構造的に無効となる（また、スキーマエンフォースメントがオンにされる）場合、「このオペレーションは、構造的に無効なＤＯＭを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。また、追加されることになるノードが、すでに存在する属性である場合があれば、それを阻止する。すなわち、「すでに同じ名前の属性が現在の要素上に存在します」。
【０１９６】
【表３５】
2009508228.tif 000037
【０１９７】
パラメータ：XML：ＸＭＬ  ＤＯＭに追加するためのサブツリーを表す文字列型。このＸＭＬは、（名前空間宣言、単一のルートノードなどを含めて）適格なＸＭＬ文書でなければならない。そうでない場合、「ＸＭＬサブツリーを文書に追加するためには、有効、適格なＸＭＬを含まなければなりません」というエラーと共に失敗となる。NextSibling：新しいＸＭＬ要素をその前でツリーに追加すべきノードを指定する、任意選択のCustomXMLNodeオブジェクト。
【０１９８】
指定されたＸＭＬサブツリーを、指定されたロケーションで子ノードセットに挿入する。NextSiblingがコンテキストノードの子でない場合には、このメソッドは、「このＸＭＬノードは、隣の兄弟がコンテキスト要素の子でなければならないため、追加することができません」と共に失敗となる。行われる追加が構造的に無効となる場合、「このオペレーションは、構造的に無効なＤＯＭを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。
【０１９９】
LastChild As CustomXMLNode：現在のノードの最後の子要素に対応するCustomXMLNodeオブジェクトを返す。ノードに要素の子がない場合（または、それ自体msoCustomXMLNodeElementタイプのものでない場合）、Nothingを返す。
【０２００】
【表３６】
2009508228.tif 000038
【０２０１】
現在のノードの名前空間に対応する文字列型を返す。ノードがmsoCustomXMLNodeComment msoCustomXMLNodeProcessingInstructionタイプのものである場合、“”を返す。
【０２０２】
NextSibling As CustomXMLNode：現在のノードの隣の兄弟ノード（要素、コメント、または処理命令）を返す。ノードがそのレベルで最後の兄弟である場合、Nothingを返す。
【０２０３】
NodeType As msoCustomXMLNodeType：現在のノードのタイプを表すmsoCustomXMLNodeType定数を返す。
【０２０４】
NodeValue As String：テキスト（すなわち、テキストノード、コメント、処理命令、属性）だけを含むノードの内部のテキストを得る／設定する。要素については、「要素ノードに対してNodeValueパラメータを設定することはできません」と共に失敗となる。
【０２０５】
OwnerDocument As Variant：このノードに関連付けられたＷｏｒｄ文書を表すDocument/Workbook/Presentationオブジェクトを返す。
【０２０６】
OwnerStream As CustomXMLPart：このノードに関連付けられたデータストア項目を表すCustomXMLPartオブジェクトを返す。
【０２０７】
PreviousSibling As CustomXMLNode：現在のノードの以前の兄弟ノード（要素、コメント、または処理命令）を返す。ノードがそのレベルで最初の兄弟である場合、Nothingを返す。
【０２０８】
ParentNode As CustomXMLNode：現在のノードの親要素ノードを返す。ノードがルートレベルにある場合、Nothingを返す。
【０２０９】
【表３７】
2009508228.tif 000039
【０２１０】
パラメータ：Child：削除しようとするコンテキストノードの子ノードを表すCustomXMLNodeオブジェクト。このノードがコンテキストノードの子でない場合、「このノードは、現在の要素の子でないため、削除することができません」というエラーメッセージと共に失敗となる。
【０２１１】
指定された子ノードをストリームから除去する。得られるＤＯＭが構造的に無効となる場合、「このオペレーションは、構造的に無効なＤＯＭを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。
【０２１２】
【表３８】
2009508228.tif 000040
【０２１３】
パラメータ：OldNode：置換しようとする子ノードを表すCustomXMLNode。Name：ＸＭＬ  ＤＯＭに追加しようとする要素のベース名を表す文字列型。Namespace：ＸＭＬ  ＤＯＭに追加しようとする要素の名前空間を表す、任意選択の文字列型。msoCustomXMLNodeElementまたはmsoCustomXMLNodeAttributeタイプのノードを追加するために必要とされ、そうでない場合には無視される。NodeType：作成するノードのタイプを指定する、任意選択のmsoCustomXMLNodeType。指定されない場合、msoCustomXMLNodeElementと仮定される。NodeValue：テキストを許す諸ノードについてノードの値を設定するために使用される、任意選択の文字列型。ノードがテキストを許さない場合、このパラメータは無視される。
【０２１４】
指定された子ノード（およびそのサブツリー）をストリームから除去し、同じロケーション内で指定されたノードと置換する。OldNodeがコンテキストノードの子でない場合、「OldNodeは、現在のノードの子でなければなりません」というエラーメッセージと共に失敗となる。行われる置換が構造的に無効となる場合、「このオペレーションは、構造的に無効なＤＯＭを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。また、追加されることになるノードが、すでに存在する属性である場合があれば、それを阻止する。すなわち、「すでに同じ名前の属性が現在の要素上に存在します。」
【０２１５】
【表３９】
2009508228.tif 000041
【０２１６】
パラメータ：OldNode：置換しようとする子ノードを表すCustomXMLNode。XML：ＸＭＬ  ＤＯＭに追加するためのサブツリーを表す文字列型。このＸＭＬは、（名前空間宣言、単一のルートノードなどを含めて）適格なＸＭＬ文書でなければならない。そうでない場合、「ＸＭＬサブツリーを文書に追加するためには、有効、適格なＸＭＬを含まなければなりません」というエラーと共に失敗となる。
【０２１７】
指定された子ノード（およびそのサブツリー）をストリームから除去し、同じロケーション内で指定されたＸＭＬサブツリーと置換する。OldNodeがコンテキストノードの子でない場合、「OldNodeは、現在のノードの子でなければなりません」というエラーメッセージと共に失敗となる。行われる置換が構造的に無効となる場合、「このオペレーションは、構造的に無効なＤＯＭを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。
【０２１８】
【表４０】
2009508228.tif 000042
【０２１９】
パラメータ：XPath：ＤＯＭと突き合わせて評価するためのＸＰａｔｈ式を含む文字列型。このＸＰａｔｈに関するプレフィックスマッピングは、NamespaceManagerプロパティから取り出される。ＸＰａｔｈが解決されない場合、（埋込みＸＭＬを有する本日のDocumentオブジェクトに対するメソッドに従って）どんなエラーが存在したとしても通過する。
【０２２０】
このメソッドは、開発者がデータストア項目内から１組のノードを取り戻すことを可能にする。
【０２２１】
【表４１】
2009508228.tif 000043
【０２２２】
パラメータ：XPath：ＤＯＭと突き合わせて評価するためのＸＰａｔｈ式を含む文字列型。このＸＰａｔｈに関するプレフィックスマッピングは、NamespaceManagerプロパティから取り出される。ＸＰａｔｈが解決されない場合、（埋込みＸＭＬを有する本日のDocumentオブジェクトに対するメソッドに従って）どんなエラーが存在したとしても通過する。
【０２２３】
このメソッドは、開発者がデータストア項目内から単一のノードを取り戻すことを可能にする。
【０２２４】
Text As String：現在のノードについてテキストを得る／設定する。ＭＳＸＭＬと異なり、ノードに対してこれを設定することにより、そのノードのコンテンツが、指定された文字列で置換される−たとえば、fooのコンテンツが次のように見える非リーフ要素<foo>上でそれを「テスト」に設定する。
【０２２５】
【表４２】
2009508228.tif 000044
【０２２６】
失敗とはならないが、内部ではデータストアに対して、また外部ではデータストアのクライアントに対してメッセージが異なることになる。行われる置換が構造的に無効となる場合、「このオペレーションは、構造的に無効なＤＯＭを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。
【０２２７】
XML As String：現在のノードおよび（あれば）その子の生のＸＭＬ表現を返す。
【０２２８】
XPath As String：現在のノードについて正規化されたＸＰａｔｈを有する文字列型を返す。ノードがもはやＤＯＭ内にない（削除されている）場合、「このノードは、関連するカスタムＸＭＬ部分から削除されています」と共に失敗となる。
【０２２９】
New Enums：
msoCustomXMLDataNodeTypeは、使用可能なＸＭＬノードのタイプを表す。msoCustomXMLNodeAttributeは、ＸＭＬ属性ノードを表す。msoCustomXMLNodeCDataは、ＣＤＡＴＡノードを表す。msoCustomXMLNodeCommentは、ＸＭＬコメントノードを表す。msoCustomXMLNodeDocumentは、ＸＭＬ文書（／）ノードを表す。msoCustomXMLNodeElementは、ＸＭＬ要素ノードを表す。msoCustomXMLNodeProcessingInstructionは、ＸＭＬ処理命令ノードを表す。msoCustomXMLNodeTextは、テキストノードを表す。
【０２３０】
【表４３】
2009508228.tif 000045
【０２３１】
パラメータ：Child：削除しようとするコンテキストノードの子ノードを表すCustomXMLNodeオブジェクト。このノードがコンテキストノードの子でない場合、「このノードは、現在の要素の子でないため、削除することができません」というエラーメッセージと共に失敗となる。Name：ＸＭＬ  ＤＯＭに追加しようとする要素のベース名を表す文字列型。Namespace：ＸＭＬ  ＤＯＭに追加しようとする要素の名前空間を表す、任意選択の文字列型。msoXMLNodeElementまたはmsoXMLNodeAttributeタイプのノードを追加するために必要とされ、そうでない場合には無視される。NodeType：作成するノードのタイプを指定する、任意選択のmsoXMLNodeType。指定されない場合、msoXMLNodeElementと仮定される。NodeValue：テキストを許す諸ノードについてノードの値を設定するために使用される、任意選択の文字列型。ノードがテキストを許さない場合、このパラメータは無視される。
【０２３２】
指定された子ノード（およびそのサブツリー）をストリームから除去し、同じロケーション内で指定されたノードと置換する。行われる削除が構造的に無効となる（また、スキーマエンフォースメントがオンにされる）場合、「このオペレーションは、構造的に無効なＤＯＭを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。
【０２３３】
XMLNamespace：スキーマライブラリ（Ｓｃｈｅｍａ  Ｌｉｂｒａｒｙ）内の、単一、一意の名前空間を表すオブジェクト。
【０２３４】
【表４４】
2009508228.tif 000046
【０２３５】
パラメータ：CustomXMLPart：所望のストリームについてのCustomXMLPartオブジェクト、またはCustomXMLPartsコレクション内のそのストリームのインデックスとすることができるバリアント型。
【０２３６】
このＸＭＬ名前空間についてのスキーマを所与のCustomXMLPartに添付する。
【０２３７】
XMLSchemaReference：現在の文書内で参照される、単一、一意の名前空間を表すオブジェクト。
【０２３８】
Delete() As Void：名前空間−ならびにその名前空間内の要素すべて−をCustomXMLPartから除去する。しかし、この場合には、構造スキーマエンフォースメントがイネーブルであり、これらの要素を除去することにより、構造的に無効なＤＯＭが生じるため、データストアは、このオペレーションを拒絶することができる。この場合には、失敗となり、「このオペレーションは、スキーマエンフォースメントがイネーブルである間には、得られるストリームが構造的に無効になるため、実行することができません」というエラーが出る。
【０２３９】
【表４５】
2009508228.tif 000047
【０２４０】
パラメータ：Name：ＸＭＬ  ＤＯＭに追加しようとする要素のベース名を表す文字列型。Namespace：ＸＭＬ  ＤＯＭに追加しようとする要素の名前空間を表す、任意選択の文字列型。msoXMLNodeElementまたはmsoXMLNodeAttributeタイプのノードを追加するために必要とされ、そうでない場合には無視される。Parent：このノードをその下に追加すべきノードを表す、任意選択のCustomXMLNode。.Attributesプロパティによって返されるCustomXMLNodesコレクションから呼び出された場合には、その属性の親ノードと仮定される。任意の他の場合に呼び出された場合には、このパラメータは、指定され、または「このノードを文書に追加するためには、親ノードを指定しなければなりません」というエラーを返す。NextSibling：新しいノードの隣の兄弟になるべきノードを表す、任意選択のCustomXMLNode。指定されない場合、そのノードは、親ノードの子の端部に追加される。msoXMLNodeAttributeタイプの追加について無視される。NextSiblingが親の子でない場合、「このノードは、隣の兄弟ノードが親ノードの子でないため、追加できません」というエラーを返す。NodeType：作成するノードのタイプを指定する、任意選択のmsoXMLNodeType。指定されない場合には、.Attributesプロパティから呼び出されない限りmsoXMLNodeElementと仮定され、その場合にはmsoXMLNodeAttributeと仮定される。NodeValue：テキストを許す諸ノードについてノードの値を設定するために使用される、任意選択の文字列型。ノードがテキストを許さない場合、このパラメータは無視される。
【０２４１】
ＸＭＬノードをデータストア項目に追加するためのジェネリックメソッド。.Attributesプロパティによって返されるCustomXMLNodesオブジェクトから呼び出された場合には、Parentは、その親ノードのデフォルトを有し、NodeTypeは、msoXMLNodeAttributeのデフォルトを有する。他の場合すべてにおいては、Parentが必要とされ、NodeTypeのデフォルトはmsoXMLNodeElementである。行われる追加が構造的に無効となる（また、スキーマエンフォースメントがオンにされる）場合、「このオペレーションは、構造的に無効なデータストリームを引き起こすため、スキーマエンフォースメントがオンである間、実行することができません」というエラーメッセージと共に失敗となる。名前空間がスキーマ参照コレクション内にない場合、失敗となり、「この要素を追加するためには、最初にそのスキーマをデータストリームに添付しなければなりません」というエラーメッセージ。
【０２４２】
CustomDataXMLSchemaReferences()：CustomXMLPart内で識別される一意の名前空間のすべてを表すコレクション。注：デフォルトでは、ＸＭＬファイル内で宣言された各名前空間についてのエントリでこれを占有する。
【０２４３】
【表４６】
2009508228.tif 000048
【０２４４】
パラメータ：NamespaceURI：スキーマコレクションに追加しようとするスキーマによって定義される名前空間を含む文字列型。Alias：このスキーマをスキーマライブラリに追加するとき書き込むための別名を含む文字列型。FileName：スキーマライブラリに追加すべきスキーマへのパスを含む文字列型。InstallForAllUsers：スキーマライブラリ（Ｓｃｈｅｍａ  Ｌｉｂｒａｒｙ）キーをＨＫＣＵ（デフォルト）に追加すべきか、それともＨＫＬＭに追加すべきか判定するブール型。
【０２４５】
このメソッドは、スキーマ参照を追加する。これを行うために、適切な名前空間宣言がファイル内にまだ定義されていない場合、それをCustomXMLPartのルート要素に追加する。オープン時、宣言済みの名前空間すべてが、このコレクションを占有するために使用される。
【０２４６】
EnforceStructure As Boolean：データストアが、関連するCustomXMLPartに対して、そのスキーマに従って構造的な有効性を押し付けるべきかどうかに対応するブール型を得る、また設定する。CustomXMLPartのコンテンツが有効でない間に、ユーザがこのプロパティを真に設定しようと試みた場合、「このデータストリームのコンテンツが構造的に無効である間、スキーマエンフォースメントをオンにすることができません」というエラーを返す。
【０２４７】
Count As Long：このCustomXMLPart内で現在参照されている名前空間の数を返す。
【０２４８】
【表４７】
2009508228.tif 000049
【０２４９】
パラメータ：Index：以下の２つのタイプのうちの１つ、すなわち、コレクション内の所望のCustomDataXMLSchemaReferenceのインデックスを表す長整数型、および、コレクション内の所望のCustomDataXMLSchemaReferenceの名前空間を表す文字列型とすることができるバリアント型。
【０２５０】
これはCustomDataXMLSchemaReferencesオブジェクトのデフォルト数であり、要求されたオブジェクトに対応するXMLSchemaReferenceオブジェクトを返す。
【０２５１】
Validate() As Void：このメソッドは、CustomDataXMLSchemaReferencesコレクション内のスキーマすべてに突き合わせてストリーム全体を妥当性検証する。個々のノード上でエラーがレポートされる（ValidationStatusプロパティ参照）。
【０２５２】
【表４８】
2009508228.tif 000050
【０２５３】
パラメータ：NewCustomXMLNode：CustomXMLPartにちょうど追加されたノードに対応するCustomXMLNodeオブジェクト。注：このノードは、（サブツリーが文書にちょうど追加された場合）子を有することができる。InUndoRedo：ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
【０２５４】
このイベントは、ＸＭＬノードが現在の文書に追加されようとするときいつでも起こる。この追加オペレーションが、ＸＭＬ文書のサブツリーがCustomXMLPart内に追加されることを含む場合、このイベントをその変更における最高位のノードについて１回起こす。このイベントは、データストアにメッセージされる各変更について１回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。
【０２５５】
【表４９】
2009508228.tif 000051
【０２５６】
パラメータ：OldCustomXMLNode：CustomXMLPartから除去しようとするノードに対応するCustomXMLNodeオブジェクト。注：このノードは、（サブツリーが文書から除去されつつある場合）子を有することができる。InUndoRedo：ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
【０２５７】
このイベントは、ＸＭＬノードがデータストア内の現在の項目から削除されるときいつでも起こる。この削除オペレーションが、CustomXMLPart内のＸＭＬ文書のサブツリーを含む場合、このイベントをその変更における最高位のノードについて１回起こす。このイベントは、データストアにメッセージされる各変更について１回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。イベントハンドラが、このノードの下にある何らかのものを修正しようと試みた場合、「このノードは削除されようとしているため、この変更は許されません」というエラーメッセージと共に失敗となる。
【０２５８】
上記の仕様、例、およびデータは、本発明の構成の製造および使用について完全に述べている。本発明の多数の実施形態は、本発明の精神および範囲から逸脱することなしに成すことができるため、本発明は、以下に添付されている特許請求の範囲内にある。
【図面の簡単な説明】
【０２５９】
【図１】コンピュータのための例示的なコンピューティングアーキテクチャの図である。
【図２】１つまたは複数のクライアントアプリケーションと、１つまたは複数のデータストアおよびデータストアのコンテンツとの関係を示すブロック図である。
【図３】内部データコンシューマと外部データコンシューマの間での、ＸＭＬデータストアとの対話を示すシステム図である。
【図４】データストアに関連するイベントを処理するためのプロセスの図である。
【図５】本発明の態様による、副作用を含むイベントを処理するためのプロセスの図である。
【図１】
2009508228.tif 000052
【図２】
2009508228.tif 000053
【図３】
2009508228.tif 000054
【図４】
2009508228.tif 000055
【図５】
2009508228.tif 000056
【国際調査報告】
2009508228.tif 000057
2009508228.tif 000058