次に、同様の符号が同様の要素を表す図面を参照して、本発明の様々な態様について述べる。具体的には、図1および対応する考察は、本発明の実施形態を実施することができる好適なコンピューティング環境を簡潔に、一般的に説明することが意図されている。
一般に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造、および特定のタスクを実行する、または特定の抽象データ型を実装する他のタイプの構造を含む。また、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサをベースとする、またはプログラム可能な家電、ミニコンピュータ、メインフレームコンピュータなどを含めて、他のコンピュータシステム構成を使用することもできる。通信ネットワークを介してリンクされた遠隔処理デバイスによってタスクが実行される分散コンピューティング環境をも使用することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルと遠隔双方のメモリ記憶装置内に位置する可能性がある。
図1を参照すると、本発明を実施するための1つの例示的なシステムが、コンピューティングデバイス100など、コンピューティングデバイスを含んでいる。非常に基本的な構成では、コンピューティングデバイス100は、典型的には、少なくとも1つの処理装置102と、システムメモリ104とを含む。コンピューティングデバイスの厳密な構成およびタイプに応じて、システムメモリ104は、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、またはその2つの何らかの組合せとすることができる。システムメモリ104は、典型的には、オペレーティングシステム105、1つまたは複数のアプリケーション106を含み、プログラムデータ107を含むことができる。一実施形態では、アプリケーション106は、ワードプロセッサアプリケーション120を含むことができる。この基本構成は、図1に、破線108内の構成要素によって示される。
コンピューティングデバイス100は、追加の特徴または機能を有することができる。たとえば、コンピューティングデバイス100は、たとえば磁気ディスク、光ディスク、またはテープなど、追加のデータ記憶装置(取外し式および/または非取外し式)をも含むことができる。そのような追加のストレージは、図1に、取外し式ストレージ109および非取外し式ストレージ110によって示されている。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなど情報を記憶するための任意の方法または技術で実施される揮発性と不揮発性、取外し式と非取外し式の媒体が含まれる可能性がある。システムメモリ104、取外し式ストレージ109、非取外し式ストレージ110は、すべてコンピュータ記憶媒体の例である。コンピュータ記憶媒体には、それだけには限らないが、RAM、ROM、EEPROM、フラッシュメモリ、もしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気記憶デバイス、または、所望の情報を記憶するために使用することができ、コンピューティングデバイス100によってアクセスすることができる任意の他の媒体が含まれる。そのようなどのコンピュータ記憶媒体をもデバイス100の一部とすることができる。コンピューティングデバイス100はまた、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなど、入力デバイス112を有することができる。ディスプレイ、スピーカ、プリンタなど、出力デバイス114もまた含むことができる。これらのデバイスはすべて当技術分野で周知であり、ここで詳しく論じる必要はない。
コンピューティングデバイス100はまた、ネットワークを介してなど、他のコンピューティングデバイス118と通信することが可能になる通信接続116を含むことができる。通信接続116は、通信媒体の一例である。通信媒体は、典型的には、搬送波または他の移送機構など変調データ信号内のコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータによって例示することができ、任意の情報送達媒体を含む。「変調データ信号」という用語は、情報を信号に符号化するようにその特性の1つまたは複数が設定または変更された信号を意味する。限定ではなく例を挙げると、通信媒体は、有線ネットワークまたは直接配線接続など有線媒体と、音響、RF、赤外線および他の無線媒体など無線媒体とを含む。本明細書では、コンピュータ可読媒体という用語は、記憶媒体と通信媒体を共に含む。
いくつかのプログラムモジュールおよびデータファイルは、ワシントン州レドモンドのMICROSOFT CorporationのWINDOWS(登録商標)オペレーティングシステムなど、ネットワーク化されたパーソナルコンピュータの動作を制御するのに適したオペレーティングシステム105を含めて、コンピューティングデバイス100のシステムメモリ104内に記憶することができる。システムメモリ104はまた、ワードプロセッサアプリケーション120、および下記で述べられている他のアプリケーションなど、1つまたは複数のプログラムモジュールを記憶することができる。ワードプロセッサアプリケーション120は、電子文書を作成し、編集し、処理するための機能を提供するように動作する。
本発明の一実施形態によれば、ワードプロセッサアプリケーション120は、MICROSOFT CorporationのWORDプログラムを含む。しかし、他の製造者のワードプロセッサアプリケーションプログラムを使用することができることを理解されたい。ワードプロセッシングアプリケーションの例示は、例としてのものにすぎず、文書を制作し、文書に働きかけることができる他のタイプのアプリケーションを限定するものではない。たとえば、スプレッドシートアプリケーションプログラム、データベースアプリケーションプログラム、スライドプレゼンテーションアプリケーションプログラム、描画またはコンピュータ支援アプリケーションプログラムなど、様々な形態のコンテンツ(たとえば、テキスト、画像、ピクチャなど)を処理することが可能な他のアプリケーションプログラム106も等しく適用可能である。様々な異なるタイプの文書を制作し、それに働きかけるアプリケーションプログラム106例には、MICROSOFT CorporationのOFFICEが含まれる。
諸実施形態は、コンピュータプロセス、コンピューティングシステムとして、あるいは、コンピュータプログラム製品またはコンピュータ可読媒体など製造品として実施することができる。コンピュータプログラム製品は、コンピュータシステムによって可読な、また、コンピュータプロセスを実行するための命令のコンピュータプログラムを符号化するコンピュータ記憶媒体とすることができる。また、コンピュータプログラム製品は、コンピューティングシステムによって可読な、また、コンピュータプロセスを実行するための命令のコンピュータプログラムを符号化する、搬送波上の伝播信号とすることができる。
本明細書および特許請求の範囲全体にわたって、以下の用語は、その用語の状況によって別段示されない限り、本明細書に関連する意味をとる。
「データ」という用語は、語、文、段落など文書の表面レベルまたはプレゼンテーションレベルの情報、ならびに補足情報、たとえばワードプロセッシング文書と共に搬送され、その文書を参照し、その文書によって使用されるメタデータを指す可能性がある。この情報は、しばしば大規模なものであり、文書のプレゼンテーションレイヤ上で露出されない可能性が高い。
「プレゼンテーション」という用語は、文書がプリントされた場合現れることになるテキストおよびレイアウトなど、文書の可視部分を指す。
「タグ」という用語は、XML文書内で要素の境界を画する、文書内に挿入されたキャラクタを指す。各要素は、一般に2つのタグ、すなわち開始タグおよび終了タグを含む。空の要素(コンテンツなし)を有することが可能であり、その場合には、1つのタグが許される。
「マークアップ言語」または「ML」という用語は、文書の諸部がアプリケーションによってどのように解釈されるかを指定する、文書内の特別なコードのための言語を指す。ワードプロセッサファイルでは、マークアップ言語は、テキストがどのようにフォーマットされるか、またはレイアウトされるかを指定する。
「要素(element)」という用語は、XML文書の基本単位を指す。要素は、XML文書に関して、属性、他の要素、テキスト、および他のコンテンツ領域を含むことができる。
「構成単位(building block)」という用語は、ユーザによって入力された特定のタイプのコンテンツのためのコンテナとして働く、境界を画された、潜在的にラベルを付けられた、文書内の領域を指す。
「データバインディング、データマッピング、およびデータフィールド」という用語は、ある構成単位のコンテンツを格納すべき文書内に格納されたXML DOMへのXPathを決定する、その構成単位上のプロパティを指す。
タグ間のXMLコンテンツは、その要素の「子」(または子孫)と見なされる。したがって、要素のコンテンツに埋め込まれた他の要素は、「子要素」または「子ノード」またはその要素と呼ばれる。要素のコンテンツに直接埋め込まれたテキストは、その要素の「子テキストノード」と見なされる。ある要素内の子要素とテキストは共に、その要素の「コンテンツ」を構成する。
「属性」という用語は、特定の値に設定され、要素に関連付けられた追加のプロパティを指す。要素には、なしを含めて、任意の数の属性設定を関連付けることができる。属性は、追加の要素を含まない、またはテキストノードとして処理される要素に、追加の情報を関連付けるために使用される。
「XPath」は、パターン式を使用し、XML文書内のノードを識別する演算子である。XPathのパターンは、XML文書全体にわたる経路を説明する、スラッシュによって分離された子要素名のリストである。パターンは、経路に合致する要素を「選択」する。
「XMLデータストアまたはデータストア」という用語は、ワードプロセッサ文書、スプレッドシート文書、スライドプレゼンテーション文書など文書内のコンテナを指し、ファイルがオープンである間に、文書内に格納された(たとえば、XMLフォーマットにある)データを格納および修正するためのアクセスを実現する。XMLデータストアは、図2に関連して、下記でさらに定義される。
図2は、1つまたは複数のクライアントアプリケーションと、1つまたは複数のデータストアおよびデータストアのコンテンツとの関係を示すブロック図である。一般的に述べると、コンピュータによって生成された文書に関連付けられる任意のデータを格納し、関係付け、その使用を可能にするために、1つまたは複数のデータストアが、文書内の主プレゼンテーションストレージとは別々に維持される。文書メタデータなど、文書に関連付けられた情報を構造化するためのデータが、異なるデータ間の関係が維持されるデータストア内で維持される。データストアは、様々なアプリケーションがデータの1つまたは複数にアクセスし働きかけることができるように、データストア内の様々なデータにアプリケーションプログラミングインターフェース(API)を公開する。本明細書では、「データコンシューマ」「アプリケーション」「プロセス」という用語は、文脈によって別段明らかに指示されない限り、相互交換可能に使用することができる。
諸データは、拡張マークアップ言語(XML)などマークアップ言語に従って構造化することができる。XMLスキーマを各データに関連付けることができ、データストアは、所与のデータに関連付けられたXMLスキーマに基づいて、データに適用されたXML構造を妥当性検証することができる。データストアは、拡張マークアップ言語(XML)に従って構造化された任意の数の任意のデータ項目、たとえばメタデータを容れることができる。したがって、文書ソリューションプロバイダは、所与の文書と共に、任意のメタデータをXMLとして格納し、データが除去された、もしくはデータストアにロードされたとき、および/または文書がユーザによってオープン/編集/保存されたときなど、イベントが発生したときデータにアクセスする所与のソリューションによってその情報を処理させることができる。
また、文書が編集されている間に、XML形態にあるデータにプログラム的にアクセスすることができる。一実施形態によれば、文書がオープンである間に、データにアクセスし、プログラム的に修正することができる、ソリューション開発者によく知られている標準的な機構が提供される。このプログラム的なアクセスは、標準的なXMLインターフェースに似ている。データに対するプログラム的なアクセスは、1つまたは複数の編集用クライアントアプリケーション(たとえば、文書編集または作成用アプリケーション、および/またはサードパーティのアプリケーションアドインソリューションなど)に対するアプリケーションプログラミングインターフェースを介して実現される。したがって、複数のクライアントアプリケーションが、同じ文書データにアクセスし編集することができ、所与のデータに対する、衝突する変更があれば、それが解決される。任意の所与の変更に対する「副作用(side effect)」を加えることができる(たとえば、会社名を「Microsoft」に設定したことに応答して、銘柄記号を「MSFT」に変更すること)。さらに、データに対する変更と、関連する副作用があればそれは、データストアによって「束ね」させることができ、その結果、1つまたは複数の変更を取り消すことにより、関連の変更すべてが覆される。これは、ユーザが、たとえばUndoコマンドを押すことによって文書表面から元の変更の取消しを開始したときソリューションが変更すべてを覆していることを確実にするための、ソリューションそれ自体からの開発の負担を除去する上で助けになる。
標準的なXMLスキーマ(XSD)を使用し、文書データに適用されたXMLデータが有効であることを確実にするために、文書メタデータに関連付けられたいずれかのカスタムXMLデータのコンテンツを定義することができる。これらのスキーマは、文書内に格納されたXMLデータの任意のインスタンスに添付することができ、データストアは、そのデータのXML構造(すなわち、XMLタグのコンテンツではなくXMLタグ)が無効になるであろうXMLデータに対する任意の変更を許さないことになる。これは、ソリューション開発者が特定のXMLメタデータを文書に添付することができることを確実にする、また、XMLデータを修正するためにどのデータコンシューマ(たとえば、アドイン)が使用されるかにかかわらず、そのデータが、関連付けられたスキーマに従って引き続き構造的に「正しい」ものとなることを確実にする助けとなる。
次に、図2を参照すると、文書データ220は、XML構造データと、文書の表面またはプレゼンテーションレベルのビューを表す、関連する文書データとを含む。たとえば、文書データ220は、XML構造(たとえば、headingタグ、bodyタグ、conclusionタグ)と、ワードプロセッシング文書、スプレッドシート文書、スライドプレゼンテーション文書などの、関連する表面ビューデータ(たとえば、語、文、段落)とを含むことができる。
データストア208は、所与の文書に関連付けられた1つまたは複数のタイプのデータに関連付けられた1つまたは複数の構造化データを格納するための文書データリポジトリである。データストアが1つだけ示されているが、複数のデータストアを使用することができる。メタデータ1 225(構造化データ項目)は、XML構造データと、文書に関連付けられた第1のメタデータのための、関連するデータとを含むことができる。たとえば、メタデータ1 225は、文書の著者、文書作成日、文書の最後の変更/保存日などをリストするXML構造データ(たとえば、日付タグ、名前タグなど)を含むことができる。メタデータ2 230(構造化データ項目)は、XML構造データ(タグ)と、文書に関連付けられた第2のメタデータを表す、関連するデータとを含むことができる。メタデータ1およびメタデータ2は、例としてのものにすぎず、所与の文書に関連してデータストア208内で維持することができる様々な、いくつかの異なるタイプのデータを限定するものではないことを理解されたい。たとえば、本明細書で述べられているように、ソリューションプロバイダ、または文書データにアクセスすることができるユーザが望むなら、任意のデータを、1つまたは複数のソフトウェアアプリケーションによって構造化し、文書に追加することができる。
各データ225、230に適用された拡張マークアップ言語(XML)データに関連付けられた構文および妥当性検証規則を指示するために、任意選択で、スキーマファイル240、245が、データストア208内に格納された各データに添付されてもよい。XMLスキーマファイルは、XML環境内のデータを説明および妥当性検証するための方法を提供する。スキーマファイルは、要素および属性を含めてどのXMLマークアップデータがXML文書内のコンテンツを説明するために使用されるかについて述べ、スキーマファイルは、各要素がどこに許されるか、どのタイプのコンテンツが要素内で許されるか、またどの要素が他の要素内で現れることができるかを含めて、XMLマークアップ構文を定義する。スキーマファイルの使用により、文書(または、この場合には個々のデータ)が一貫した、予測可能な形で確実に構造化される。スキーマファイル240、245は、ユーザが作成することができ、概してXMLなど関連するマークアップ言語によってサポートされる。
文書の体系化により、データストアは、データストアレベルで所与のスキーマファイルに違反する変更があればそれを拒絶することによって、文書の構造的な有効性を「保証」する能力を提供することができる。一実施形態によれば、データストア208は、関連付けられたスキーマファイルに反して所与のデータに追加されたXML構造、または所与のデータに加えられた変更を妥当性検証するために、スキーマ妥当性検証モジュール260を使用する。たとえば、文書作成者または編集者が、所与のデータ、たとえばメタデータ1にXML構造上の変更を加え、編集者が所与のXMLタグを追加または除去した場合、データストア208は、スキーマ妥当性検証モジュールを使用し、変更の有効性を確保するように、関連付けられたスキーマファイルと突き合わせてXML構造の変更を検査することになる。変更が有効でない場合、編集者に対してエラーが生成される可能性がある。わかるように、所与のデータに適用されたXML構造のそのような制御により、クライアントおよびサードパーティアプリケーションが、関連するデータと対話することを可能にするのに特に重要な構造上の一貫性および予測可能性がもたらされる。
データストア208は、クライアントアプリケーション205(たとえば、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、スライドプレゼンテーションアプリケーションなど)、ならびにサードパーティアプリケーション210、215による、それぞれのアプリケーション205、210、215のオブジェクトモデル(OM)を介するアクセスを受けることができる1つまたは複数のアプリケーションプログラミングインターフェース(API)270を提供する。これらのAPIは、クライアントアプリケーションおよびサードパーティアプリケーションが任意の既存のXMLファイルを所与の文書のデータストア208内にロードすることを可能にし、したがって、データが今やその文書の一部であり、(たとえば、オープン/編集/保存/名前変更などを介して)その寿命の間、またはそのデータがデータストアから削除されるまで、その文書内で移動することを確実にする。一実施形態によれば、データストア内のデータは、所与のデータ225、230のためのソースアプリケーションが閉じられている、あるいは他の形で使用可能でないときでさえ、そのXMLフォーマットで使用可能である。すなわち、所与のデータ225、230は、API270を介して、(ソースアプリケーション以外の)他のアプリケーションによるアクセスを受けることができる。下記で述べられているように、APIはまた、クライアントおよびサードパーティアプリケーションが、データ項目225、230に適用されたXMLマークアップデータに変更を加えることを可能にする。
XMLデータ225、230は、文書220と関連付けられるようにデータストア内にロードされた後で、開発者のXMLプログラミング標準に関する既存の知識を利用するために既存のXML編集用インターフェースと同様のメソッドを提供するように設計されたデータストアインターフェースを使用して、標準的なXMLとして操作することができる。これにより、ユーザは、ある文書のためのデータストアに追加されたXMLデータに対して、要素および属性を追加すること、要素および属性を除去すること、既存の要素/属性の値を変更すること、ならびに関連するXMLツリーの任意の既存の部分の値を読み出すことなど、標準的なXMLオペレーションを実行することができる。これらのXMLの標準的なオペレーションを使用して、ソリューションは、データの長さ/サイズまたはデータの構造に対する先の制約を受けずに、構造化された複雑なメタデータを文書と共に格納することができ、これにより、従来のソリューションより著しく構造化されたソリューションのためにこのXMLデータストアを使用することができる。たとえば、サードパーティアプリケーション215は、各文書についてデータストア208に追加されたメタデータ1 225を読み出すことによって、文書の著者の名前および文書作成日をいくつかの文書から突き止め、抽出するように記述されてもよい。サードパーティアプリケーション例は、所与の組織によって作成された文書すべてについて文書の著者の名前および文書作成日のリストを作成するようにプログラムされたアプリケーションとすることができる。本発明の実施形態によれば、サードパーティアプリケーションは、所望のデータを効率的に突き止め、抽出するために、メタデータ1に適用されたXML構造を使用することができる。たとえば、サードパーティアプリケーションは、<docauthor>および<doccreationdate>など、これらのタグに関連付けられたデータを得る、また使用するためのXMLタグを突き止めるために、メタデータ1ファイルのXML構造を構文解析するように記述されてもよい。前述のものは、1つまたは複数のアプリケーションが、文書に関連付けられる構造化データと、データストア208を介して対話することができる多数の方法の1つの例にすぎないことを理解されたい。
さらに、データストア208は、複数のアプリケーション205、210、215が個々のXMLデータ220、225、230(ストア項目としても知られる)と共に機能することができるように、同じデータに対するいくつかのAPIインターフェース270を提供する。たとえば、クライアントアプリケーション(たとえば、ワードプロセッシングアプリケーション)およびサードパーティアプリケーションソリューション(たとえば、上述のアプリケーション)など、いくつかのソリューションは、同じ組の文書プロパティ(たとえば、メタデータ2 230ファイル内に含まれるプロパティ)と共に機能することができる。データストア208を使用して、これらのアプリケーションのそれぞれは、同じデータにアクセスする複数のデータコンシューマを有するという複雑さに対処することを必要とせずに、各アプリケーションがそれ自体のOMを介してデータと通信することができるように、それら自体のデータストアAPIインターフェース270を介して所望のXMLデータ230に対する別個のアクセス権を受け取る。
これらの複数の、データを消費するアプリケーション205、210、215が同じデータにアクセスすることを可能にするために、データストア208は、XMLデータの任意の部分が別のアプリケーションによって変更されたとき、これらのアプリケーションのそれぞれに通知し、その結果、所与のアプリケーションは(内部からそれ自体のプロセスに対して、また外部から同じデータに対する他の変更によって)その変更に応答することができる。1つのアプリケーションが所与のデータ項目に対する変更を要求したとき、その要求された変更に対してどのように応答するか、または応答するかどうか他のアプリケーションが判断することができるように、その要求が自動的に他のアプリケーションすべてに送られる。一実施形態によれば、これは、所与のアプリケーションソリューション/プログラムがそれ自体の論理に関係するメッセージを受け取るだけとなるように、そのアプリケーションがインターフェースを有するXMLデータの任意の一部を「聴取」することを各アプリケーションが登録できるようにすることによって行われる。たとえば、あるタイプのアプリケーション210は、詳細なビジネス論理機能をサードパーティソリューションに提供するために、所与のXMLデータに加えられる変更すべてを聴取することを登録したいと望む可能性がある一方、別のタイプのアプリケーション215は、その論理が、そのXMLデータのどの他の部分に対する変更についても関心がないため、同じデータ内の1つまたは2つの特定のXML要素に対する変更を聴取したいと望むにすぎない可能性がある。
この実施形態によれば、複数のアプリケーション205、210、215は、同じ文書データにアクセスし編集することができ、所与のデータに対する、衝突する変更があれば、それが解決される。たとえば、あるアプリケーションによる1つの変更が別のアプリケーションによる副作用変更を引き起こすとき、任意の所与の変更に対する「副作用」を加えることができる。たとえば、第1のアプリケーション210は、所与の文書に関係する会社の銘柄記号のリストを編纂するために、会社名を、対応する銘柄記号が使用可能であればそれに変換するように、所与の文書に関連付けられた1つまたは複数のデータ項目225、230からこれらの会社名を抽出するタスクを課される可能性がある。第2のアプリケーション215が、たとえば会社名を「会社ABC」から会社XYZ」に変更して、所与のメタデータ内の所与の会社名を追加または変更させた場合、第1のアプリケーションは、この変更を聴取し、「会社ABC」ではなく「会社XYZ」用の銘柄記号を含むように、その銘柄記号のリストを自動的に更新することができる。さらに、そのような変更と、関連する副作用があればそれは、データストア208によって束ねさせることができ、その結果、1つまたは複数の変更を取り消すことにより、関連の変更すべてが覆される。
図3は、内部データコンシューマと外部データコンシューマの間での、XMLデータストアとの対話を示すシステム図を示す。図では、システム300はデータストア302を含み、データストア302は、プレゼンテーションレイヤ304と、それぞれがエラーストアおよびアンドゥストアを含むXMLストア1〜N(306)と、グローバル変更ストア308と、任意選択のグローバルアンドゥストア310と、内部データコンシューマ1〜N 314に結合される内部ブローカ312と、外部データコンシューマ1〜N 318に結合される外部ブローカ316とを含む。
XMLデータストア306を使用して、文書は、(それぞれが標準的なXML構文に準拠する限り)任意の数の任意のデータ項目を容れる能力を有する。任意のメタデータが文書内にXMLとして格納されてもよく、その情報は、文書がユーザによってオープン/編集/保存されたとき、自動的に往復させることができる。
上述のように、このデータに対するプログラム的なアクセスは、文書が編集されている間に使用することができるAPIを介して実現され、文書がオープンである間に、この情報にアクセスし、プログラム的に修正することができる、ソリューション開発者によく知られている標準的な機構を提供する。一実施形態によれば、このプログラム的なアクセスは、標準的なXMLインターフェースに似ているように設計される。このAPIを使用すると、ワードプロセッシングアプリケーションなどアプリケーションが動作している間にデータを追加/除去することができ、データをストア項目(データストア内の一部)内に投入することができ、データを標準的なXMLコンストラクトを使用して操作することができ、スキーマをデータストア内の任意のXMLデータに関連付けることができ、スキーマを、データストア項目に関連付けられた後で追加/除去/変更することができ、XML変更を、任意の聴取中のクライアントに対してイベント化することができる。図では、このAPIは、外部データコンシューマ318のためのインターフェースを提供する外部ブローカ316と、データストア302と対話する任意の内部データコンシューマ314のためのインターフェースを提供する内部ブローカ312とを備える。
データストア302に対する操作は、実時間で行われてもよい。上記で論じられているように、データストア306は、1つまたは複数のタイプのデータを容れることができる。たとえば、ある会社は、単一のデータストア内に格納したいと望む、異なるタイプのデータすべてを格納するために使用している1つのデータストアを有する可能性があり、一方、別の会社は、異なるデータストアに跨ってデータ異なるタイプのデータを格納したいと望む可能性がある。
データコンシューマ318は、データストア306に関するアクションに関係するイベントに備えて登録することができる。たとえば、データコンシューマは、任意のタイプの変更が1つまたは複数のデータストアに加えられたとき、イベントを受け取ることを登録することができる。別のデータコンシューマは、データストア内のある種の要素または要素の組に対して行われた変更に備えて登録することができる。共通のイベントには、データストアをロードすること、データストアに追加すること、およびデータストアから削除することが含まれる。イベントが発生したとき、登録されている各データコンシューマは、その変更に反応することができ、一方、データストアの状態は、一貫して維持される。データコンシューマは、たびたび、変更が加えられたときどんなアクションも実行しないことになる。他の時点では、データコンシューマは、イベントに応答して何らかのアクションを実行することになる。たとえば、データコンシューマは、タイトル変更に応答して、文書内のヘッダを更新するなど、変更に応答してデータストアにいくつかの他の変更を加えることができる。データコンシューマはまた、文書に影響を及ぼさないいくつかの他のオペレーションを実行することができる。たとえば、ストックチッカ記号(stock ticker symbol)が挿入された場合、データコンシューマは、その銘柄記号に関連付けられるデータを取り出すことができるが、取り出されたデータのすべてが文書内において、プレゼンテーションレイヤで表示されるわけではない可能性がある。データコンシューマはまた、変更を拒絶することができる。たとえば、データコンシューマ1が、受け入れられない変更を受けた場合、そのデータコンシューマは、ブローカにフラグを返し、その変更が受け入れられないことを示すことができる。変更が受け入れられないときはいつでも、その変更が決して行われないように、その変更が任意の副作用と共に逆戻しされる。各XMLストア306は、そのアンドゥストアを使用し、加えた変更を取り消すことができる。別法として、グローバルアンドゥストア310を使用し、データストアに跨って加えられた変更を取り消すことができる。文書プロパティに何が行われるかに関心がある3つのデータコンシューマがあり、その結果、これらのデータコンシューマのそれぞれが、そのプロパティの変更に関係するイベントを受け取ることを登録していると想像してみる。変更が加えられたとき、データストアは、登録している各データコンシューマを決定し、所定の順序でそれらのそれぞれに変更を通知する。各データコンシューマは、順に、変更に応答して何らかのアクションを実行することができる。その変更、またはその変更の結果として登録されているデータコンシューマによって加えられた変更のいずれかが、データコンシューマのいずれか1つによって受け入れられない場合、最初の変更に関係する変更のすべてが取り消される。
外部ブローカアプリケーションプログラミングインターフェースレイヤ316は、外部データコンシューマ318によるデータストア302に対するアクセスを実現し、サードパーティクライアントが、そのアプリケーションに関連する内部データコンシューマがデータストアと対話するように、データストア302と対話することを可能にする。データストア302内のXMLデータストア306のそれぞれは、識別するために一意のIDを備える。これは、XMLデータストア306を突き止める際に助けとなる。
任意の点で、データコンシューマは、データストア内のデータを妥当性検証するために使用されるスキーマを追加することができる。今、ふと現れてデータを変更しようと試みる他のサードパーティコードがあれば、データストアが最初に行うことは、提供されているスキーマに対して変更が道理にかなっているかどうか判定することである。スキーマが添付された後で、ブローカは、妥当性検証用オブジェクトになる。
データストアはまた、一度に複数の要素を受け取ることができる。データ(XML)を1つの特定のストリームとして提供することにより、いくつかの状況においてスキーマを満たす助けとなる可能性がある。たとえば、添付されたスキーマには、株式データが存在する場合少なくとも2つの会社を有していなければならないと述べられているとする。株式データが1つずつ追加されるならば、有効とされないことになろう。
データを妥当性検証するために、単一のパス(pass)が使用される。データストアに変更が加えられる可能性がある2つのパスを作成するのではなく、データがデータストアに引き渡される前に妥当性検証が実行される。これは、データコンシューマがデータストアに誤りを導入するのを防止する助けとなる。
図4および図5は、データストアに関係するイベントを処理するためのプロセスを示す。本明細書で提示されているルーチンの考察を読むとき、様々な実施形態の論理演算が、(1)コンピュータによって実施される動作のシーケンス、またはコンピューティングシステム上で動作するプログラムモジュールとして、および/または(2)コンピューティングシステム内の、相互接続された機械論理回路または回路モジュールとして実装されることを理解されたい。実装は、本発明を実施するコンピューティングシステムの性能要件による選択の問題である。したがって、例示されている、また本明細書に述べられている実施形態を構成する論理演算は、オペレーション、構造デバイス(structural device)、動作(act)、またはモジュールと、様々に称される。これらのオペレーション、構造デバイス、動作、およびモジュールは、ソフトウェア、ファームウェア、専用デジタル論理、およびそれらの任意の組合せで実装することができる。
図4は、データストアに関連するイベントを処理するためのプロセスを示す。一般に、データストアがデータコンシューマから変更要求を受け取ったとき、その変更は、登録されているデータコンシューマのすべてに送られ、それらのデータコンシューマがその変更を拒絶することを、またはその変更の結果として副作用(他のXML変更)を要求することを可能にする。
開始オペレーションの後で、プロセスはオペレーション410に進み、データコンシューマが、受け取ることに関心がある任意のイベントに備えて登録する。それらのイベントは、データをデータストアに追加すること、データをデータストアから除去すること、データストア内のデータに変更を加えることなどに関する可能性がある。イベントは、グローバル変更、またはデータストアのうちの1つまたは複数内に格納される要素に対する特定の変更に結びつけられてもよい。たとえば、あるデータコンシューマは、任意の変更がいつ加えられたか知りたいと望む可能性があり、一方、別のクライアントは、データストア内の1つの特定の値に対する変更に関心があるにすぎない可能性がある。
判断オペレーション420に移動して、イベントが発生したかどうかについて判定される。イベントは、データストアに対する変更に関する。たとえば、上記で論じたように、イベントは、追加、除去、またはデータストアに対する何らかの他の変更を加えることを含む可能性がある。たとえば、変更は、ノードをデータストアに追加することである可能性がある。イベントが発生しなかったとき、プロセスは判断オペレーション420に戻る。イベントが発生したとき、プロセスはオペレーション430に進む。
オペレーション430では、変更が、その変更に備えて登録しているデータコンシューマのそれぞれに中継される。一実施形態では、各データコンシューマが所定の順序で通知を受ける。たとえば、その順序は、データコンシューマの登録の順序に基づくものとすることができる。
オペレーション440に移行して、イベント通知を受け取ったデータコンシューマのそれぞれから応答が得られる。クライアントのそれぞれは、変更を受け入れる、または拒絶することができる。その応答により、変更がデータストアに引き渡されることになるか否か判定される。
判断オペレーション450に移動して、データコンシューマのいずれかがデータストアに対する変更を拒絶したかどうかについて判定される。変更がデータコンシューマのいずれかによって拒絶されたとき、プロセスはブロック460に移動し、その変更に応答して加えられたどの変更も、変更が行われなかったかのように逆戻しされる。
通知を受けたクライアントのすべてが変更を受け入れたとき、プロセスはオペレーション470に進み、任意選択で変更が妥当性検証され、次いで、プロセスはオペレーション480に進み、変更が適切なデータストアに引き渡される。
次いで、変更を開始した元のデータコンシューマは、変更が受け入れられた通知を受け取る(オペレーション490)。次いで、プロセスは終了ブロックに移動し、他のアクションの処理に戻る。
図5は、副作用を含むイベントを処理するためのプロセスを示す。一般に、データストアがデータコンシューマから変更要求を受け取ったとき、その変更は、登録されているクライアントのすべてに送られ、それらのクライアントがその変更を拒絶することを、またはその変更の結果として副作用(他のXML変更)を要求することを可能にする。たとえば、クライアントは、データストア内の1つの項目に対する変更について通知を受ける可能性があり、その変更の結果として、データコンシューマは、データストアに別の変更を加える。副作用として変更が要求されたときには、プロセスが、図4に示されているプロセスとはわずかに異なる。
開始オペレーションの後で、プロセスはオペレーション510に進み、現在受け入れられつつある、または拒絶されつつある変更の結果として、クライアントがデータストアに対する副作用変更を開始する。
オペレーション520に移行して、この副作用変更は待ち行列に入れられるが、実行されない。換言すれば、副作用変更は、データストア内で直ちに実行されはしない。このことに基づいて、イベントの代替形態は、以下を含む。
判断オペレーション530に移動して、データコンシューマのいずれかがデータストアに対する元の変更を拒絶したかどうかについて判定される。
変更がデータコンシューマのいずれかによって拒絶されたとき、プロセスはブロック540に移動し、その変更に応答して加えられたどの変更も、また待ち行列に入れられているどの副作用変更も、変更が行われなかったかのように逆戻しされる。
クライアントが元の変更を受け入れたとき、プロセスはオペレーション550に進み、任意選択で変更が妥当性検証され、次いで、プロセスはオペレーション560に進み、元の変更が適切なデータストアに引き渡される。
次いで、プロセスはオペレーション570に進み、副作用変更が、データストア内で一度に1つ実行される。次いで、各副作用変更は、登録されているクライアントのいずれかによって受け入れられる、または拒絶される可能性がある。副作用変更のいずれかが拒絶されたとき、加えられた変更のすべてが、変更のどれも行われなかったかのように逆戻しされる。
次いで、プロセスは終了ブロックに移動し、他のアクションの処理に戻る。
以下は、データストアOMを介して公開される共通機能のいくつかを示すコードセグメント例である。
最初の例は、ストリームをデータストアに追加することを示す。
第2の例は、データストアを突き止めることを示す。
第3の例は、サブツリーをデータストアに追加することを示す。
一実施形態によれば、以下は、このAPIに関連する例示的な機能である。
Events on CustomXMLNode
イベントは、CustomXMLNode上で、ならびに文書レベルだけで発生することができる。
パラメータ:NewNode:CustomXMLNodeにちょうど追加されたノードに対応するCustomXMLNodeオブジェクト。注:このノードは、(サブツリーが文書にちょうど追加された場合)子を有することができる。InUndoRedo:ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
このイベントは、XMLノードが現在の文書に追加されようとするときいつでも起こる。この追加オペレーションが、XML文書のサブツリーがCustomXMLNode内に追加されることを含む場合、このイベントは、その変更における最高位のノードについて1回起こされる。このイベントは、データストアにメッセージされる各変更について1回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。
パラメータ:OldNode:CustomXMLPartからちょうど除去されたノードに対応するCustomXMLNodeオブジェクト。注1:このノードは、(サブツリーが文書から除去されつつある場合)子を有することができる。注2:このノードは、クエリをノードから下に行うことができるが上がることができず、単独で存在するように見える点で、「切断された」ノードとなる(すなわち、同じOwnerStreamを有する文書要素である)。OldParentNode:OldNodeの以前の親ノードに対応するCustomXMLNodeオブジェクト。OldNextSibling:OldNodeの以前の隣の兄弟に対応するCustomXMLNodeオブジェクト。InUndoRedo:ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
このイベントは、XMLノードがデータストア内の現在の項目から削除されるときいつでも起こる。この削除オペレーションが、CustomXMLPart内のXML文書のサブツリーを含む場合、このイベントをその変更における最高位のノードについて1回起こす。このイベントは、データストアにメッセージされる各変更について1回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。
パラメータ:OldNode:CustomXMLPartからちょうど除去されたノードに対応するCustomXMLNodeオブジェクト。注1:このノードは、(サブツリーが文書から除去されつつある場合)子を有することができる。注2:このノードは、クエリをノードから下に行うことができるが上がることができず、単独で存在するように見える点で、「切断された」ノードとなる(すなわち、同じOwnerStreamを有する文書要素である)。NewNode:CustomXMLPartにちょうど追加されたノードに対応するCustomXMLNodeオブジェクト。注:このノードは、(サブツリーが文書にちょうど追加された場合)子を有することができる。InUndoRedo:ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
このイベントは、XMLノードがデータストア内で置換されるときいつでも起こる。この置換オペレーションが、CustomXMLPart内のXML文書のサブツリーを含む場合、このイベントをその変更における最高位のノードについて1回起こす。このイベントは、データストアにメッセージされる各変更について1回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。
CustomXMLParts():OLE文書プロパティおよびWSSプロパティストリームを含めて、ファイル内で使用可能なデータストア項目すべてのコレクションを指す。
CustomXMLPrefixMappings:現在の部分のためのプレフィックスマッピングのすべてを表すオブジェクト。
パラメータ:Prefix:プレフィックスマッピングリストに追加するためのプレフィックスを表す文字列型。NamespaceURI:新たに追加されたプレフィックスに割り当てるための名前空間を表す文字列型。
この項目をクエリするとき使用するためにカスタム名前空間/プレフィックスマッピングを開発者が追加することを可能にする。プレフィックスがマネージャ内にすでに存在する場合、これにより、そのプレフィックスがデータストアによって内部で追加/使用されるものであるときを除いて、そのプレフィックスの意味が上書きされ、次いで「このプレフィックスはすでに使用されており、修正することができません」というエラーが返されることになる。
Count As Long:コレクション内のプレフィックスマッピングの数を返す。
パラメータ:Index:コレクション内の所望のスキーマのインデックスを表す長整数型。
要求されたCustomXMLPrefixMappingをコレクションから返す。このオブジェクトのデフォルト数。
パラメータ:Prefix:プレフィックスマッピングリスト内のプレフィックスを表す文字列型。開発者が、指定されたプレフィックスに対応する名前空間を得ることを可能にする。名前空間が、要求されたプレフィックスに割り当てられていない場合、“”を返す。
パラメータ:NamespaceURI:プレフィックスマッピングリスト内の名前空間を表す文字列型。
開発者が、指定された名前空間に対応するプレフィックスを得ることを可能にする。プレフィックスが、要求された名前空間に割り当てられていない場合、“”を返す。名前空間内に指定された複数のプレフィックスがある場合、マネージャは、供給された名前空間に合致する最初のものを返す。
CustomXMLPrefixMapping:プレフィックスマッピングを表すオブジェクト。
Prefix As String:このプレフィックスマッピングのためのプレフィックスを返す。
NamespaceURI As String:このプレフィックスマッピングのための名前空間を返す。
CustomXMLSchema:スキーマコレクションの一部であるスキーマを表すオブジェクト。
Delete As Void:このスキーマをスキーマコレクションから削除する。すでに妥当性検証されている、またはストリーム(何らかのライブコレクション)に添付されているコレクション内のスキーマに対してこれが行われた場合には、「スキーマコレクションが現在使用中であるため、このスキーマは、削除できません」というエラーメッセージと共に失敗となる。
Location As String:ユーザの機械上のこのスキーマのロケーションを表す文字列を返す。
NamespaceURI As String:このスキーマのターゲット名前空間を返し、XSDによって何も指定されていない場合、“”を返す。
Reload As Void:このスキーマをディスクから再ロードし、これは、(SLが変更されている場合)そのロケーションを更新し、依然として有効なスキーマであることを確実にするために、ディスク上のこのスキーマのコピーを手直しすることになる。すでに妥当性検証されている、またはストリーム(何らかのライブコレクション)に結びつけられているコレクション内のスキーマに対してこれが行われた場合には、「スキーマコレクションが現在使用中であるため、このスキーマは、再ロードできません」というエラーメッセージと共に失敗となる。
CustomXMLSchemaCollection():(ストリームに添付されている/されることになる)スキーマのコレクションを表すオブジェクト。
パラメータ:NamespaceURI:コレクションに追加しようとするスキーマの名前空間を表す文字列型。そのスキーマがスキーマライブラリ(Schema Library)内に存在する場合、それを取り出す。Alias:コレクションに追加しようとするスキーマの別名を表す文字列型。その別名がSL内に存在する場合、この引数を使用して見出す。FileName:スキーマを見出すことができるディスク上のロケーションを表す文字列型。このパラメータが指定されている場合、スキーマをコレクションに追加するだけでなく、SLにも追加する。InstallForAllUsers:スキーマをスキーマライブラリに追加する場合に、SLキーを(全ユーザのための)HKLMに書き込むべきか、それとも(現在のユーザだけのための)HKCUに書き込むべきかを表すブール型。デフォルトは偽(HKCUに書き込む)。
このメソッドは、開発者が、1つまたは複数のスキーマを、データストア内のストリームに追加しようとするスキーマコレクションに、ならびにスキーマライブラリに追加することを可能にする。以下のパラメータの組を用いて呼び出すことができる(衝突の場合には、パラメータを以下の順序で使用しようと試みる)。すなわち、[NamespaceURI],[Alias],FileName,[InstallForAllUsers](その名前空間についてスキーマが存在しない場合、スキーマをスキーマライブラリに追加する)。NamespaceURIのみ(スキーマライブラリからXSDをルックアップする)。Aliasのみ(スキーマライブラリからXSDをルックアップする)。
パラメータ:SchemaCollection:現在のコレクション内にインポートしようとするスキーマのコレクションを表すCustomXMLSchemas()オブジェクト。
すでに存在するコレクションを現在のコレクションに追加する。インポート中に名前空間同士が衝突した場合(たとえば、a.xsdがすでに「fooNamespace」にリンクされているが、入来コレクションが、同じ名前空間についてb.xsdを有する場合)、入来コレクションが優勢になる。
Count As Long:コレクション内のスキーマの数を返す。
パラメータ:Index:コレクション内の所望の項目を示すバリアント型。所望のスキーマのターゲット名前空間を表す文字列型、またはコレクション内の所望のスキーマのインデックスを表す長整数型のどちらかとなる可能性がある。
要求されたCustomXMLSchemaをコレクションから返す。このオブジェクトのデフォルトメンバ。
パラメータ:Index:コレクション内のスキーマのインデックスを表す長整数型。
スキーマコレクションの指定されたメンバのターゲット名前空間を返す。
Validate As Boolean:コレクション内のスキーマが有効か否かを表すブール型を返す。また、これは、インクルード(Include)がコレクション内の各スキーマについてトラバースされ、それらを要求したスキーマに追加するときである。
CustomXMLParts():1組のCustomXMLPartオブジェクトを表すコレクション。
パラメータ:XML:新たに作成されたCustomXMLPartに追加するためのXMLを表す、任意選択の文字列型。SchemaCollection:このストリームを妥当性検証するために使用しようとするスキーマの組を表す、任意選択のCustomDataSchemaCollection()オブジェクト。
ユーザが、新しいCustomXMLPartをファイルに追加することを可能にする。XMLパラメータ内のXMLが適格でない場合、失敗となり、「コンテンツは、このストリームに追加するためには、有効、適格なXMLでなければなりません」というエラーが出る。ユーザがSchemaCollectionを提供した場合、(まだ妥当性検証されていない場合)それを妥当性検証する。受け取られたMSXML構文解析エラーがあれば、それをOMクライアントに返し、ストリームに追加することが失敗となる。XMLパラメータをDOM内にロードすることができるかどうか検査する。できない場合、失敗となり、「コンテンツは、このストリームに追加するためには、有効、適格なXMLでなければなりません」というエラーが出る。スキーマコレクションをDOMに添付し、インスタンス文書を妥当性検証しようと試みる。妥当性検証されない場合、失敗となり、受け取られたXML構文解析エラーをOMクライアントに返し、ストリームをコレクションに追加しない。
ユーザがSchemaCollectionを提供しない場合、XMLパラメータをDOM内にロードすることができるかどうか検査する。できない場合、失敗となり、「コンテンツは、このストリームに追加するためには、有効、適格なXMLでなければなりません」というエラーが出る。XMLファイル内で参照された名前空間のリストを調べる。これらのスキーマをSLから見出し、それらについてスキーマコレクションを推論する。得られたスキーマコレクションを妥当性検証しようと試みる。妥当性検証されない場合、なおストリームをコレクションに追加するが、どのスキーマコレクションにも関連付けられず、したがって有効にされない。スキーマコレクションをDOMに添付し、インスタンス文書を妥当性検証しようと試みる。妥当性検証されない場合、失敗となり、受け取られたXML構文解析エラーをOMクライアントに返し、ストリームをコレクションに追加しない。妥当性検証されない場合、なおストリームをコレクションに追加するが、どのスキーマコレクションにも関連付けられず、したがって有効にされない。空のSchemaCollectionを提供することは、「このストリームを決して妥当性検証しない」ことを表すためにとられる明示的なアクションとなる。
Count As Long:コレクション内のカスタムデータストリームの数を返す。
パラメータ:Index:以下の2つのタイプのうちの1つ、すなわち、コレクション内の所望のCustomXMLPartのインデックスを表す長整数型、または、コレクション内の所望のCustomXMLPartのルート名前空間を表す文字列型とすることができるバリアント型。複数の部分がこのルート名前空間に合致した場合、インデックス順で最初の合致したものが返されることになる。
これはCustomXMLPartsオブジェクトのデフォルトメンバであり、要求されたオブジェクトに対応するCustomXMLPartオブジェクトを返す。
パラメータ:ID:コレクションから返されるべきデータストア項目用のIDを含む文字列型。
開発者が、その特定の項目を、そのIDを使用してデータストアから入手する(grab)ことを可能にする。このIDを有するストア項目が存在しない場合、Nothingを返す。
パラメータ:NamespaceURI:データストアのコレクションからの所望の項目のルート名前空間を表す文字列型。
要求されたエントリにルート名前空間が合致するデータストア項目のすべてを返す。このルート名前空間を有するストリームが存在しない場合、空のCustomXMLParts()コレクションを返す。
パラメータ:NewStream:ちょうど追加されたストリームを含むCustomXMLPartオブジェクト。
このイベントは、新しいストリームがデータストアに追加されるときいつでも起こる。複数のストリームが追加される場合、このイベントは、各新しいストリームについて1回起こる。ストリームが(適切な.Addメソッドを使用して)XMLコンテンツと共に追加された場合には、このイベントは、その項目がこのコンテンツで占有されるまで起こらないであろう。
パラメータ:OldStream:データストアから削除しようとするストリームを含むCustomXMLPartオブジェクト。
このイベントは、ストリームがデータストアから除去されるときいつでも起こる。複数のストリームが削除される場合、このイベントは、削除された各ストリームについて1回起こる。また、このストリームを「削除予定」としてフラグし、その結果、それに対する読出し専用オペレーション(たとえば、ノードに対するクエリ、値の検査など)は有効であるが、書込みオペレーションは、「このオペレーションは、削除しようとするストリームに対して実行することができません」というエラーメッセージと共に失敗となる。
CustomXMLPart:データストア内の単一のXMLストリームを表すオブジェクト。
パラメータ:Name:XML DOMに追加しようとするノードのベース名を表す文字列型。Namespace:XML DOMに追加しようとするノードの名前空間を表す、任意選択の文字列型。msoCustomXMLNodeElementまたはmsoCustomXMLNodeAttributeタイプのノードを追加するために必要とされ、そうでない場合には無視される。Parent:このノードをその下に追加すべきノードを表すCustomXMLNode。属性を追加する場合、その属性を追加すべき要素を示す。NextSibling:新しいノードの隣の兄弟になるべきノードを表す、任意選択のCustomXMLNode。指定されない場合、そのノードは、親ノードの子の端部に追加される。msoXMLNodeAttributeタイプの追加について無視される。NextSiblingが親の子でない場合、「このノードは、隣の兄弟ノードが親ノードの子でないため、追加できません」というエラーを返す。NodeType:作成するノードのタイプを指定する、任意選択のmsoCustomXMLNodeType。指定されない場合には、msoCustomXMLNodeElementと仮定される。NodeValue:テキストを許す諸ノードについてノードの値を設定するために使用される、任意選択の文字列型。ノードがテキストを許さない場合、このパラメータは無視される。
XMLノードをデータストア項目に追加するためのジェネリックメソッド。親が必要とされ、NodeTypeのデフォルトはmsoXMLNodeElementである。行われる追加が構造的に無効となる場合、「このオペレーションは、構造的に無効なデータストリームを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。名前空間がスキーマ参照コレクション内にない場合、失敗となり、「この要素を追加するためには、最初にそのスキーマをデータストリームに添付しなければなりません」というエラーメッセージを提供する。
DocumentElement As CustomXMLNode
ストリームのルート要素を得る。ストリームが空である場合、Nothingを返す。
Delete As Void:現在のCustomXMLPartをデータストアから削除する。ユーザがコアプロパティ部を削除しようと試みた場合、「このカスタムXML部分は、Officeが適正に機能するために必要とされ、削除することができません」と共に失敗となる。
ID As String:現在のCustomXMLPartに割り当てられたGUIDを含む文字列を返す。
パラメータ:FilePath:このCustomXMLPartのためのXMLをそこからロードすべきユーザの機械(またはネットワークなど)上のファイルに対応する文字列型オブジェクト。
テンプレート著者が、その機械上の先に存在するファイルからCustomXMLPartを投入することを可能にする。ロードに成功した場合、真を返し、成功しなかった場合(構造エンフォースメントがオンであり、XMLが構造的に無効である場合、またはXMLが有効および/または適格でなかった場合を含む)、偽を返す。DOMがロードされた後、「このDOMは、2回ロードすることができません」と共に失敗となる。
パラメータ:XML:このCustomXMLPartを共にロードすべきXMLに対応する文字列型オブジェクト。
テンプレート著者が、XMLの文字列からCustomXMLPartを投入することを可能にする。ロードに成功した場合、真を返し、成功しなかった場合(構造エンフォースメントがオンであり、XMLが構造的に無効である場合、またはXMLが有効および/または適格でなかった場合を含む)、偽を返す。DOMがロードされた後、「このDOMは、2回ロードすることができません」と共に失敗となる。
NamespaceURI As String:現在のCustomXMLPartのルートノードについて完全な名前空間URIを含む文字列を返す。ストリームが空である(作成されたがノードが追加されない)場合、“”を返す。
SchemaCollection As CustomXMLSchemaCollection():このストリームに添付されたスキーマの組を表すCustomXMLSchemaCollection()コレクションを得る/設定する。ユーザがSchemaCollectionを提供した場合、(まだ妥当性検証されていない場合)妥当性検証する。受け取られた構文解析エラーがあれば、それをクライアントに返し、ストリームに追加することが失敗となり、スキーマコレクションをDOMに添付し、インスタンス文書を妥当性検証しようと試みる。妥当性検証されない場合、失敗となり、受け取られた構文解析エラーをクライアントに返し、ストリーム上でスキーマコレクションを変更しない。
現在のCustomXMLPartに反して使用される名前空間プレフィックスマッピングの組を得る。文書がオープンであるとき、これは、データストア項目に埋め込まれたプレフィックスマッピングのコンテンツで自動的に占有されるが、テンプレート著者が編集/追加/削除することができる。しかし、一実施形態によれば、このパラメータに対する変更は、文書と共に保存されない。
パラメータ:XPath:DOMと突き合わせて評価するためのXPath式を含む文字列型。このXPathに関するプレフィックスマッピングは、関連する名前空間マネージャから取り出される。XPathが解決されない場合、どんなエラーが生成されたとしても通過する。
このメソッドは、開発者がDOM内から1組のノードを取り戻すことを可能にする。
パラメータ:XPath:DOMと突き合わせて評価するためのXPath式を含む文字列型。このXPathに関するプレフィックスマッピングは、関連する名前空間マネージャから取り出される。XPathが解決されない場合、どんなエラーが生成されたとしても通過する。
このメソッドは、開発者がDOM内から単一のノードを取り戻すことを可能にする。
XML As String:現在のCustomXMLPartのXML表現を返す。
パラメータ:NewNode:CustomXMLPartにちょうど追加されたノードに対応するCustomXMLNodeオブジェクト。注:このノードは、(サブツリーが文書にちょうど追加された場合)子を有することができる。InUndoRedo:ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
このイベントは、XMLノードが現在の文書に追加されようとするときいつでも起こる。この追加オペレーションが、XML文書のサブツリーがCustomXMLPart内に追加されることを含む場合、このイベントをその変更における最高位のノードについて1回起こす。このイベントは、データストアにメッセージされる各変更について1回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。
パラメータ:OldNode:CustomXMLPartからちょうど除去されたノードに対応するCustomXMLNodeオブジェクト。注1:このノードは、(サブツリーが文書から除去されつつある場合)子を有することができる。注2:このノードは、クエリをノードから下に行うことができるが上がることができず、単独で存在するように見える点で、「切断された」ノードとなる(すなわち、同じOwnerStreamを有する文書要素である)。OldParentNode:OldNodeの以前の親ノードに対応するCustomXMLNodeオブジェクト。OldNextSibling:OldNodeの以前の隣の兄弟に対応するCustomXMLNodeオブジェクト。InUndoRedo:ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
このイベントは、XMLノードがデータストア内の現在の項目から削除されるときいつでも起こる。この削除オペレーションが、CustomXMLPart内のXML文書のサブツリーを含む場合、このイベントをその変更における最高位のノードについて1回起こす。このイベントは、データストアにメッセージされる各変更について1回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。
パラメータ:OldNode:CustomXMLPartからちょうど除去されたノードに対応するCustomXMLNodeオブジェクト。注1:このノードは、(サブツリーが文書から除去されつつある場合)子を有することができる。注2:このノードは、クエリをノードから下に行うことができるが上がることができず、単独で存在するように見える点で、「切断された」ノードとなる(すなわち、同じOwnerStreamを有する文書要素である)。NewNode:CustomXMLPartにちょうど追加されたノードに対応するCustomXMLNodeオブジェクト。注:このノードは、(サブツリーが文書にちょうど追加された場合)子を有することができる。InUndoRedo:ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
このイベントは、XMLノードがデータストア内で置換されるときいつでも起こる。この置換オペレーションが、CustomXMLPart内のXML文書のサブツリーを含む場合、このイベントは、その変更における最高位のノードについて1回起こされる。このイベントは、データストアにメッセージされる各変更について1回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。
CustomXMLNodes():現在の文書内の1組のCustomXMLNodeオブジェクトを表すコレクション。
Count As Long:コレクション内のCustomXMLNodeの数を返す。
パラメータ:Index:コレクション内の所望のCustomXMLNodeのインデックスを表す長整数型。
これはCustomXMLNodesオブジェクトのデフォルトメンバであり、コレクション内の要求された項目に対応するCustomXMLNodeオブジェクトを返す。
パラメータ:Name:XML DOMに追加しようとする要素のベース名を表す、任意選択の文字列型。Namespace:XML DOMに追加しようとする要素の名前空間を表す、任意選択の文字列型。msoCustomXMLNodeElementまたはmsoCustomXMLNodeAttributeタイプのノードを追加するために必要とされ、そうでない場合には無視される。NodeType:作成するノードのタイプを指定する、任意選択のmsoCustomXMLNodeType。指定されない場合、msoCustomXMLNodeElementと仮定される。NodeValue:テキストを許す諸ノードについてノードの値を設定するために使用される、任意選択の文字列型。ノードがテキストを許さない場合、このパラメータは無視される。
コンテキストノードがmsoXMLNodeElementタイプのものである場合、開発者が、単一のノードをツリー内のコンテキスト要素の下に最後の子として追加することを可能にする。そうでない場合には、このメソッドは、「コメント、処理命令、または属性に子を添付することはできません」というエラーと共に失敗となる。また、追加されることになるノードが、すでに存在する属性である場合があれば、それを阻止する。すなわち、「すでに同じ名前の属性が現在の要素上に存在します。」
パラメータ:XML:XML DOMに追加するためのサブツリーを表す文字列型。このXMLは、(名前空間宣言、単一のルートノードなどを含めて)適格なXML文書でなければならない。そうでない場合、「XMLサブツリーを文書に追加するためには、有効、適格なXMLを含まなければなりません」というエラーと共に失敗となる。
コンテキストノードがmsoXMLNodeElementタイプのものである場合、開発者が、既存の適格なXMLサブツリーをDOM内のコンテキスト要素の下に最後の子として追加することを可能にする。そうでない場合には、このメソッドは、「コメント、処理命令、または属性に子を添付することはできません」というエラーと共に失敗となる。
Attributes As CustomXMLNodes():現在の要素上の属性を表すCustomXMLNodesコレクションを返す。
BaseName As String:これは、CustomXMLNodeのデフォルトメンバである。DOM内に存在する場合、ノードのベース名を名前空間プレフィックスなしで返す。
ChildNodes As CustomXMLNodes:現在のノードの子である要素のすべてを含むCustomXMLNodesコレクションを返す。
Delete As Void:現在のノードを(その子があれば、そのすべてを含めて)XML DOMから削除する。行われる削除が構造的に無効となる場合、「このオペレーションは、構造的に無効なDOMを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。
FirstChild As CustomXMLNode:現在のノードの第1の子要素に対応するCustomXMLNodeオブジェクトを返す。ノードに要素の子がない場合(または、それ自体msoCustomXMLNodeElementタイプのものでない場合)、Nothingを返す。
HasChildNodes As Boolean:現在のノードが子要素ノードを有する場合、真であり、そうでない場合には偽であるブール型を返す。これは、CustomXMLNodeがNodeType msoCustomXMLNodeElementでないとき偽を返すことになる。
パラメータ:Name:XML DOMに追加しようとする要素のベース名を表す文字列型。Namespace:XML DOMに追加しようとする要素の名前空間を表す、任意選択の文字列型。msoCustomXMLNodeElementまたはmsoCustomXMLNodeAttributeタイプのノードを追加するために必要とされ、そうでない場合には無視される。NodeType:作成するノードのタイプを指定する、任意選択のmsoCustomXMLNodeType。指定されない場合、msoCustomXMLNodeElementと仮定される。NodeValue:テキストを許す諸ノードについてノードの値を設定するために使用される、任意選択の文字列型。ノードがテキストを許さない場合、このパラメータは無視される。NextSibling:新しいXML要素をその前でツリーに追加すべきノードを指定する、任意選択のCustomXMLNodeオブジェクト。
新しい子ノードを、指定されたロケーションでツリーに挿入する。msoCustomXMLNodeElement、msoCustomXMLNodeComment、またはmsoCustomXMLNodeProcessingInstructionタイプのノードを追加するときBeforeNodeがない場合、そのノードは、リストの端部に追加される。msoCustomXMLNodeAttributeタイプについて追加される場合、無視される。NextSiblingがコンテキストノードの子でない場合には、このメソッドは、「このXMLノードは、隣の兄弟要素がコンテキスト要素の子でなければならないため、追加することができません」というエラーと共に失敗となる。行われる追加が構造的に無効となる(また、スキーマエンフォースメントがオンにされる)場合、「このオペレーションは、構造的に無効なDOMを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。また、追加されることになるノードが、すでに存在する属性である場合があれば、それを阻止する。すなわち、「すでに同じ名前の属性が現在の要素上に存在します」。
パラメータ:XML:XML DOMに追加するためのサブツリーを表す文字列型。このXMLは、(名前空間宣言、単一のルートノードなどを含めて)適格なXML文書でなければならない。そうでない場合、「XMLサブツリーを文書に追加するためには、有効、適格なXMLを含まなければなりません」というエラーと共に失敗となる。NextSibling:新しいXML要素をその前でツリーに追加すべきノードを指定する、任意選択のCustomXMLNodeオブジェクト。
指定されたXMLサブツリーを、指定されたロケーションで子ノードセットに挿入する。NextSiblingがコンテキストノードの子でない場合には、このメソッドは、「このXMLノードは、隣の兄弟がコンテキスト要素の子でなければならないため、追加することができません」と共に失敗となる。行われる追加が構造的に無効となる場合、「このオペレーションは、構造的に無効なDOMを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。
LastChild As CustomXMLNode:現在のノードの最後の子要素に対応するCustomXMLNodeオブジェクトを返す。ノードに要素の子がない場合(または、それ自体msoCustomXMLNodeElementタイプのものでない場合)、Nothingを返す。
現在のノードの名前空間に対応する文字列型を返す。ノードがmsoCustomXMLNodeComment msoCustomXMLNodeProcessingInstructionタイプのものである場合、“”を返す。
NextSibling As CustomXMLNode:現在のノードの隣の兄弟ノード(要素、コメント、または処理命令)を返す。ノードがそのレベルで最後の兄弟である場合、Nothingを返す。
NodeType As msoCustomXMLNodeType:現在のノードのタイプを表すmsoCustomXMLNodeType定数を返す。
NodeValue As String:テキスト(すなわち、テキストノード、コメント、処理命令、属性)だけを含むノードの内部のテキストを得る/設定する。要素については、「要素ノードに対してNodeValueパラメータを設定することはできません」と共に失敗となる。
OwnerDocument As Variant:このノードに関連付けられたWord文書を表すDocument/Workbook/Presentationオブジェクトを返す。
OwnerStream As CustomXMLPart:このノードに関連付けられたデータストア項目を表すCustomXMLPartオブジェクトを返す。
PreviousSibling As CustomXMLNode:現在のノードの以前の兄弟ノード(要素、コメント、または処理命令)を返す。ノードがそのレベルで最初の兄弟である場合、Nothingを返す。
ParentNode As CustomXMLNode:現在のノードの親要素ノードを返す。ノードがルートレベルにある場合、Nothingを返す。
パラメータ:Child:削除しようとするコンテキストノードの子ノードを表すCustomXMLNodeオブジェクト。このノードがコンテキストノードの子でない場合、「このノードは、現在の要素の子でないため、削除することができません」というエラーメッセージと共に失敗となる。
指定された子ノードをストリームから除去する。得られるDOMが構造的に無効となる場合、「このオペレーションは、構造的に無効なDOMを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。
パラメータ:OldNode:置換しようとする子ノードを表すCustomXMLNode。Name:XML DOMに追加しようとする要素のベース名を表す文字列型。Namespace:XML DOMに追加しようとする要素の名前空間を表す、任意選択の文字列型。msoCustomXMLNodeElementまたはmsoCustomXMLNodeAttributeタイプのノードを追加するために必要とされ、そうでない場合には無視される。NodeType:作成するノードのタイプを指定する、任意選択のmsoCustomXMLNodeType。指定されない場合、msoCustomXMLNodeElementと仮定される。NodeValue:テキストを許す諸ノードについてノードの値を設定するために使用される、任意選択の文字列型。ノードがテキストを許さない場合、このパラメータは無視される。
指定された子ノード(およびそのサブツリー)をストリームから除去し、同じロケーション内で指定されたノードと置換する。OldNodeがコンテキストノードの子でない場合、「OldNodeは、現在のノードの子でなければなりません」というエラーメッセージと共に失敗となる。行われる置換が構造的に無効となる場合、「このオペレーションは、構造的に無効なDOMを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。また、追加されることになるノードが、すでに存在する属性である場合があれば、それを阻止する。すなわち、「すでに同じ名前の属性が現在の要素上に存在します。」
パラメータ:OldNode:置換しようとする子ノードを表すCustomXMLNode。XML:XML DOMに追加するためのサブツリーを表す文字列型。このXMLは、(名前空間宣言、単一のルートノードなどを含めて)適格なXML文書でなければならない。そうでない場合、「XMLサブツリーを文書に追加するためには、有効、適格なXMLを含まなければなりません」というエラーと共に失敗となる。
指定された子ノード(およびそのサブツリー)をストリームから除去し、同じロケーション内で指定されたXMLサブツリーと置換する。OldNodeがコンテキストノードの子でない場合、「OldNodeは、現在のノードの子でなければなりません」というエラーメッセージと共に失敗となる。行われる置換が構造的に無効となる場合、「このオペレーションは、構造的に無効なDOMを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。
パラメータ:XPath:DOMと突き合わせて評価するためのXPath式を含む文字列型。このXPathに関するプレフィックスマッピングは、NamespaceManagerプロパティから取り出される。XPathが解決されない場合、(埋込みXMLを有する本日のDocumentオブジェクトに対するメソッドに従って)どんなエラーが存在したとしても通過する。
このメソッドは、開発者がデータストア項目内から1組のノードを取り戻すことを可能にする。
パラメータ:XPath:DOMと突き合わせて評価するためのXPath式を含む文字列型。このXPathに関するプレフィックスマッピングは、NamespaceManagerプロパティから取り出される。XPathが解決されない場合、(埋込みXMLを有する本日のDocumentオブジェクトに対するメソッドに従って)どんなエラーが存在したとしても通過する。
このメソッドは、開発者がデータストア項目内から単一のノードを取り戻すことを可能にする。
Text As String:現在のノードについてテキストを得る/設定する。MSXMLと異なり、ノードに対してこれを設定することにより、そのノードのコンテンツが、指定された文字列で置換される−たとえば、fooのコンテンツが次のように見える非リーフ要素<foo>上でそれを「テスト」に設定する。
失敗とはならないが、内部ではデータストアに対して、また外部ではデータストアのクライアントに対してメッセージが異なることになる。行われる置換が構造的に無効となる場合、「このオペレーションは、構造的に無効なDOMを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。
XML As String:現在のノードおよび(あれば)その子の生のXML表現を返す。
XPath As String:現在のノードについて正規化されたXPathを有する文字列型を返す。ノードがもはやDOM内にない(削除されている)場合、「このノードは、関連するカスタムXML部分から削除されています」と共に失敗となる。
New Enums:
msoCustomXMLDataNodeTypeは、使用可能なXMLノードのタイプを表す。msoCustomXMLNodeAttributeは、XML属性ノードを表す。msoCustomXMLNodeCDataは、CDATAノードを表す。msoCustomXMLNodeCommentは、XMLコメントノードを表す。msoCustomXMLNodeDocumentは、XML文書(/)ノードを表す。msoCustomXMLNodeElementは、XML要素ノードを表す。msoCustomXMLNodeProcessingInstructionは、XML処理命令ノードを表す。msoCustomXMLNodeTextは、テキストノードを表す。
パラメータ:Child:削除しようとするコンテキストノードの子ノードを表すCustomXMLNodeオブジェクト。このノードがコンテキストノードの子でない場合、「このノードは、現在の要素の子でないため、削除することができません」というエラーメッセージと共に失敗となる。Name:XML DOMに追加しようとする要素のベース名を表す文字列型。Namespace:XML DOMに追加しようとする要素の名前空間を表す、任意選択の文字列型。msoXMLNodeElementまたはmsoXMLNodeAttributeタイプのノードを追加するために必要とされ、そうでない場合には無視される。NodeType:作成するノードのタイプを指定する、任意選択のmsoXMLNodeType。指定されない場合、msoXMLNodeElementと仮定される。NodeValue:テキストを許す諸ノードについてノードの値を設定するために使用される、任意選択の文字列型。ノードがテキストを許さない場合、このパラメータは無視される。
指定された子ノード(およびそのサブツリー)をストリームから除去し、同じロケーション内で指定されたノードと置換する。行われる削除が構造的に無効となる(また、スキーマエンフォースメントがオンにされる)場合、「このオペレーションは、構造的に無効なDOMを引き起こすため、実行することができません」というエラーメッセージと共に失敗となる。
XMLNamespace:スキーマライブラリ(Schema Library)内の、単一、一意の名前空間を表すオブジェクト。
パラメータ:CustomXMLPart:所望のストリームについてのCustomXMLPartオブジェクト、またはCustomXMLPartsコレクション内のそのストリームのインデックスとすることができるバリアント型。
このXML名前空間についてのスキーマを所与のCustomXMLPartに添付する。
XMLSchemaReference:現在の文書内で参照される、単一、一意の名前空間を表すオブジェクト。
Delete() As Void:名前空間−ならびにその名前空間内の要素すべて−をCustomXMLPartから除去する。しかし、この場合には、構造スキーマエンフォースメントがイネーブルであり、これらの要素を除去することにより、構造的に無効なDOMが生じるため、データストアは、このオペレーションを拒絶することができる。この場合には、失敗となり、「このオペレーションは、スキーマエンフォースメントがイネーブルである間には、得られるストリームが構造的に無効になるため、実行することができません」というエラーが出る。
パラメータ:Name:XML DOMに追加しようとする要素のベース名を表す文字列型。Namespace:XML DOMに追加しようとする要素の名前空間を表す、任意選択の文字列型。msoXMLNodeElementまたはmsoXMLNodeAttributeタイプのノードを追加するために必要とされ、そうでない場合には無視される。Parent:このノードをその下に追加すべきノードを表す、任意選択のCustomXMLNode。.Attributesプロパティによって返されるCustomXMLNodesコレクションから呼び出された場合には、その属性の親ノードと仮定される。任意の他の場合に呼び出された場合には、このパラメータは、指定され、または「このノードを文書に追加するためには、親ノードを指定しなければなりません」というエラーを返す。NextSibling:新しいノードの隣の兄弟になるべきノードを表す、任意選択のCustomXMLNode。指定されない場合、そのノードは、親ノードの子の端部に追加される。msoXMLNodeAttributeタイプの追加について無視される。NextSiblingが親の子でない場合、「このノードは、隣の兄弟ノードが親ノードの子でないため、追加できません」というエラーを返す。NodeType:作成するノードのタイプを指定する、任意選択のmsoXMLNodeType。指定されない場合には、.Attributesプロパティから呼び出されない限りmsoXMLNodeElementと仮定され、その場合にはmsoXMLNodeAttributeと仮定される。NodeValue:テキストを許す諸ノードについてノードの値を設定するために使用される、任意選択の文字列型。ノードがテキストを許さない場合、このパラメータは無視される。
XMLノードをデータストア項目に追加するためのジェネリックメソッド。.Attributesプロパティによって返されるCustomXMLNodesオブジェクトから呼び出された場合には、Parentは、その親ノードのデフォルトを有し、NodeTypeは、msoXMLNodeAttributeのデフォルトを有する。他の場合すべてにおいては、Parentが必要とされ、NodeTypeのデフォルトはmsoXMLNodeElementである。行われる追加が構造的に無効となる(また、スキーマエンフォースメントがオンにされる)場合、「このオペレーションは、構造的に無効なデータストリームを引き起こすため、スキーマエンフォースメントがオンである間、実行することができません」というエラーメッセージと共に失敗となる。名前空間がスキーマ参照コレクション内にない場合、失敗となり、「この要素を追加するためには、最初にそのスキーマをデータストリームに添付しなければなりません」というエラーメッセージ。
CustomDataXMLSchemaReferences():CustomXMLPart内で識別される一意の名前空間のすべてを表すコレクション。注:デフォルトでは、XMLファイル内で宣言された各名前空間についてのエントリでこれを占有する。
パラメータ:NamespaceURI:スキーマコレクションに追加しようとするスキーマによって定義される名前空間を含む文字列型。Alias:このスキーマをスキーマライブラリに追加するとき書き込むための別名を含む文字列型。FileName:スキーマライブラリに追加すべきスキーマへのパスを含む文字列型。InstallForAllUsers:スキーマライブラリ(Schema Library)キーをHKCU(デフォルト)に追加すべきか、それともHKLMに追加すべきか判定するブール型。
このメソッドは、スキーマ参照を追加する。これを行うために、適切な名前空間宣言がファイル内にまだ定義されていない場合、それをCustomXMLPartのルート要素に追加する。オープン時、宣言済みの名前空間すべてが、このコレクションを占有するために使用される。
EnforceStructure As Boolean:データストアが、関連するCustomXMLPartに対して、そのスキーマに従って構造的な有効性を押し付けるべきかどうかに対応するブール型を得る、また設定する。CustomXMLPartのコンテンツが有効でない間に、ユーザがこのプロパティを真に設定しようと試みた場合、「このデータストリームのコンテンツが構造的に無効である間、スキーマエンフォースメントをオンにすることができません」というエラーを返す。
Count As Long:このCustomXMLPart内で現在参照されている名前空間の数を返す。
パラメータ:Index:以下の2つのタイプのうちの1つ、すなわち、コレクション内の所望のCustomDataXMLSchemaReferenceのインデックスを表す長整数型、および、コレクション内の所望のCustomDataXMLSchemaReferenceの名前空間を表す文字列型とすることができるバリアント型。
これはCustomDataXMLSchemaReferencesオブジェクトのデフォルト数であり、要求されたオブジェクトに対応するXMLSchemaReferenceオブジェクトを返す。
Validate() As Void:このメソッドは、CustomDataXMLSchemaReferencesコレクション内のスキーマすべてに突き合わせてストリーム全体を妥当性検証する。個々のノード上でエラーがレポートされる(ValidationStatusプロパティ参照)。
パラメータ:NewCustomXMLNode:CustomXMLPartにちょうど追加されたノードに対応するCustomXMLNodeオブジェクト。注:このノードは、(サブツリーが文書にちょうど追加された場合)子を有することができる。InUndoRedo:ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
このイベントは、XMLノードが現在の文書に追加されようとするときいつでも起こる。この追加オペレーションが、XML文書のサブツリーがCustomXMLPart内に追加されることを含む場合、このイベントをその変更における最高位のノードについて1回起こす。このイベントは、データストアにメッセージされる各変更について1回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。
パラメータ:OldCustomXMLNode:CustomXMLPartから除去しようとするノードに対応するCustomXMLNodeオブジェクト。注:このノードは、(サブツリーが文書から除去されつつある場合)子を有することができる。InUndoRedo:ノードがユーザによってUndo/Redoアクションの一部として追加された場合、真を返し、そうでない場合には偽を返すブール型。
このイベントは、XMLノードがデータストア内の現在の項目から削除されるときいつでも起こる。この削除オペレーションが、CustomXMLPart内のXML文書のサブツリーを含む場合、このイベントをその変更における最高位のノードについて1回起こす。このイベントは、データストアにメッセージされる各変更について1回起こり、その結果、このイベントによって表される変更の副作用もまた、そのイベントをトリガする。イベントハンドラが、このノードの下にある何らかのものを修正しようと試みた場合、「このノードは削除されようとしているため、この変更は許されません」というエラーメッセージと共に失敗となる。
上記の仕様、例、およびデータは、本発明の構成の製造および使用について完全に述べている。本発明の多数の実施形態は、本発明の精神および範囲から逸脱することなしに成すことができるため、本発明は、以下に添付されている特許請求の範囲内にある。