説明

データをバインドするためのプログラマビリティ

【課題】データをバインドするためのプログラマビリティを提供すること。
【解決手段】データバインディングインターフェースをエクスポーズし、データバインディングインターフェースに関連付けられたメソッド、プロパティ、またはイベントを用いる。そこでは前記メソッド、プロパティ、または前記イベントは、データバインディング、データ、またはデータバインディングに関連付けられた他のオブジェクトの操作を可能にするオブジェクトを返す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データをバインディング(結合)する情報処理技術に関する。
【背景技術】
【0002】
マークアップ言語は、近年幅広い支持を受けている。マークアップ言語の一種である拡張可能マークアップ言語(XML)は、様々な種類のデータを識別、交換、処理する方法を提供する汎用言語である。例えば、XMLは、様々なアプリケーションプログラムで利用可能な文書を作成するために用いられる。XMLファイルの要素は、一般に、関連付けられた名前空間およびスキーマを有する。
【0003】
名前空間は、XML文書において要素/属性の名前および型を定義するために用いられる名前の集合体に対する一意識別子である。名前空間の名前は、XML文書の各クラスを一意識別するためによく用いられる。一意の名前空間は、名前が同じでもソースが異なるマークアップ要素を区別する。
【0004】
XMLスキーマは、XML環境においてデータを記述および検査する方法を提供する。スキーマは、XML文書において、どの要素および属性を用いてコンテンツを記述するか、各要素はどこで可能か、そこではどのようなタイプのコンテンツが可能か、および他のどの要素内にどの要素が含まれることが可能かを指定する。スキーマを用いると、文書が、一貫性のある予測可能な様式で構造化される。スキーマは、ユーザによって作成可能であり、一般に、XMLなどの関連付けられたマークアップ言語でサポートされることが可能である。ユーザは、XMLエディタを用いて、XMLファイルを操作することが可能であり、ユーザが作成したスキーマに付随するXML文書を生成することが可能である。従来のワードプロセッサアプリケーションでは、カスタムXMLスキーマのサポートがアプリケーションに追加されていて、ユーザはカスタムXMLマークアップ(例えば、<title>)を用いて文書のコンテンツに「タグ」を付けることが可能であった。タグ付けは、基本的に、それまで未格付けの一連のテキストであったものにセマンティクス上の意味を与える。このことは、それまで単なる書式付きテキストであって、他のアプリケーションで処理されることが無意味であった文書が、他の任意のXML対応アプリケーションでの検索および認識が可能な、任意のユーザ定義XMLスキーマの中の特定のXMLマークアップ断片を含む構造化XML文書になりうることを意味していた。
【0005】
基本的な例を示すと、文書の先頭にあるテキストは、ユーザ定義XMLスキーマの中にある<title>XML要素によってタイトルとして「タグ付け」されることが可能であり、このことは、他のXML対応アプリケーションが、タグ付けされた範囲のテキストに「タイトル」が含まれることを容易に認識し、それを適切に抽出することが可能になることを意味する。これにより、バックエンド処理において、適切なセマンティクスおよびコンテキストを有する、文書の一部(例えば、<title>(タイトル)であるテキスト)をインテリジェントに抽出することが可能になる。
【0006】
ただし、従来のワードプロセッサアプリケーションに関連付けられる弱点は、カスタムXMLマークアップの追加および持続性が文書の提示と結びついている事実にある。すなわち、既存の実施態様では、ワードプロセッサ文書のXMLマークアップ(例えば、XML書式で表現された顧客納品伝票の細目)と、その、文書表面における提示(例えば、3つのパラグラフのプレーンテキストと、それに続く、特定の表スタイルを有する5列4行の表)との間には厳然たる結び付きがある。したがって、従来のワードプロセッサアプリケーションで表現されるXMLデータは、それが提示と結びついているので、文書のコンテンツと完全に一致していなければならない例えば、納品伝票のXMLスキーマが、<date>が<address>の前であり、<address>が<phoneNumber>の前であるように指定していれば、これら3つのXML要素は、文書内で提示される順序と一致した順序で存在していなければならない。つまり、提示書式を変更する(例えば、<date>を囲んでいるテーブル行を移動する)場合は、その文書に含まれるXMLデータの構造を変更することも必要になり、ソリューション開発者の側では、このデータが、関連付けられているXMLスキーマの構造に合致していることを確認するステップが余計に必要になる。したがって、この文書のエンドユーザは提示を勝手に操作することができない。勝手に操作すると、データのセマンティクスも変わってしまい、そのデータのXMLスキーマに違反する可能性があるからである。
【0007】
さらに、従来のワードプロセッサアプリケーションの上位で開発されるソリューションは、バックエンドアプリケーションで用いられる文書に対してデータの読み出し/書き込みを行う場合には、提示の意味合いをより注意深く考慮する必要がある。したがって、例えば、太字のテキストのパラグラフがタイトルとしてタグ付けされたとすると、結果として従来のワードプロセッサアプリケーションで保存されるXMLは、次のようになるであろう。
【0008】
【表1】

【0009】
上述のように、カスタムXMLタグは、その両側を、従来のワードプロセッサアプリケーションの専用XMLタグ(この例ではw:p、w:rなど)で囲まれる。つまり、このデータを処理しようとするXML対応ソリューションは、(<Title>要素を含む)自身のデータ書式だけを認識していればよいわけではなく、従来のワードプロセッサアプリケーションの書式の詳細も完全に認識していなければならない。それによって、XML対応ソリューションは、自身のデータの検索時に、従来のワードプロセッサアプリケーションの書式情報をトラバースして無視することが可能である。したがって、この種の実施態様では、依然としてユーザに何らかの要求が課される。なぜなら、文書内のテキストの外見を少々変更する(例えば、<Title>要素のコンテンツをテーブルセル内へドラッグする、など)だけでも、それを囲む、ワードプロセッサのネイティブタグ内のカスタムXMLタブの位置が大きく変わる可能性があるからである。したがって、プログラマ/コード開発者は、従来のワードプロセッサアプリケーションがカスタムXML要素をどこに配置しようとしているかを提示に基づいて予想および認識し、様々な並べ替えをすべて処理するための追加コードを書く必要がしばしばある。つまり、結果のソリューションは、特定の従来のワードプロセッサアプリケーションの要求を処理する論理コードをかなり多く含む必要が依然としてある可能性がある。
【0010】
従来のワードプロセッサアプリケーションに関して作業を行うプログラマ/コード開発者は、さらに、読み出しおよび書き込みの操作を検討する場合に文書のレイアウト書式の意味合いを考慮する必要がある。例えば、ユーザは、ユーザが企業報告書を書く際のシンプルな強調として、<StockSymbol>要素の値を取得し、それを用いて同じ文書の<CompanyName>要素内に会社のフルネームを配置することを試みる場合がある。文書の整合性を維持するために、プログラマ/コード開発者は、文書における所望のデータの読み出しと書き込みの両方について、文書の現在のレイアウト書式を考慮しなければ、それらのアクションを実行する機能コードを書くことができなかった。例えば、ユーザは、文書に挿入された場合に所望の結果を生成する、従来のワードプロセッサアプリケーションの書式情報を構築するために、書き込む値がテーブルセルや箇条書きリストなどに入っているかどうかを知る必要があったであろう。これは、ワードプロセッサアプリケーションの提示のセマンティクスを認識するために追加コーディングが必要な別の潜在的理由である。
【0011】
従来のワードプロセッサアプリケーションのさらに別の制限は、XML要素の編集動作が「脆弱」であると感じられる場合があることである。これは、部分的には、上述のように、XMLデータの構造が、ユーザ定義スキーマに基づいて、文書表面上のタグの位置によって決まるという事実によって、XML要素の編集動作が制限されることによる。そのことによって、いくつかの問題が生じる可能性がある。第1に、一般的なユーザ操作(例えば、セクション間でのコピー/貼り付け)によって、XML構造が変わり、文書が、関連付けられたXMLスキーマに準拠しない表現になる可能性がある。第2に、そのようなワードプロセッサの実施態様では、顧客定義XMLスキーマに必要なすべての要素が、何らかの形で文書表面に含まれる必要がある。したがって、開発者は、文書表面には表現されないが、メタデータとしてさらに動作する、文書に関する追加情報を持ち運ぶ方法として、関連付けられるXMLデータを作成することが困難な場合がある。そして第3に、文書表面においてセマンティクス上は不要な要素(例えば、混合内容をマークアップしない非リーフ要素)もそのようなワードプロセッサの実施態様に含める必要があり、そのために、一般的なユーザ操作によってXMLデータが変わる可能性がさらに高まる。
【発明の概要】
【発明が解決しようとする課題】
【0012】
多くの場合、XMLデータ(例えば、メモ文書を含むデータ)を定義するスキーマは、複数の異種処理システム間でのXMLデータの伝達を促進するために、単一の標準化団体によって厳密に定義される傾向にある。ただし、そのようにバックエンド通信を促進させると、人間が文書データを読み取り、編集することが可能であることがしばしば犠牲になり、ユーザがそのデータを認識および解析することが困難になる。例えば、XML標準では、dd−mm−yyyyThh:mm:ss.ssssなどのように日付の標準書式を定義することが可能である。XML対応アプリケーションで解析されるためには、すべての日付がこの書式で表現されていなければならない。明らかに、ユーザがこの書式を正確に入力することは困難であり、ユーザが日付を入力する場合の一般的な方法と相容れない可能性が高い(例えば、多くのロケールでは、dd−mm−yyyyよりmm−dd−yyyyを用いるほうが一般的である)。
【0013】
したがって、開発者が、XMLデータと、ワードプロセッサアプリケーションなどのアプリケーションでのそのようなデータの提示とを分離可能にする方法が必要である。
【課題を解決するための手段】
【0014】
本発明の実施形態は、データと提示とが分離可能なワードプロセッサ文書を作成する、スキーマを含むワードプロセッサアプリケーションを提供する。より詳細には、ワードプロセッサ文書にデータを入力したり、ワードプロセッサ文書からデータを抽出したりすることが可能であり、これらのデータは、ワードプロセッサ文書の提示書式とは別の場所に格納される。本発明の実施形態によれば、このワードプロセッサアプリケーションのユーザは、ワードプロセッサ文書データの独立した保管場所を作成し、そのデータのコンテンツと提示表面との間にリンク(バインディング)を確立することが可能である。
【0015】
本発明の実施形態によれば、オブジェクトモデルは、プログラミング環境においてコードを開発することを可能にする。コードを用いて、アプリケーション内の1つまたは複数のデータバインディングを操作することが可能である。さらに、XMLデータのコンテンツ領域またはノードの、両方向の変化に反応するコードを、プログラミング環境において開発することが可能である。ファイルコンテンツとデータストア内のコンテンツとの間の関係を定義するコードを開発することが可能である。さらに、ファイルの境界領域内またはデータストア内の変化に反応して、編集、追加、削除などのイベントをトラップまたはインターセプトするコードを開発することが可能である。本発明の実施形態によれば、ユーザが、関連付けられたXMLでコードを一度書くだけで、そのコードは、ターゲットアプリケーションの正確なセマンティクスを意識することなく、XML構造体の使用をサポートするファイルタイプに移植することが可能になり、それによって、アプリケーション開発が大幅に簡略化かつ合理化される。
【図面の簡単な説明】
【0016】
【図1】本発明の一例示的実施形態で使用可能な例示的コンピューティング装置を示す図である。
【図2】本発明を実施するための例示的環境を示すブロック図である。
【図3】本発明の実施形態によるフロー図である。
【図4】本発明を実施するための別の例示的環境を示すブロック図である。
【発明を実施するための形態】
【0017】
本明細書および特許請求項を通して、以下の用語は、文脈上明らかに別の意味でない限り、以下の内容に明示的に関連付けられる意味をとる。
【0018】
用語「データ」は、ワードプロセッサ文書によって運ばれるか、参照されるか、使用される、任意の補足情報を意味する。この情報は、大きいことが多く、その全体が文書の提示層に露出されることはまずない。
【0019】
用語「マークアップ言語」または「ML」は、文書内にあって、文書の各部分がアプリケーションによってどのように解釈されるべきかを指定する特殊なコードのための言語を意味する。ワードプロセッサファイルでは、マークアップ言語は、テキストがどのように書式化またはレイアウトされるべきかを指定する。
【0020】
用語「要素」は、XML文書の基本単位を意味する。要素は、XML文書の属性、他の要素、テキスト、および他のコンテンツ領域を含むことが可能である。
【0021】
用語「提示」は、文書の可視部分、すなわち、文書が印刷された場合に見えているであろうテキストおよびレイアウトを意味する。
【0022】
用語「タグ」は、文書に挿入されて、XML文書内の要素を説明する文字を意味する。各要素は、タグを2つだけ有することが可能である。すなわち、開始タグと終了タグである。(コンテンツがない)空要素を有することも可能であり、その場合は、タグが1つでもよい。
【0023】
タグとタグとにはさまれたXMLコンテンツは、要素の「子」(または子孫)と見なされる。そこで、要素のコンテンツに埋め込まれた他の要素を「子要素」または「子ノード」または要素と呼ぶ。要素のコンテンツに直接埋め込まれたテキストは、要素の「子テキストノード」と見なされる。要素内の子要素とテキストとは、ともに、その要素の「コンテンツ」を構成する。
【0024】
用語「属性」は、特定の値に設定され、要素に関連付けられた追加特性を意味する。要素は、それらに関連付けられた、(ゼロを含む)任意の数の属性設定を有することが可能である。属性は、追加要素を含まない要素か、テキストノードとして扱われる要素に追加情報を関連付けるために用いられる。
【0025】
用語「コンテンツ領域」は、ユーザによって入力されたコンテンツのタイプのコンテナとして動作する、境界を定められた、かつ/または、任意にラベル付けされた、文書の領域を意味する。そのすべてが参照により本明細書に組み込まれている、本願の譲受人による2004年9月30日申請、「Methods, System, and Computer-Readable Medium For Managing Specific Types of Content In An Electronic Document」米国特許出願第10/955612号明細書を参照されたい。
【0026】
「XPath」は、パターン式を用いてXML文書内のノードを識別する演算子である。XPathパターンは、XML文書内のパスを記述する、スラッシュで区切られた、子要素名のリストである。パターンは、パスに対応する要素を「選択」する。
【0027】
用語「XMLデータストア」は、ワードプロセッサ文書内にあって、ファイルが開いている間に、ワードプロセッサ文書内に保存されている(例えば、XML書式の)データの記憶および修正のためのアクセスを提供するコンテナを意味する。
【0028】
用語「データバインディング」は、ワードプロセッサ文書内のXMLデータの1つまたは複数の断片における、コンテンツ領域のコンテンツを格納することが可能な、XPathの場所を決定する、コンテンツ領域に関する特性を意味する。本明細書では以下のように用いる。
【0029】
「ref」− 個々のバインディングによって用いられる後続の特性の集合の中央保管場所を参照するための一意の整数を意味する(ファイル中の文書を開く場合/文書をファイルに保存する場合に用いられる)。
【0030】
「ID」− XMLデータストア内の特定のXMLデータを指定する一意のIDを意味する。
【0031】
「selectionNamespaces」− XMLデータストア内の関連付けられたXML文書に関するプレフィックスマッピング(名前空間を短縮形に関連付けるマッピング)を意味する。
【0032】
「rootURI」− XMLデータストア内の関連付けられたXML文書のルート名前空間を意味する。
【0033】
例示的動作環境
本発明の実施形態は、XMLデータと提示の記憶場所の分離が可能なワードプロセッサ文書を作成するワードプロセッサアプリケーションを提供する。より詳細には、ワードプロセッサ文書に入力されたり、ワードプロセッサ文書から抽出されたりすることが可能なデータを、ワードプロセッサ文書の提示書式とは別の場所に格納する。したがって、このワードプロセッサアプリケーションのユーザは、ワードプロセッサ文書内に含まれるXMLデータの独立した記憶場所を作成することが可能であり、そのデータのコンテンツと提示表面との間にリンク(バインディング)を確立することが可能である。これにより、ユーザは、提示のコンテンツを編集することによって、関連付けられたXMLデータを編集することが可能になるが、同様に、ユーザは、関連付けられたXMLデータの構造を変更することが不可能になる。例えば、納品伝票のデータを、ワードプロセッサファイル書式のXMLとして独立に保存できるので、文書内でリンクの場所を移動しても、独立したデータストアの構造は変わらない。したがって、この構造化データは、ユーザが文書をどのように編集するかに左右されない既知の構造を有するため、バックエンド処理がより容易になる。ユーザは、ワードプロセッサ文書において、データの編集、リッチ提示書式を含むデータの書式化などを行うことができ、テキストコンテンツの変更内容だけが、文書の背後に保存されているXMLデータに「プッシュ」バックされる。ただし、本発明によれば、ユーザとワードプロセッサ文書との対話によって作成されている、更新されたデータはすべて、XMLのオリジナルネイティブストリームの形で使用可能である。したがって、本発明によれば、リンクされたXMLデータを直接変更することによってワードプロセッサ文書のコンテンツを修正することも可能であり、その場合は、前述のとおり常に変化している可能性のある、そのデータの複雑な提示書式に関わる必要はない。これにより、ワードプロセッサ文書内での構造化データの追加、編集、抽出が大幅に簡略化される。
【0034】
図1に示されるように、本発明を実施する一例示的システムは、コンピューティング装置100のようなコンピューティング装置を含む。非常に基本的な構成では、コンピューティング装置100は、一般に、少なくとも1つの処理ユニット102とシステムメモリ104とを含む。コンピューティング装置の厳密な構成およびタイプに応じて、システムメモリ104は、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、または両者の何らかの組合せであってよい。システムメモリ104は、一般に、オペレーティングシステム105、1つまたは複数のアプリケーション106を含み、プログラムデータ107を含むことが可能である。一実施形態では、アプリケーション106は、ワードプロセッサアプリケーション120を含むことが可能である。これらの基本的な構成は、図1では、破線108内のコンポーネントで示されている。
【0035】
コンピューティング装置100は、さらに特徴または機能性を有することが可能である。例えば、コンピューティング装置100はさらに、(リムーバブルおよび/または非リムーバブルの)補助データ記憶装置(例えば、磁気ディスク、光ディスク、テープなど)を含むことが可能である。そのような補助記憶装置は、図1では、リムーバブル記憶装置109および非リムーバブル装置110で示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造体、プログラムモジュール、他のデータなどの情報を記憶する任意の方法または技術において実装される揮発性および不揮発性、リムーバブルおよび非リムーバブルの媒体を含むことが可能である。システムメモリ104、リムーバブル記憶装置109、および非リムーバブル記憶装置110は、すべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体として、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリテクノロジ、CD−ROM、デジタル多用途ディスク(DVD)、または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、または他の任意の、所望の情報を格納するために使用可能であってコンピュータ装置100からのアクセスが可能である媒体が含まれ、これらに限定されない。そのようなコンピュータ記憶媒体のどれもが、装置100の一部になりうる。コンピュータ装置100はさらに、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置112を有することが可能である。ディスプレイ、スピーカ、プリンタなどの出力装置114も含まれることが可能である。これらの装置は当該技術分野において周知であるので、本明細書で長々と説明する必要はない。
【0036】
コンピューティング装置100はさらに、ネットワークを経由するなどして、他のコンピューティング装置118と通信するための通信接続116を含むことが可能である。通信接続116は、通信媒体の一例である。通信媒体は、一般に、搬送波などの変調データ信号や他の搬送メカニズムの形でのコンピュータ可読命令、データ構造体、プログラムモジュール、または他のデータによって実施されることが可能であり、任意の情報配信媒体を含む。用語「変調データ信号」は、その1つまたは複数の特性が、信号内の情報をエンコードするように設定または変更される信号を意味する。例えば、通信媒体は、有線ネットワークや直接有線接続などの有線媒体と、音響、RF、赤外線、その他の無線媒体とを含み、これらに限定されない。本明細書で用いられる用語「コンピュータ可読媒体」は、記憶媒体と通信媒体の両方を含む。
【0037】
コンピューティング装置100のシステムメモリ104には、いくつかのプログラムモジュールおよびデータファイルを保存することが可能であり、これには、ネットワーク接続されたパーソナルコンピュータの動作の制御に好適なオペレーティングシステム105(MICROSOFT Corporation of Redmond、WashingtonのWINDOWS(登録商標)XPオペレーティングシステムなど)が含まれる。システムメモリ104はさらに、ワードプロセッサアプリケーション120などの1つまたは複数のプログラムモジュールと、後述する他のものとを格納することが可能である。ワードプロセッサアプリケーション120は、電子文書を作成、編集、処理する機能性を提供するように動作可能である。
【0038】
本発明の一実施形態によれば、ワードプロセッサアプリケーション120は、MICROSOFT Corporation製のWORDプログラムを含む。しかしながら、他の製造元によるワードプロセッサアプリケーションプログラムも、本発明の様々な態様を実施するために利用可能であることを理解されたい。さらに、本発明の様々な態様は、ワードプロセッサアプリケーションプログラム向けに限定されず、様々な形式のコンテンツ(例えば、テキスト、イメージ、ピクチャなど)を処理することが可能な他のアプリケーションプログラム106(スプレッドシートアプリケーションプログラム、データベースアプリケーションプログラム、プレゼンテーションアプリケーションプログラム、ドローイングアプリケーションプログラム、コンピュータ支援アプリケーションプログラムなど)も利用可能であることを理解されたい。
【0039】
本発明の実施形態は、コンピュータプロセスとして、コンピューティングシステムとして、あるいは、コンピュータプログラム製品やコンピュータ可読媒体のような製造物として実施されることが可能である。コンピュータプログラム製品は、コンピュータシステムによって可読なコンピュータ記憶媒体であって、コンピュータプロセスを実行する命令のコンピュータプログラムをエンコードしたものであることが可能である。コンピュータプログラム製品はまた、コンピュータシステムによって可読な、キャリア上の伝搬信号であって、コンピュータプロセスを実行する命令のコンピュータプログラムをエンコードしたものであることも可能である。
【0040】
ワードプロセッサアプリケーションにおけるデータのバインディング
図2は、本発明の実施形態を実施するための例示的環境を示すブロック図である。図2に示される例示的環境は、ワードプロセッサ環境200であって、これは、ワードプロセッサアプリケーション202と、ワードプロセッサ文書204と、プログラミング環境206と、データストア208と、スキーマファイル210と、XML処理モジュール212とを含む。しかし上述のように、本発明は、様々な形式のコンテンツ(例えば、テキスト、イメージ、ピクチャなど)を処理することが可能な他のアプリケーションプログラム106(スプレッドシートアプリケーションプログラム、データベースアプリケーションプログラム、プレゼンテーションアプリケーションプログラム、ドローイングアプリケーションプログラムまたはコンピュータ支援アプリケーションプログラムなど)にも適用可能である。プログラミングモジュール206は、XML処理モジュール212のためのシンプルなアプリケーションプログラミングインターフェース(API)を提供することが可能であり、これによって、文書204のコンテンツまたはXMLデータストア208のコンテンツを修正するコードの開発が可能になる。本発明は、本明細書に記載の特定の実施形態または実施例に限定されることを意図したものではないことが理解されよう。例えば、このワードプロセッサ環境は、複数のワードプロセッサ文書204、データストア208、および/またはスキーマファイル210を含むことが可能である。本発明の実施形態によれば、XML処理モジュール212は、拡張可能マークアップ言語に従って書式化されたデータを処理するために、ワードプロセッサアプリケーション202によって用いられる。好適なXML処理モジュール212は、MICROSOFT Corporation of Redmond、Washingtonによって製造および販売されるMSXMLである。
【0041】
ワードプロセッサアプリケーション202は、自身の1つまたは複数の名前空間と、ワードプロセッサアプリケーション202に関連付けられた1つまたは複数の文書204に用いられるために定義されたスキーマ210またはスキーマの集合とを含む。ワードプロセッサアプリケーション202のためにスキーマ210によって定義されるタグおよび属性の集合は、文書204の書式を定義する。後述されるとおり、かつ、本発明の実施形態によれば、データストア208は、データ209を含むことが可能である。スキーマ210は、データストア208内でデータ209にアタッチされることが好ましい。ワードプロセッサ文書204はさらに、後述されるようにユーザによって作成されたコンテンツ領域207も含む。複数のデータストア208、関連付けられたXMLデータ209、およびスキーマ210を、ワードプロセッサアプリケーション202の一部として含めることが可能である。所与のXMLデータ209に含めることが可能なデータの型および構造を管理する文法規則およびデータ型規則の集合をXMLデータ209に与えるために、ユーザが所与のXMLデータ209に注釈を付ける場合に用いるXML要素およびXMLタグのそれぞれを管理する規則を与える1つまたは複数のXMLスキーマ210を、XMLデータ209に関連付けることが可能である。スキーマ210は、それらの要素がXMLデータ209に適用される場合の順序を管理する規則と、XMLデータ209に適用される個々の要素に関連付けられた特定の規則とを含む。
【0042】
本発明の実施形態は、ワードプロセッサ文書とともに保存される独立したデータストア208の存在によってデータと提示とを分離することが可能なワードプロセッサ文書204を作成するように動作可能なワードプロセッサアプリケーション202を提供する。より詳細には、ワードプロセッサ文書204に入力されたり、ワードプロセッサ文書204から抽出されたりすることが可能なデータを、その文書のデータストア208内の1つまたは複数のXMLデータ209ファイルに格納することによって、ワードプロセッサ文書204の提示書式からデータを分離する。したがって、ワードプロセッサアプリケーション202のユーザは、ワードプロセッサ文書204のデータの独立した記憶場所を作成することが可能であり、そのデータのコンテンツと提示表面203との間に、1つまたは複数のコンテンツ領域207に関連付けられたリンク(バインディング)205を確立することが可能である。これにより、ユーザは、提示のコンテンツを編集することによって、データを編集することが可能になるが、同様に、ユーザは、データ209の構造を変更することが不可能になる。文書204内でコンテンツ領域207の場所を移動しても、独立したデータストア208にあるXMLデータ209の構造は変わらない。さらに、データの提示(太字、斜体、位置合わせなど)を変更しても、データ構造には影響しない。したがって、この構造化データは、バックエンド処理が簡略化される。それは、XMLデータ209が、ユーザが文書204をどのように編集するかに影響されない既知の構造に対応するためである。
【0043】
本発明の実施形態によれば、リンクされたデータを直接変更することによってワードプロセッサ文書204のコンテンツを修正することが可能であり、その場合は、常に変化している可能性のある、複雑な提示書式に関わる必要はない。これにより、ワードプロセッサ文書204内での構造化データの追加、編集、抽出が大幅に簡略化される。さらに、構造化XMLデータ209にバインドされているデータバインディング205を、データの構造に影響を及ぼすことなく、文書204内で移動することが可能である。コンテンツ領域207内のデータバインディング205は、ユーザインターフェースまたはプログラミングウィンドウ206で定義可能なXPath式を用いて有効化されることが好ましい。
【0044】
ユーザは、XPath式(XMLツリー内でノード213を識別する、標準的なXMLメソッド)を用いて、文書コンテンツ領域がバインドされる、所望のXMLノード213を一意識別する。ワードプロセッサアプリケーション202は、データバインディング領域に対する所望のターゲットへのXPathを自動的に解析および使用するよう動作する。このことはさらに、XPath標準に慣れている開発者であれば、このXMLの使い道を活用して、半動的な性質を有するデータバインディング205を作成することが可能であることを意味する。すなわち、データ209に対する別の変更または提示203に対する変更に基づいて別のターゲットノード213を識別すること。例えば、ユーザが、所定の期間に最も多くの売上を達成した社員の名前を表示したいとする。この情報が、文書204に関連付けられたXMLデータ209内にあった場合、ユーザは、最多数の完了明細書を有する個人の名前にリンクするXPath式を作成することが可能であり、そのリンクは、データが変化するにつれて自動的に該当場所(ノード213)に移動する。また、コード211の使用、ユーザインターフェース、またはプログラミング環境206により、このリンクをノード213間で変更することも可能である。
【0045】
代替として、ユーザは、データ209内の、文書コンテンツ領域207がバインドされることが可能なノード213を表すオブジェクトを一意識別するデータバインディングを作成することが可能である。ワードプロセッサアプリケーション202は、データバインディング領域に対する所望のターゲットへのXPathを自動的に決定するよう動作する。ただし、これは、この場合には、データバインディング205が、同じXPath式に対して同じオブジェクトを確実にポイントするように、データバインディング205がそのXPathを自動的に更新されるようにしていることを意味する。
【0046】
前に簡単に触れたように、プログラミングコード211は、XML処理モジュール212を利用するために開発されることが可能であり、いずれの方向(すなわち、文書表面203のコンテンツ領域207からデータストア208のXMLデータ209内のノード213への方向、およびその逆の方向)の移動による変化にも反応することが可能である。ユーザは、データストア208内で文書表面203と特定コンテンツとの間の関係を定義するコード211を開発することが可能である。さらに、文書204の境界領域内またはデータストア208内での変化に反応して、編集、追加、削除などのイベントをトラップまたはインターセプトするコード211を開発することが可能である。例えば、ユーザが、特定のタイトルを使用できる文書の数をせいぜい1つにしたいと考えているとする。タイトルノードに入力された内容に基づくコード211は、そのタイトルが既に使用されていないかどうかを中央データベースに照会することが可能である。そのタイトルが取得されている場合、コード211は、ユーザに対して、別のタイトルの入力を促すか、そのタイトルが使用不可であることを伝えるか、またはその両方を行うことが可能である。本発明の実施形態によれば、ユーザが、関連付けられたXMLでコード211を一度書くだけで、そのコードは、ターゲットアプリケーションの正確なセマンティクスを意識することなく、XML構造体の使用をサポートするすべての文書タイプに移植することが可能になり、それによって、アプリケーション開発が大幅に簡略化かつ合理化される。
【0047】
本発明の実施形態によれば、ワードプロセッサ文書204は、テキストの特定領域のセマンティクスを表現するコンテンツ領域207(例えば、Title、Bodyなど)によってタグ付けされることが可能であり、データバインディング205を追加することによって、そのコンテンツ領域207の中の関連付けられたテキストが、文書204内のデータストア208にある特定のXMLデータ209の内部のノード213に格納される。データ209は、文書内のコンテンツ領域207、すなわち、1つまたは複数のデータバインディング205を用いてタグ付けされた領域にリンクされる。したがって、データ209は、提示203内の関連付けられたコンテンツ、すなわち、ユーザが特定の文書の編集時に対話する、文書204のデジタル表現(例えば、特定のユーザ文書を描画するWORDウィンドウ)をデータバインディング205がどこに配置するか、またはそのデータ209がどのように提示されるかに関係なく、自身のXMLストリーム内の一貫した場所(「データストア」)に格納されることが可能である。したがって、XMLデータ209が、データストア208内で一貫した場所に配置されるので、ユーザは、文書204内を移動するデータを意識する必要がない。さらに、データストア208は、文書204内でデータバインディング205によって参照されていないデータ209も格納することが可能である。「エクストラ」データ(メタデータなど)は、ソリューション開発者などのユーザに、文書ユーザにとっては関係のない補助情報を提供する。
【0048】
本発明の実施形態によれば、データの構造は、独立した場所(文書のデータストア208内のXMLデータ209の1つまたは複数の断片)で保管されるので、ユーザは、データ構造に影響を及ぼすことなく、提示203内でリンク(すなわち、データバインディング205)を移動することが可能である。したがって、XMLデータ209の構造は変化せず、ワードプロセッサ文書204に関連付けられたXMLデータ209の提示だけが変化する。したがって、文書204内のデータ提示の書式を変更しても、データストア208の構造には影響しない。ユーザが文書表面203を操作しても、実際のデータ209は動かない。したがって、ユーザは、(ストア208に独立して維持されている)データ209への悪影響を心配することなく、提示を完全に管理することが可能である。したがって、本発明の実施形態によれば、ユーザは、提示情報とは別のカスタムXML情報にアクセスすることが可能である。
【0049】
1つまたは複数のデータバインディング205を用いて、データソースのコンテンツ(データストア208内のXMLデータ209)(本明細書ではXMLデータ209と呼ぶ)を文書204内の場所に「バインド」することが可能である。XMLデータ209は、本明細書で用いられているように、テキスト(プレーンまたはリッチフォーマット)、イメージ、特定タイプのコンテンツ(日付)など、任意のタイプのコンテンツを含む。データバインディング205の構造は、XPathリンクとして記述されることが可能であり、これによって、ワードプロセッサアプリケーション202は、文書204に関連付けられたXMLデータストア208にあるXMLノード213に接続し、これに同期し、リンクを持続することが可能である。XMLデータストア208は、文書204の一部であることが最も好ましい(すなわち、ストア208はワードプロセッサファイルとともに保存され、特定の文書204とともに移動するか、特定の文書204に関連付けられることが最も好ましい)。データバインディング205はさらに、提示(例えば、ワードプロセッサの文書表面203)とデータストア208との間でデータ209をどのように変換するかを管理する情報を含むことが可能である。ワードプロセッサアプリケーション202のユーザは、データストア208に格納されるデータ209(バックエンドアプリケーションによって操作されるデータ)が標準書式で保存されることを許可することが可能であり、その一方で、ワードプロセッサ文書204内の同じ情報をよりフレンドリな書式で提示することが可能である(例えば、ユーザに対してはJanuary 29、2004と表示されるが、データは、29−01−004T12:00:00.0000のようにdateTime書式で保存される)。別の例として、データバインディング情報は、イメージを格納することが可能である。このイメージは、データ209に対しては、一見無意味な文字列として表現されるが、前述した変換原理と同様に、ユーザに対しては、ワードプロセッサ文書204のコンテンツ領域207にあるイメージとして表示される。ユーザは、このイメージを追加/変更することが可能であり、XMLエンコードされた表現はXMLデータ209まで持続されるので、すべてのバックエンドプロセスがその情報を保存/操作することが可能である。
【0050】
実施形態によれば、ユーザは、データバインディング情報205をコンテンツ領域207に追加する場合に、XPath式を指定することによって、対象の(例えば、1つまたは複数のノード213を識別する)リンクされたXMLデータ209を提供する。このコンテンツ領域207のコンテンツは、いったんバインドされれば、そのXPathで返されるノード213のコンテンツ(XMLデータ)にリンクまたはバインドされる。このことは、結果として、XPathによって返されるXMLノード213が変化するようにXMLノード213が追加/削除/変更されると、文書204内のコンテンツ領域207のコンテンツが自動的に更新されることを意味する。あるいは、変更が発生した結果として特定のデータバインディング205によって返されるノード213がない場合は、データバインディング205が、後述する「懸垂参照」状態になる。
【0051】
例えば、文書204が以下のパラグラフを含むとする。ここで、「Microsoft Corporation」は、その文書のデータストア208内で、あるリンクされたXMLデータ209内のXPath/contract(1)/header(1)/company(1)にバインドされたプレーンテキストコンテンツ領域207(斜体で示されている)に対応する。提示203に表示されるパラグラフは次のとおりである。
【0052】
【表2】

【0053】
一実施形態によれば、プログラミング環境206において、(例えば、)次の単一行のコードを指定することによってリンクをセットアップすることが可能である。
【0054】
【表3】

【0055】
対応する、リンクされたXMLデータ209は次のようになるであろう(一重引用符で示されたノード213にリンクされている)。
【0056】
【表4】

【0057】
今度は、ユーザがデータストア208 APIを用いて、新しい<company>ノード213を、<header>の第1の子として追加するとする(新しいノード213は一重引用符で示されている)。
【0058】
【表5】

【0059】
コンテンツ領域207内の結果のバインディング205は、同じXPath(「/contract(1)/header(l)/company(1)」)にバインドされたままなので、文書コンテンツは、次のように、ただちにそのノード213の新しいコンテンツを表示するように更新される。
【0060】
【表6】

【0061】
本発明によれば、コンテンツ領域207にバインドされたデータがワードプロセッサ文書204の1つまたは複数の領域に格納されている場合、文書204は、リンクされたコンテンツのどのソースの変化にも反応する。したがって、一連の文書204が、バインドされたデータである場合は、関連付けられたXMLデータ209内のXMLノード213のコンテンツを変更すると、コンテンツ領域207のテキストが自動的に変更される。これに対応して、一連の文書204が、バインドされたデータである場合に、文書204内のそのバインドされたコンテンツ領域207のテキストを変更すると、対応するXMLデータ209にあるXMLノード213のコンテンツが自動的に変更される。すなわち、同一バインディング205を有する複数のコンテンツ領域207が、文書204内の複数の場所に存在することが可能である。例えば、名前へのデータバインディング205を有するコンテンツ領域207を、文書204のヘッダならびにボディに追加することが可能である。これらの場所のいずれかを変更すると、そのテキストがXMLデータストア208に同期し、この変更が、そのノード213へのデータバインディング205を有するコンテンツ領域207が存在する、文書204内のすべての場所に反映される。
【0062】
XMLデータ209内のXMLノード213は、文書204との間に一対多関係を有することが可能であり、このことは、XMLデータ209内の同じXMLノード213が複数のデータバインディング205によって参照されることが可能であることを意味する。文書204内の、データがバインドされているコンテンツ領域207が更新されると必ず、XMLデータ209内の該当するXMLノード213が変更され、これによって、文書204内の他のコンテンツ領域207にある、他のすべての関連付けられたバインディング205が新しいテキストによって更新される。例えば、文書204のヘッダにあるコンテンツ領域207が、あるXMLデータ209内の<title/>ノードのXPath式を指定するデータバインディング205を含み、文書204のボディにある別のコンテンツ領域207も、その同じ要素へのデータバインディング205を含むとする。本発明によれば、それらの書式が異なる可能性があっても、両方とも同じコンテンツを表示する。ユーザが、文書204のボディにあるコンテンツ領域207のコンテンツを編集した場合、その更新は、データストア208内の該当するXMLデータ209内の該当するXMLノード213まで持続され、これによって、やはりそのXMLノード213を指定する、文書204内の(例えば、ヘッダ内、フッタ内などにある)関連付けられたバインディング205を有する他のすべてのコンテンツ領域207が更新される。本発明の実施形態は、文書内の複数の場所をデータストア208内の単一XMLノード213にバインドし、それによって、それら3つのすべての場所のコンテンツをデータの単一ソースにリンクするメカニズムを提供する。したがって、XMLデータ209内の同じノード211にリンクされる、文書204内のすべてのコンテンツ領域207のコンテンツは同一である。
【0063】
このことの具体例は、一般的な報告文書である。報告文書では、ユーザは、複数の場所にタイトルを表示させるのが普通である。すなわち、(大きな太字で)表紙に表示させたり、(小さな文字で)ヘッダに表示させたり、(小さな斜体文字で)フッタに表示させたりするであろう。通常、ユーザは各場所にタイトルを手入力しなければならず、それら3つの場所のいずれかでタイトルを変更した場合には、(コンテンツの一貫性を保つために)他の2か所でも変更することを忘れないようにする。しかしながら、これら3つの場所すべての同期を保つことは、あまりにも忘れやすい。本発明の実施形態によれば、ユーザが文書204内で表示させたいXMLデータ209を含むデータストア208がしかるべき場所にあれば、文書内の複数の場所(例えば、上述の3つの場所)はすべて、データストア208内の単一のXMLノード213にデータがバインドされたコンテンツ領域207であることが可能である。
【0064】
したがって、3つの場所すべてのコンテンツが、単一ソースであるデータ209にリンクまたはバインドされる。このことは、ユーザが3つの領域のうちのいずれか1つ(例えば、表紙)のコンテンツを変更すると、そのユーザのテキストが、内在するXMLデータ209に自動的にプッシュされ、次に、対応するデータバインディング205を有するコンテンツ領域207を有する、文書204内の他の場所(ここではヘッダとフッタ)にプッシュされることを意味する。これは、ユーザが、文書との対話のみによって、それら3つの領域のコンテンツを、それらすべてが同一であるようにリンクまたはバインドしたことを意味する。本発明の実施形態によれば、文書の各領域は複数の様式(大きな太字、小さな斜体、その他)で提示されることが可能であるが、データストア208内のデータ構造は同じままである。
【0065】
懸垂参照
本発明の実施形態によれば、ユーザは、ターゲットがないXPath式を指定することも可能である。すなわち、ユーザの指定したターゲットXMLノード213がデータストア208内のXMLデータ209に存在しないことも可能である。データバインディング205は、その目的のターゲットノード213を「忘れる」のではなく、「待ち」状態に入り、この状態では、どの特定のXMLデータ209にも接続されず、補助XMLデータストア208内のXMLデータ209に目的のノード213が現れるのを待つ。これは特に、文書を組み合わせてまとめる場合に有効である。この場合は、文書204の各部分(例えば、標準的な表紙、最終ページ、流用条項など)がデータバインディング205を含むことが可能であり、データバインディング205は、各部分が単一の最終文書204に組み合わせられたときにのみ埋められる。この場合、文書作成者は、各文書「部分」内のコンテンツ領域207内で、XMLデータ209内の、その部分に存在していなかったXMLノード213へのデータバインディング205を指定する(例えば、表紙であれば、<Title/>XML要素や<Date/>XML要素へのバインディング205を有するコンテンツ領域を含むであろう)。それらの部分をその最終文書以外のところで表示しても、XMLデータ209が存在しないために、それらのバインディングは接続されないが、目的のデータ209を含んでいる文書にそれらの部分を加えると、データバインディング205がただちにデータ209に接続(同期)され、正しいコンテンツが表示される。これにより、文書作成者は、データ209がまだ作成されていなくても、バインディング205を指定し、それを保存することが可能である。
【0066】
1つのタイプの懸垂参照215は、コンテンツ領域207内のデータバインディング205が、リンクされたXMLストリーム内のノード213に正常にリンクできない場合に(すなわち、コンテンツ領域内のバインディングの一状態)発生する。ノード213が、リンクされたXMLストリームにおいて置き換えられたか、削除された場合は、結果として、1つまたは複数のデータバインディング205が懸垂参照215になる可能性がある。データバインディング205がそのXPathに起因する懸垂参照215を有する場合、ワードプロセッサアプリケーション202は、データバインディング205内のノード213について最後に知られたXPathを保存し続けることが好ましい。これは、XPathがどのノード209も解決しなくなった場合に発生する可能性がある。データストア208が、あるXMLデータ209の更新をワードプロセッサ文書204にメッセージ送信するたびに、ワードプロセッサアプリケーション202は、最新の更新によって解決されている懸垂参照215がないかどうかを調べる(すなわち、XPathは、現在、XMLツリー内の有効なノード213をポイントしている)。ワードプロセッサアプリケーション202が懸垂参照を解決する場合は、データストア208のコンテンツが、現在データバインディング205にあるコンテンツより優先されることが好ましい。すなわち、データバインディング205のコンテンツは、データストア208内のノード213のコンテンツによって置き換えられる。懸垂参照は、1つまたは複数のプログラミング環境206からアクセス可能な、シンプルなAPIレイヤを用いて公開されることが好ましい。
【0067】
例として、ワードプロセッサ文書204が以下のパラグラフを含むとする。ここで、「Microsoft Corporation」は、あるXMLデータ209内のXPath/contract/header/company(3)にバインドされたプレーンテキストコンテンツ領域207のデータに対応する。
【0068】
【表7】

【0069】
対応するXMLデータ209は次のようになるであろう(一重引用符で囲まれたノード213にリンクされている)。
【0070】
【表8】

【0071】
開発者などのユーザがデータストア208のAPIを用いて<header>の下の第1の<company>ノード213を削除した場合は、次のようになるであろう(ノード213は一重引用符で囲まれている)。
【0072】
【表9】

【0073】
文書204のコンテンツ領域207内の結果のデータバインディング205は、同じXPathへのリンクを維持するので、データバインディング205は、現時点では存在しない\contract\header\company(3)への懸垂参照215になる。
【0074】
【表10】

【0075】
これは、内部的にはリンクが切れているが、本発明によれば、コンテンツ領域207のコンテンツは変化せず、エラーは発生しないことを意味する。すなわち、次のとおりである。
【0076】
【表11】

【0077】
あるXMLデータ209が置き換えられたか、削除された場合(または、リンクがドキュメント間で移動した場合)は、そのXMLデータ209を参照するすべてのデータバインディング205が、ただちに、削除されたXMLデータ209をポイントしている懸垂参照215になる。データバインディング205が懸垂参照215を含む場合、ワードプロセッサアプリケーション202は、そのデータバインディング205に関連付けられた、最後に知られたXPath/名前空間リンクを保存し続ける。本発明の実施形態によれば、データバインディング205の集合が懸垂参照215になった場合、ワードプロセッサアプリケーション202は、これらのリンクを、関連付けられたXMLデータストア208にある他の任意の使用可能なXMLデータ209に再アタッチしようとする。いずれかのデータバインディング205が別のXMLデータ209にあるノード213を解決した場合は、すべての懸垂参照215がそのXMLデータ209に関連付けられ、どのデータバインディング205が現在接続されているかに関して、関連付けられたコンテンツ領域207が更新される。このXMLデータ209がどの懸垂参照215についても有効なデータバインディング205をもたらさない場合、ワードプロセッサアプリケーション202は、データストア208内の各XMLデータ209などに対して同様の検査を実行する。懸垂参照215に対して使用可能なXMLデータ209がない場合、バインディングは、元のXMLデータ209への懸垂参照215のままになる。
【0078】
図3に示されたフロー図を参照し、図2も引き続き参照しながら、本発明の実施形態を説明する。図3に示されたプロセス300は、302から始まる。302では、ユーザがワードプロセッサアプリケーション202を用いてワードプロセッサ文書204を開く。304で、ワードプロセッサアプリケーションがデータストア208を作成する。次に310で、ワードプロセッサ文書204に格納されているXMLデータ209か、ユーザインターフェースまたはプログラミングウィンドウ206を用いて要求されたXMLデータ209があれば、そのXMLデータ209でデータストア208が埋められる。データストア208は、文書204の一部であることが好ましいが、文書編集表面203上では不可視である。データストア208は、コンテンツ領域207およびデータバインディング205が作成される前にロードされることが可能であることを理解されたい。同様に、コンテンツ領域207は、データストア208より前に作成されることが可能である。言い換えると、図3に示されている各種操作は、特定の順序で実行される必要はまったくなく、特定のユーザの好みに応じて実施されてよい。
【0079】
306で、ユーザが、文書204の表面203上に存在する1つまたは複数のコンテンツ領域207を作成する。これらのコンテンツ領域は、文書204の既存のコンテンツから読み出し可能であることにも注意されたい。308で、ユーザは、特定のリンクされたXMLデータ209と、ターゲットノード213を指定するXPath式とを与えることによって、データバインディング情報をコンテンツ領域207に関連付けることが可能である。1つまたは複数のデータバインディングが、データストア208内のXMLデータ209の1つまたは複数のノード213を、1つまたは複数のコンテンツ領域207にリンクする。データバインディング205は、バインドされるか懸垂になる。前述のように、各ノード213は複数のコンテンツ領域207にバインドされることが可能であり、その各コンテンツ領域207は、同じXMLノード213へのデータバインディング205を指定している。さらに、そのデータバインディング205は、複数のデータストア208にリンクされることが可能である。309で、ユーザが、XMLデータを、コンテンツ領域207内またはデータストア208内に作成することが可能である。310で、ワードプロセッサアプリケーション202が、すべてのXMLデータをデータストア208にロードする。312で、ワードプロセッサアプリケーション202がコンテンツ領域207を、文書204から、またはユーザ306からの要求に応じてロードし、314で、ワードプロセッサアプリケーション202がデータバインディング205を、文書204から、またはユーザ308からの要求に応じてロードする。316で、ワードプロセッサアプリケーション202が、特定のデータバインディング205によって指定されたノード213に関連付けられたXMLデータ209が存在するかどうかを調べる。
【0080】
XMLデータ209が存在しない場合は、318で、ワードプロセッサアプリケーション202が、同じXML名前空間内に他のXMLデータ209が存在するかどうかを調べる。316で、データストア内でXMLデータ209が見つかった場合は、320で、ワードプロセッサアプリケーション202が、指定されたXPathに対して関連付けられたXMLノード213が存在するかどうかを調べる。そのXPathが存在する場合は、322で、ワードプロセッサアプリケーション202が、各種の文書コンテンツ(すなわち、コンテンツ領域207および他の任意のリンクされたコンテンツ)を、データバインディング経由で、関連付けられた1つまたは複数のXMLノード213に接続する。320でそのXPathが見つからない場合は、324で、ワードプロセッサアプリケーション202が、特定のデータバインディング205を懸垂参照215としてラベル付けする(懸垂状態に入る)。318で、データストア208内の同じXML名前空間で他のXMLデータ209が見つかった場合は、326で、ワードプロセッサアプリケーション202が、そのデータの中にXMLノード213が存在するかどうかを再度調べる。
【0081】
XMLデータ209が存在しない場合は、324で、ワードプロセッサアプリケーション202が、特定のデータバインディング205を懸垂参照としてラベル付けする(懸垂状態に入る)。326で、XMLデータ209が326で存在することがわかった場合は、328で、ワードプロセッサアプリケーション202が、そのXMLデータ209内で目的のXPathを探す。320でノード213が見つかった場合は、322で、ワードプロセッサアプリケーション202が、文書コンテンツ(すなわち、コンテンツ領域207および他の任意のリンクされたコンテンツ)を、関連付けられた1つまたは複数のXMLノード213に接続する。
【0082】
データをバインドするオブジェクトモデル
次に図4を参照して、本発明の別の実施形態を説明する。多くのソフトウェアアプリケーションにおいて、ユーザがアプリケーション(アプリケーション400など)のユーザインターフェースから実行するタスクをコードで自動化する方法を提供するために、オブジェクトモデルを用いることが可能である。オブジェクトモデルは、例えば、次のことを行うコードを書くことを可能にする。
・ ユーザの繰り返しのタスクを自動化する、
・ ユーザのアクションに反応する(妥当性を検査するなど)、および/または
・ ファイル410が開かれた/編集された/保存されたときに自動アクションを実行する。
【0083】
例えば、アプリケーション(例えば、WORD2003)は、ワードプロセッサのユーザインターフェースのすべての機能へのアクセスをコード経由で可能にするオブジェクトモデルインターフェースを提供する。オブジェクトモデルインターフェースは、ワードプロセッサアプリケーションのすべてのパラダイム/ユーザインターフェースの等価物へのコードアクセスを可能にする構造を提供することによってこれを行う。
【0084】
この構造は、次の4つの基本カテゴリによって構成される。
・ オブジェクト:アプリケーション内でアクション可能なオブジェクトに対応する。例えば、文書表面におけるユーザのパラグラフに対応するように、パラグラフをオブジェクトモデル内のオブジェクトとして表すことが可能である。
・ メソッド:オブジェクトに対して実行可能なアクション(例えば、削除)。
・ プロパティ:オブジェクトに関して設定可能なものやこと(例えば、パラグラフを太字にすること)。
・ イベント:ユーザ(または他のコード)によるアプリケーションとの対話に反応して実行されるサブルーチンに対応する。例えば、ファイルが開くイベントをリスンするコードを登録することが可能であり、アプリケーションは、ユーザによってであれ、他のコードによってであれ、アプリケーション内でファイルが開かれたときに、このコードを通知することが可能である(これに対してユーザは任意のアクションを実行することが可能である)。
【0085】
アプリケーションのオブジェクトモデル内にある任意のオブジェクトが、コードによるそのオブジェクトに対する操作を可能にするメソッド、プロパティ、および/またはイベントをエクスポーズすることが可能である。
【0086】
本発明の実施形態による、プログラミング環境402を含むアプリケーション400について説明する。プログラミング環境402は、アプリケーション400(前述のワードプロセッサアプリケーション202など)内のオブジェクトへの、オブジェクトモデルによるコードアクセスを提供する。本発明の実施形態について、ワードプロセッサアプリケーションの文脈で説明してきたが、前述のように、本発明は特定のアプリケーションに限定されることを意図したものではないことを理解されたい。プログラミング環境402はさらに、メソッド/プロパティ/イベントのロバストな集合がコンテンツ領域408のコンテンツに対する変更をトラップすることを可能にしながら、コンテンツ領域408の動作を制御することを可能にするように動作可能である。さらにプログラミング環境402は、ユーザ(例えば、プログラマなど)が、1つまたは複数のコンテンツ領域408とデータストア414の1つまたは複数のノード416との間のリンクを与える1つまたは複数のデータバインディング406に、プログラムによってアクセスすることを可能にする。
【0087】
前述のように、コード404は、プログラミング環境402を用いて、コンテンツ領域408またはXMLデータ412内のノード416の、いずれの方向での変更にも反応するように開発されることが可能である。コード404はさらに、ファイルコンテンツとデータストア414内のコンテンツとの間の関係を定義するように開発されることも可能である。さらに、ファイル410の境界領域内またはデータストア414内の変化に反応して、編集、追加、削除などのイベントをトラップまたはインターセプトするコード404を開発することが可能である。本発明の実施形態によれば、ユーザが、関連付けられたXMLでコード404を一度書くだけで、そのコードは、ターゲットアプリケーションの正確なセマンティクスを意識することなく、XML構造体の使用をサポートするすべてのファイルタイプに移植することが可能になり、それによって、アプリケーション開発が大幅に簡略化かつ合理化される。
【0088】
アプリケーションプログラミングインターフェース(API)などのプログラミング環境402は、オブジェクトをエクスポーズして、コード404によりアプリケーション400内で1つまたは複数のデータバインディング406を操作する機能を提供する。1つまたは複数のデータバインディング406を、特定ファイル410の1つまたは複数のコンテンツ領域408に関連付けることが可能である。
【0089】
コンテンツ領域のプロパティは、データバインディングの動作を操作する、次の2つのイベントを提供するオブジェクトを返すことが好ましい。
【0090】
・ .BeforeStoreUpdate(ContentRegion As ContentRegion, Content As String) コンテンツ領域のコンテンツが変更されてから、テキストがXMLデータ412の当該ノード416に送信される前にオブジェクト(文字列)を返すイベントである。これにより、コード404は、コンテンツ領域408のコンテンツを変更することなく、その文字列がXMLデータのノードに到達する前にその文字列を操作することが可能である。
【0091】
・ .BeforeContentUpdate(ContentRegion As ContentRegion, Content As String) 関連付けられたコンテンツ領域408にリンクしている、XMLデータ412内のノード416のコンテンツが変更されてから、コンテンツ領域408が更新される前に発生するイベントである。これにより、コード404は、ノードのデータを変更することなく、データ412を、コンテンツ領域408に表示される前に操作することが可能である。
【0092】
コンテンツ領域408は、プログラミング環境402からアクセス可能な、「DataBinding」プロパティを含むプロパティを含むことが好ましい。DataBindingプロパティは、コンテンツ領域408と、ファイル410に関連付けられた、データストア414のデータ412との間の関係へのアクセスを提供する。DataBindingは、DataBindingオブジェクト(プロパティ、メソッド、およびイベント)を返すことによって、データバインディング406およびデータバインディング406に関連付けられた他のデータおよびオブジェクトの操作を可能にすることが好ましい。
【0093】
代表的なメソッドおよびプロパティとして以下のものがあるが、これらに限定されない。
・ .CustomDataStream As CustomDataStream
(さらなる操作のために)データバインディング406に関連付けられたXMLデータ412を表すオブジェクトを返すプロパティである。このオブジェクトモデルを用いてXMLデータを直接操作するようにコード404を開発することが可能である。懸垂参照の場合は何も返さない。
【0094】
・ .CustomDataXMLNode As CustomDataXMLNode
データバインディング406のターゲットである、XMLデータ412内のXMLノード416を表すオブジェクトを返すプロパティである。特定のデータバインディング406のターゲットノード416を操作するようにコード404を開発することが可能である。懸垂参照の場合は何も返さない。例として、ユーザが、データバインディング406のターゲットを変更するためにノード416を移動したい場合がある。別の例として、ファイル410が何らかのパブリックサーバに移る予定なので、ユーザがノード416を削除したい場合がある。したがって、コード404を用いて、この返されたオブジェクトを用いてノード416を探して削除するようにし、ファイル410がパブリックサーバに配置されたときに情報が誤って送信されないようにすることが可能である。
【0095】
・ .Delete As Void
コンテンツ領域408からデータバインディング406を削除するオブジェクトを返すメソッドである。例えば、ファイル410が、XMLデータ412内の名前要素にリンクされた名前(またはバインドされたデータ)を有するコンテンツ領域408を含む場合がある。ユーザはデータ412をフリーズさせたいので、コード404を用いてバインディング406(すなわち、「dataBinding.Delete」)を削除することによって、コンテンツ領域408からリンクを削除するように操作することが可能である。
【0096】
・ .IsBound As Boolean
データバインディング406が現時点で懸垂参照かどうかを調べるオブジェクトを返すプロパティである。コード404を用いて、ターゲットノード416が存在するかどうかを調べることが可能である。コード実装が成功するように、様々な状況において、ターゲットノードが存在するかどうか、すなわち、データバインディング406が懸垂かアクティブかを調べることが好ましい。ターゲットノードが存在する場合、オブジェクトは「.true」を返し、そうでなく、懸垂参照が存在する場合、またはバインディングが存在しない場合は、「.false」を返す。
【0097】
・ .SetBindingByNode(CustomDataXMLNode as CustomDataXMLNode) As Boolean
特定のリンクに対してターゲットXMLノード416を提供することによって、コンテンツ領域408内のデータバインディング406を作成/変更するオブジェクト(CustomDataXMLNode)を返すメソッド。バインディングが存在する場合は既存のバインディングが置き換えられ、新しいバインドされたノードのストアコンテンツが(もしあれば)、既存のコンテンツを置き換える。ライブノードにバインドされている場合は「.true」を返し、ライブノードにバインドされていない場合は「.false」を返す。
【0098】
・ .SetBindingByXPath(CustomDataStream as Variant, XPath as String, [Pre fix Mapping As String]) As Boolean
リンクに対してXPathおよびXMLデータ412を提供することによって、コンテンツ領域408上にデータバインディング406を作成するために用いられる情報(XPath、ノードへのポインタ(ID)、および/または名前空間に関連するプレフィックスマッピングなど)を表すオブジェクト(CustomDataStream、XPath、および/またはPrefixMapping)を返すメソッドである。
【0099】
・ CustomDataStream:バインド先のストアアイテムを指定するバリアントであって、以下のいずれかであることが可能である。
○ 目的のストリームを表すCustomDataStreamオブジェクト
○ 目的のストリームのルート名前空間を表すString(文字列)−そのルート名前空間を有するストリームが複数存在する場合は、ストア内で最初に見つかったアイテムを取得する
○ ストアのコレクションにある目的のストアアイテムのインデックスを表すInteger(整数)
【0100】
・ XPath:バインド先のXPathを表すString(文字列)。有効なXPathシンタックスであることを確認し、そうでない場合には失敗してエラーメッセージを出す。
【0101】
・ PrefixMapping:提供されたXPath式を照会する場合に用いられることが可能なプレフィックスマッピングを表す、オプションのString(文字列)。存在しない場合は、ストアアイテム自身によって用いられるプレフィックスマッピングの集合を用いる。
【0102】
・ .XPath As String
XMLデータ412内のターゲットXMLノード416をポイントするデータバインディング406によって用いられるXPath式を見つけるオブジェクトを返すプロパティ。
【0103】
以上のリストされたプロパティ、メソッド、およびイベントを用いるコード開発は、個々のアプリケーションに対して適応可能であることを理解されたい。
【0104】
本発明の各種実施形態の論理動作は、(1)コンピューティングシステムで動作する、コンピュータに実装されたアクションまたはプログラムモジュールのシーケンスとして、かつ/または、(2)コンピューティングシステム内で相互接続されたマシン論理回路またはマシン論理回路モジュールとして、実施されることを理解されたい。実施態様は、本発明を実施するコンピューティングシステムの性能要件に応じて選択される。したがって、本明細書で説明された、本発明の実施形態を構成する論理動作は、動作、構成装置、アクション、またはモジュールとして様々に参照される。当業者であれば、これらの動作、構成装置、アクション、およびモジュールは、添付の特許請求項において列挙されている本発明の趣旨および範囲から逸脱することなく、ソフトウェア、ファームウェア、専用デジタル論理、およびこれらの任意の組合せで実施可能であることを理解されよう。
【0105】
先述の明細書、実施例、およびデータは、本発明の構成物の製造および使用に関する完全な説明を提供する。本発明の趣旨および範囲から逸脱することなく本発明の様々な実施形態が作成可能なので、本発明は、添付の特許請求項に属する。
【符号の説明】
【0106】
100 コンピューティング装置
102 処理ユニット
104 システムメモリ
105 オペレーティングシステム
106 アプリケーション
107 プログラムデータ
109 リムーバブル記憶装置
110 非リムーバブル記憶装置
112 入力装置
114 出力装置
116 通信接続
118 他のコンピューティング装置
120 ワードプロセッサ

【特許請求の範囲】
【請求項1】
コンピュータが実施する方法であって、
ユーザが文書を作成し、または編集することを可能にする提示表面を提供するステップと、
拡張可能マークアップ言語(XML)データストアに記憶されたXMLデータ内に前記文書のコンテンツを維持するステップであって、前記XMLデータストアは、前記提示表面から分離されており、前記文書が開かれた後で前記文書内に記憶されるXMLデータで埋められるステップと、
前記文書内に複数のコンテンツ領域を提供するステップであって、各コンテンツ領域は、前記コンテンツ領域を前記XMLデータの少なくとも1つのノードにリンクするように構成された複数のデータバインディングを含み、前記コンテンツ領域が、前記複数のデータバインディングによってリンクされる前記少なくとも1つのノードによって記憶された前記XMLデータを提示するようにし、前記XMLデータにバインドされているデータバインディングは、前記XMLデータの構造に影響を及ぼすことなく、前記文書内で移動することが可能であり、前記複数のデータバインディングのうちの少なくとも1つは、前記XMLデータに関連付けられてない懸垂参照であり、前記懸垂参照は、前記XMLデータが前記XMLデータストア内で利用可能である場合に解決されるステップと、
前記コンテンツ領域に提示された前記XMLデータを変更するステップであって、
前記XMLデータストア内で関連付けられた前記ノードの1つまたは複数に記憶された前記XMLデータと、
前記コンテンツ領域を別のノード内の前記XMLデータにリンクする前記データバインディングと
のうちの1つを変更することによって、前記提示表面を変更することから独立して、前記XMLデータを変更するステップと、
前記提示表面内で前記XMLデータの前記変更を提示するステップと
を含むことを特徴とする方法。
【請求項2】
前記提示表面は、
ワードプロセッサアプリケーション、
スプレッドシートアプリケーション、
データベースアプリケーション、
プレゼンテーションアプリケーション、および、
ドローイングアプリケーション
のうちの1つのために構成されていることを特徴とする請求項1に記載の方法。
【請求項3】
前記コンテンツは、テキスト、数、イメージのうちの1つまたは複数を含むことを特徴とする請求項1に記載の方法。
【請求項4】
前記データバインディングは、前記データバインディングに関連付けられた前記XMLデータを識別するXpathを含むことを特徴とする請求項1に記載の方法。
【請求項5】
コードの書式化を前記XMLデータの書式の変更に適用して、前記XMLデータを、前記XMLデータの記憶された書式とは異なる提示書式で前記提示表面に提示するようにするステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項6】
前記XMLデータストア内のターゲットノードを見つけるために使用可能なプロパティを識別するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項7】
コードの操作を前記ターゲットノードの変更に適用するステップであって、前記ターゲットノードの変更は、
前記ターゲットノードのコンテンツを変更すること、および、
前記XMLデータから前記ターゲットノードを削除すること
のうちの1つを含むステップをさらに含むことを特徴とする請求項6に記載の方法。
【請求項8】
前記データバインディングによってリンクされた前記XMLデータを変更することなく、前記データバインディングを削除するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項9】
懸垂参照を含めるために前記データバインディングを提供するステップであって、
前記データバインディングは、現在、前記コンテンツ領域を前記XMLデータストアに記憶されたXMLデータ内の少なくとも1つのノードにリンクせず、
前記懸垂参照は、次いで、前記コンテンツ領域を前記XMLデータストア内に記憶された前記XMLデータ内の少なくとも1つのノードにリンクするために解決可能であるステップを、さらに含むことを特徴とする請求項1に記載の方法。
【請求項10】
変更が前記XMLデータに対してなされると、前記データバインディングによって前記XMLデータにリンクされた前記文書を、前記変更を反映するために自動的に変更するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項11】
前記提示表面と、前記XMLデータとの間の関係を識別するステップであって、前記1つまたは複数のデータバインディングによってリンクされた前記XMLデータの利用についての制限を、1つまたは複数の別の文書で使用するために前記少なくとも1つのコンテンツ領域に適用するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項12】
コンピュータシステムによって実行可能なコンピュータ命令を記憶したコンピュータ可読記憶媒体であって、前記コンピュータ命令は、
ユーザが文書を作成または編集することを可能にするように構成されたワードプロセッサを提示するステップであって、前記文書は、前記文書に構造を提供する少なくとも1つのスキーマであって、拡張マークアップ言語(XML)要素がコンテンツに適用される場合の順序を管理する規則を含むスキーマを含み、かつ、提示表面を介して1つまたは複数のコンテンツ領域を含み、前記提示表面は、
前記文書内で使用される前記XML要素が前記少なくとも1つのスキーマによって識別される順序に従うようにして、前記1つまたは複数のコンテンツ領域を操作して、前記文書の前記コンテンツに関連付けられた前記構造に影響を及ぼすことなく、前記文書の外見及びコンテンツのうちの少なくとも1つを変更し、
前記文書への前記変更を表示することを可能にするステップと、
前記1つまたは複数のコンテンツ領域内で提示されたコンテンツを、前記提示表面から分離されたXMLデータストアに記憶するステップであって、前記XMLデータストアは、前記文書が開かれた後で前記文書内に記憶されるXMLデータで埋められるステップと、
前記XMLデータストアに記憶された前記コンテンツを、前記コンテンツが1つまたは複数のデータバインディングを使用して提示される、それぞれのコンテンツ領域に関連付けるステップであって、前記データバインディングは、
前記XMLデータストアに記憶された前記コンテンツを変更することなく、前記文書の前記外見を変更するために、前記文書の前記1つまたは複数のコンテンツ領域を変更すること、
前記XMLデータストアに記憶された前記コンテンツの記憶された書式を変更することなく、前記文書内で提示されたように、前記XMLデータストアに記憶された前記コンテンツを変更するために、前記文書の前記1つまたは複数のコンテンツ領域を変更すること、及び、
前記文書の前記1つまたは複数のコンテンツ領域を変更することなく、前記XMLデータストアに記憶された前記コンテンツを変更すること、
のうちの1つまたは複数によって、前記文書を変更することを可能にするように構成されているステップと
を含む方法を、前記コンピュータに実行させることを特徴とするコンピュータ可読記憶媒体。
【請求項13】
前記データバインディングは、前記データバインディングに関連付けられた前記XMLデータを識別するXPathを含むことを特徴とする請求項12に記載のコンピュータ可読記憶媒体。
【請求項14】
前記データバインディングによってリンクされた前記XMLデータを変更せずに、前記データバインディングを削除するステップをさらに含むことを特徴とする請求項12に記載のコンピュータ可読記憶媒体。
【請求項15】
懸垂参照を含めるために前記データバインディングを提供するステップであって、前記データバインディングは、現在、前記コンテンツ領域を前記XMLデータストアに記憶されたXMLデータ内の少なくとも1つのノードにリンクしていないステップをさらに含むことを特徴とする請求項12に記載のコンピュータ可読記憶媒体。
【請求項16】
前記提示表面と前記XMLデータとの間の関係を識別するステップであって、別の文書で使用するために前記XMLデータの利用の制限を適用するステップをさらに含むことを特徴とする請求項12に記載のコンピュータ可読記憶媒体。
【請求項17】
プレアンブルを除いて、請求項12と同じ。
コンピュータシステムであって、
ユーザが文書を作成または編集することを可能にするように構成されたワードプロセッサを提示する手段であって、前記文書は、前記文書に構造を提供する少なくとも1つのスキーマであって、拡張マークアップ言語(XML)要素がコンテンツに適用される場合の順序を管理する規則を含むスキーマを含み、かつ、提示表面を介して1つまたは複数のコンテンツ領域を含み、前記提示表面は、
前記文書内で使用される前記XML要素が前記少なくとも1つのスキーマによって識別される順序に従うようにして、前記1つまたは複数のコンテンツ領域を操作して、前記文書の前記コンテンツに関連付けられた前記構造に影響を及ぼすことなく、前記文書の外見及びコンテンツのうちの少なくとも1つを変更し、
前記文書への前記変更を表示することを可能にする手段と、
前記1つまたは複数のコンテンツ領域内で提示されたコンテンツを、前記提示表面から分離されたXMLデータストアに記憶する手段であって、前記XMLデータストアは、前記文書が開かれた後で前記文書内に記憶されるXMLデータで埋められる手段と、
前記XMLデータストアに記憶された前記コンテンツを、前記コンテンツが1つまたは複数のデータバインディングを使用して提示される、それぞれのコンテンツ領域に関連付ける手段であって、前記データバインディングは、
前記XMLデータストアに記憶された前記コンテンツを変更することなく、前記文書の前記外見を変更するために、前記文書の前記1つまたは複数のコンテンツ領域を変更すること、
前記XMLデータストアに記憶された前記コンテンツの記憶された書式を変更することなく、前記文書内で提示されたように、前記XMLデータストアに記憶された前記コンテンツを変更するために、前記文書の前記1つまたは複数のコンテンツ領域を変更すること、及び、
前記文書の前記1つまたは複数のコンテンツ領域を変更することなく、前記XMLデータストアに記憶された前記コンテンツを変更すること、
のうちの1つまたは複数によって、前記文書を変更することを可能にするように構成されている手段と
を含むことを特徴とするコンピュータシステム。
【請求項18】
前記データバインディングは、前記データバインディングに関連付けられた前記XMLデータを識別するXPathを含むことを特徴とする請求項17に記載のコンピュータシステム。
【請求項19】
前記データバインディングによってリンクされた前記XMLデータを変更せずに、前記データバインディングを削除する手段をさらに含むことを特徴とする請求項17に記載のコンピュータシステム。
【請求項20】
懸垂参照を含めるために前記データバインディングを提供する手段であって、前記データバインディングは、現在、前記コンテンツ領域を前記XMLデータストア内に記憶されたXMLデータ内の少なくとも1つのノードにリンクしていない手段をさらに含むことを特徴とする請求項17に記載のコンピュータシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2012−194986(P2012−194986A)
【公開日】平成24年10月11日(2012.10.11)
【国際特許分類】
【出願番号】特願2012−110939(P2012−110939)
【出願日】平成24年5月14日(2012.5.14)
【分割の表示】特願2005−367248(P2005−367248)の分割
【原出願日】平成17年12月20日(2005.12.20)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】