(57)【要約】【課題】ＸＭＬおよびＸＭＬベースのマークアップ言語を処理する方法およびシステムを提供すること。【解決手段】強く型付けされた環境において未知のマークアップを保存する方法およびシステムが説明される。１つの実施形態において、既知のＸＭＬベース要素および未知のＸＭＬベース要素の両方を含むことができるＸＭＬベースのマークアップが受信される。既知のＸＭＬベース要素に関連付けられた強く型付けされたツリーがインスタンス化され、既知のＸＭＬベース要素および未知のＸＭＬベース要素の両方に関連付けられた弱く型付けされたツリーがインスタンス化される。次に、未知のＸＭＬベース要素を保存する方法で、強く型付けされたツリーおよび弱く型付けされたツリーを相関させる。【選択図】図５
2006323816.tif 000002
【特許請求の範囲】
【請求項１】
強く型付けされた環境において、
既知のＸＭＬベース要素および未知のＸＭＬベース要素の両方を含むことができるＸＭＬベースのマークアップを受信するステップと、
前記既知のＸＭＬベース要素に関連付けられた強く型付けされたツリーをインスタンス化するステップと、
前記既知のＸＭＬベース要素および前記未知のＸＭＬベース要素の両方に関連付けられた弱く型付けされたツリーをインスタンス化するステップと、
前記未知のＸＭＬベース要素を保存する方法で、前記強く型付けされたツリーおよび前記弱く型付けされたツリーを相関させるステップと
を備えることを特徴とする方法。
【請求項２】
前記インスタンス化する動作は、前記ＸＭＬベースのマークアップをデシリアライゼーションの際に行われることを特徴とする請求項１に記載の方法。
【請求項３】
前記相関させる動作は、前記ＸＭＬベースのマークアップをデシリアライズするように構成されたデシリアライザ・コンポーネントによって行われることを特徴とする請求項１に記載の方法。
【請求項４】
前記ＸＭＬベースのマークアップを受信した後、前記ＸＭＬベースのマークアップをバイナリ表示に変換するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項５】
前記強く型付けされたツリーをインスタンス化する動作は、前記バイナリ表示で作動し、該強く型付けされたツリーをインスタンス化するステップを含むことを請求項４に記載の方法。
【請求項６】
前記弱く型付けされたツリーをインスタンス化する動作は、
前記ＸＭＬベースのマークアップ内のあらゆる既知の要素について、プレースホルダ・ノードを前記弱く型付けされたツリー内に作成するステップと、
前記ＸＭＬベースのマークアップ内のあらゆる未知の要素について、未知のマークアップを保存するノードを作成するステップと、
を含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記未知の要素を保存するノードを作成する動作は、前記未知の要素のテキスト文字列を前記ノードに関連付けるステップを含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記プレースホルダ・ノードを作成した後、各々のプレースホルダ・ノードについて、個別のプレースホルダ・ノードを前記強く型付けされたツリー内の対応するノードに設定するステップをさらに備えることを特徴とする請求項６に記載の方法。
【請求項９】
前記強く型付けされたツリーをコンポーネントに戻し、前記コンポーネントが該強く型付けされたツリー上で作動し、修正された強く型付けされたツリーを提供できるようにするステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１０】
前記修正された強く型付けされたツリーをＸＭＬベースのマークアップにシリアライズするステップをさらに備えることを特徴とする請求項９に記載の方法。
【請求項１１】
シリアライゼーションの際に、前記弱く型付けされたツリーを前記修正された強く型付けされたツリーと再相関させるステップをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１２】
シリアライゼーションの際に、どのノードをシリアライズすべきであり、どのノードをシリアライズすべきでないかを定義する１つまたは複数の規則を適用することを可能にするステップをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１３】
１つまたは複数のコンピュータ可読メディアと、
前記１つまたは複数のコンピュータ可読メディア上に組み入れられ、
既知のＸＭＬベース要素および未知のＸＭＬベース要素の両方を含むことができるＸＭＬベースのマークアップを受信し、
前記既知のＸＭＬベース要素に関連付けられた強く型付けされたツリーをインスタンス化し、
前記既知のＸＭＬベース要素および前記未知のＸＭＬベース要素の両方に関連付けられた弱く型付けされたツリーをインスタンス化し、
前記未知のＸＭＬベース要素を保存する方法で、前記強く型付けされたツリーおよび前記弱く型付けされたツリーを相関させる
ように構成された１つまたは複数のソフトウェア実装コンポーネントと
を備えることを特徴とするシステム。
【請求項１４】
前記１つまたは複数のソフトウェア実装コンポーネントは、
前記ＸＭＬベースのマークアップを構文解析するための構文解析プログラムと、
前記構文解析プログラムによって構文解析された各マークアップ要素についての通知を受信するデシリアライザと
を備え、前記デシリアライザは、前記弱く型付けされたツリーをインスタンス化するように構成されることを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記１つまたは複数のソフトウェア実装コンポーネントは、
前記ＸＭＬベースのマークアップを構文解析するための構文解析プログラムと、
前記構文解析プログラムによって構文解析される各マークアップ要素についての通知を受信するデシリアライザと
を備え、
前記デシリアライザは、前記弱く型付けされたツリーをインスタンス化し、前記強く型付けされたツリーと該弱く型付けされたツリーを相関させるように構成されることを特徴とする請求項１３に記載のシステム。
【請求項１６】
前記１つまたは複数のソフトウェア実装コンポーネントは、前記ＸＭＬベースのマークアップを構文解析し、該ＸＭＬベースのマークアップをバイナリ表示に変換するための構文解析プログラムを含むことを特徴とする請求項１３に記載のシステム。
【請求項１７】
前記１つまたは複数のソフトウェア実装コンポーネントは、前記ＸＭＬベースのマークアップを構文解析し、該ＸＭＬベースのマークアップをバイナリ表示に変換し、前記バイナリ表示を用いて、前記強く型付けされたツリーをインスタンス化するための構文解析プログラムを備えることを特徴とする請求項１３に記載のシステム。
【請求項１８】
前記１つまたは複数のソフトウェア実装コンポーネントは、
前記ＸＭＬベースのマークアップを構文解析するための構文解析プログラムと、
前記構文解析プログラムによって構文解析される各マークアップ要素についての通知を受信するデシリアライザと
を備え、前記デシリアライザは、前記ＸＭＬベースのマークアップ内のあらゆる既知の要素について前記弱く型付けされたツリー内のプレースホルダ・ノードを作成し、該ＸＭＬベースのマークアップ内のあらゆる未知の要素について前記未知のマークアップを保存するノードを作成することによって、該弱く型付けされたツリーをインスタンス化するように構成されることを特徴とする請求項１３に記載のシステム。
【請求項１９】
前記１つまたは複数のソフトウェア実装コンポーネントは、前記ＸＭＬベースのマークアップを構文解析し、前記強く型付けされたツリーを別のコンポーネントに戻し、前記他のコンポーネントが、該強く型付けされたツリー上で作動し、修正された強く型付けされたツリーを提供するようにする構文解析プログラムを含むことを特徴とする請求項１３に記載のシステム。
【請求項２０】
前記１つまたは複数のソフトウェア実装コンポーネントは、前記ＸＭＬベースのマークアップを構文解析し、前記強く型付けされたツリーを別のコンポーネントに戻し、それにより前記他のコンポーネントが該強く型付けされたツリー上で作動し、修正された強く型付けされたツリーを提供するようにする構文解析プログラムを備え、前記修正された強く型付けされたツリーを該ＸＭＬベースのマークアップにシリアライズし、シリアライゼーションの際に、前記弱く型付けされたツリーを該修正された強く型付けされたツリーと再相関させるように構成されたシリアライザをさらに備えることを特徴とする請求項１３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＸＭＬおよびＸＭＬベースのマークアップ言語を処理する方法およびシステムに関する。
【背景技術】
【０００２】
一般的に、ＸＭＬおよびＸＭＬベースのマークアップ言語は拡張可能である。幾つかのシステムにおいて、拡張性メカニズムは、マークアップを処理する何らかの任意のエージェントによって実装できる既知のネームスペースおよび未知のネームスペースの概念に基づいている。未知のネームスペースは、特定のエージェントが理解できるかどうか分からない任意の拡張子を含むことがある。多数エージェントが一緒にチェーニングされて、マークアップの流れが連続的に単一のエージェントの各々を通過するパイプラインを形成し、エージェントがその流れを何らかの形で修正するとき、導入される拡張性メカニズムは、「マークアップの保存」として知られる、すなわちいずれか１つの特定のエージェントが理解できないマークアップを保存するという困難な問題を呈することになる。
【０００３】
幾つかのシステムにおいては、既知のネームスペースおよび未知のネームスペースの組が、パイプライン内の個々のエージェント間で異なることがある。こうしたシステムにおいては、ネームスペースを理解する次のエージェントは、該ネームスペースからのコンテンツを処理することを望むので、別のエージェントより前に来るいずれかのエージェントが、いずれかの未知のネームスペースからのマークアップを保存することが重要になる。
【０００４】
ＸＭＬベースのマークアップ言語のための従来の処理エージェントは、多くの場合、文書オブジェクト・モデル（ＤＯＭ）ツリーを実装することを選ぶ。ＤＯＭツリーは、マークアップ内に見出される各要素タグについて１つのノードを含む、弱く型付けされた構造である。あらゆるノードが弱く型付けされる(weakly typed)ので、エージェントは、未知のネームスペースについてのマークアップを保持する指定されていないタイプのノードを作成し、処理中にこれらのノードを飛ばし、その後、これらを元のマークアップにシリアライズし、次のエージェントに送ることは、かなり単純なプロセスである。
【０００５】
強く型付けされた(strongly typed)環境において、未知のネームスペースの処理は、それほど単純ではない。より具体的には、強く型付けされた環境において、そのマークアップに明確なタイプを割り当てることができないので、未知のネームスペースに関連付けられたマークアップを保存することは、不可能ではないにしても困難である。例えば、マークアップをバイナリ形式のような異なる中間形式に翻訳することによって、ＸＭＬ構文解析プログラムがマークアップを更に処理する場合に、更に別の厄介な問題が存在することがある。こうした状況において、一般に、マークアップを用いるエージェントがこの翻訳ステップを修正することはできない。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、本発明は、強く型付けされた環境および／または中間翻訳段階を必要とする、それらの環境におけるマークアップ保存問題に対する解決法を提供することに関連した問題に起因したものである。
【課題を解決するための手段】
【０００７】
強く型付けされた環境において未知のマークアップを保存する方法およびシステムが説明される。単なる一実施形態においては、既知のＸＭＬベース要素および未知のＸＭＬベース要素の両方を含むことができるＸＭＬベースのマークアップが受信される。既知のＸＭＬベース要素に関連付けられた強く型付けされたツリーがインスタンス化され、既知のＸＭＬベース要素および未知のＸＭＬベース要素の両方に関連付けられた弱く型付けされたツリーがインスタンス化される。次に、強く型付けされたツリーと弱く型付けされたツリーが、未知のＸＭＬベース要素を保存する方法で相関させられる。
【発明を実施するための最良の形態】
【０００８】
概要
以下に説明される方法およびシステムは、強く型付けされた環境との関連で、未知のネームスペース要素に関連付けられたマークアップを保存できる手段を提供するものである。少なくとも幾つかの実施形態において、このことは、既知のＸＭＬベース要素に関連付けられた、いわゆる強く型付けされたツリーおよび既知のＸＭＬベース要素および未知のＸＭＬベース要素に関連付けられた弱く型付けされたツリーをインスタンス化することによって達成される。次に、ＸＭＬベースのマークアップをデシリアライゼーションの際に、強く型付けされたツリーと弱く型付けされたツリーを関連させるために、相関プロセスが用いられる。次に、非相関プロセスが、いずれかの未知のネームスペース要素を保存する方法で、ＸＭＬベースのマークアップを再シリアライズする。
【０００９】
以下に説明される実施形態は、コンピューティング環境との関連で説明される。パーソナル・コンピュータすなわちＰＣのようなコンピュータによって実行されるプログラム・モジュールのようなコンピュータ実行可能命令またはコード手段によって、種々の実施形態を実施することができる。一般に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ・タイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。
【００１０】
ＰＣ以外のコンピュータ・システム構成において、種々の実施形態を実施することができる。例えば、ハンドヘルド装置、マルチプロセッサ・システム、マイクロプロセッサ・ベースのまたはプログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ等において、種々の実施形態を実現することができる。代替的にまたは付加的に、通信ネットワークを通して接続されたリモート処理装置によってタスクを実行する分散型コンピューティング環境において、種々の実施形態を実施することもできる。分散型コンピューティング環境において、局所的およびリモート記憶装置の両方にプログラム・モジュールを配置することもできる。
【００１１】
上記に示唆されたように、種々の実施形態を多くのタイプのコンピューティング環境に組み込むことが可能であるが、「例示的なコンピューティング環境」という見出しのもとで本文書の最後により詳細に説明される、従来のコンピューティング装置の形態の例示的な汎用コンピューティング装置との関連で、１つの例示的な環境の説明が、図６に表示される。
【００１２】
強く型付けされた環境の特徴
強く型付けされた環境の一例として、図１と関連して以下を考慮する。コンピュータ・ディスプレイ上に表示できるもののようなページのコンテンツ１００が、テキスト（Ｔｅｘｔ)１０２、グラフィックス（Ｇｒａｐｈｉｃｓ)１０４、画像（Ｉｍａｇｅ)１０６、幾つかの付加的なテキスト（Ｔｅｘｔ)１０８、およびクリック可能なボタン（Ｂｕｔｔｏｎ）１１０を含むと仮定する。このコンテンツは、ルートがＦｉｘｅｄＰａｇｅであり、ノードがＴｅｘｔ、Ｇｒａｐｈｉｃｓ、Ｉｍａｇｅ、Ｔｅｘｔ、およびＢｕｔｔｏｎであるツリー１１２として（メモリ内に）表すことができる。このツリーのＸＭＬ表示が、１１４で示される。
【００１３】
ツリー１１２において、要素の各々は、１つのクラスのオブジェクトのインスタンスによって表わされる。この例においては、ＦｉｘｅｄＰａｇｅは、１つのクラスのインスタンスであり、そのクラスは、ｃｈｉｌｄｒｅｎと呼ばれる特性を有するものとして定義される。ｃｈｉｌｄｒｅｎ特性は、強く型付けされており、何らかの大きなクラスの集合として強く型付けされている。ツリーの要素の各々は、この例においてはＵＩＥｌｅｍｅｎｔである、何らかの基本的クラスのサブ・クラスであるか、または何らかの基本的クラスに由来するクラスネームである。この強く型付けされた環境において、ＦｉｘｅｄＰａｇｅのクラス・インスタンスのｃｈｉｌｄｒｅｎ特性は、基本的クラスであるＵＩＥｌｅｍｅｎｔに由来するものしか保持することができない。
【００１４】
拡張されたマークアップが失われ得る１つの方法の例
ここで、アプリケーション２００が、印刷システム２０４によって処理されるマークアップ２０２を生成する、図２に示されるシナリオについて考察する。この例において、印刷システム２０４は、フィルタすなわちエージェント２０６、２０８、および２１０の集合を含む。フィルタは、一般に、ページまたは文書についてのマークアップを読み込み、これを何らかの形で修正し、次のフィルタによる処理のために提供する。一例として、フィルタは、ページに透かしを加えたり、ページを異なる順番に並べ替えたり、ページ上の画像を拡大縮小、回転、調整したりすることができる。
【００１５】
印刷システムの一例は、Ｍｉｃｒｏｓｏｆｔ社のＷｉｎＦＸシステムである。ＷｉｎＦＸシステムにおいて、ＸＭＬ、またはＷｉｎＦＸの文脈においてより正確にはＸＡＭＬ（拡張可能なアプリケーション・マークアップ言語：Ｅｘｔｅｎｓｉｂｌｅ  Ａｐｐｌｉｃａｔｉｏｎ  ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）を処理する構文解析プログラム２１２およびシリアライザ２１４のような標準的なソフトウェア・コンポーネントが存在する。このようなシステムおよび他のシステムにおいては、フィルタ２０６は、構文解析プログラム２１２を呼び出して、マークアップを読み込む。これに応答して、構文解析プログラム２１２は、要素のインスタンス化されたツリー（図１のツリー１１２のような）をフィルタに戻す。次に、フィルタは、ツリーを処理し、これを何らかの形で修正し、修正されたツリーをシリアライザ２１４に提供する。次に、シリアライザ２１４は、修正されたツリーを修正されたマークアップにシリアライズし、該修正されたマークアップは、データ・ストア２１６で表されるように、何らかの方法で保持される。次に、この場合はフィルタ２０８である次のフィルタが、構文解析プログラム２１２を呼び出して、修正されたマークアップを読み込み、上述のような関連したツリー上で作動させ、プロセスを続ける。最後のフィルタが処理を完了した後、修正されたツリーは、シリアライザ２１４によってシリアライズされ、これをプリンタのような消費デバイスに提供することができる。
【００１６】
この特定のシナリオにおいては、アプリケーション２００が、マークアップ２０２に要素「ｅｘｔ  Ｂａｒ」を挿入したことに注意されたい。恐らく、この要素は、何らかの方法で消費デバイスを制御するために用いられることになる。例えば、消費デバイスがプリンタである場合には、この要素を、文書の印刷に使う特定のタイプのインクを選択することに関連付けることができる。しかしながら、強く型付けされた環境においては、この要素または関連付けられたネームスペースは未知であり、よって第１のフィルタ後に失われることになる。
【００１７】
強く型付けされた環境において拡張されたマークアップを保存する
これから説明する実施形態によると、既知のＸＭＬベース要素に関連付けられた強く型付けされたツリーと、既知および未知のＸＭＬベース要素に関連付けられた弱く型付けされたツリーをインスタンス化することによって、ＸＭＬ（または、以下で説明される実施例においてはＸＡＭＬ）の処理中に、強く型付けされた環境において未知の要素が保存される。次に、２つのツリーが互いに相関するので、弱く型付けされたツリーが未知の要素を含み、強く型付けされたツリーの既知の要素と相関する。２つのツリーが相関されたままなので、未知のマークアップを保存する方法で、弱く型付けされたツリーをＸＭＬ（またはＸＡＭＬ）に再シリアライズ（ｒｅ−ｓｅｒｉａｌｉｚｅ）することができる。
【００１８】
実施例として、Ｍｉｃｒｏｓｏｆｔ社のＷｉｎＦＸプラットフォームに即して実施を提供する図３を考察する。説明しようとしている実施は、特許請求される主題の適用を特定の実施またはプラットフォームに限定するように用いられるべきではないことを認識し、理解すべきである。寧ろ、この実施例は、１つの特定の環境において、ここに説明される本発明の種々の原則をどのように実装できるかを示すために提供される。
【００１９】
この特定の例において、システム３００は、ソフトウェア・ベースのシステムであり、アプリケーション／フィルタ３０２と、バイナリ変換器コンポーネントおよびツリー作成器コンポーネントを有する構文解析プログラム３０４と、シリアライザ３０６と、カスタム・デシリアライザ３０８と、設計者ヘルパ３１０とを含む。
【００２０】
ＷｉｎＦＸプラットフォームとの関連で、構文解析プログラム３０４は、図示されていない他のコンポーネントと協働して、ＸＭＬベースのマークアップを構文解析し、既知の要素タグをＷｉｎＦＸクラスに合致させ、ＷｉｎＦＸクラス・オブジェクトをインスタンス化するＷｉｎＦＸオブジェクトである。構文解析プログラム３０４は、強く型付けされたＷｉｎＦＸツリーを戻す。シリアライザ３０６は、強く型付けされたＷｉｎＦＸツリーを取得し、これをＸＭＬマークアップにシリアライズするＷｉｎＦＸオブジェクトである。
【００２１】
カスタム・デシリアライザ３０８（この文脈においては、カスタムＸＡＭＬデシリアライザとも考えられる）は、構文解析プログラム３０４によって構文解析されるマークアップ要素の各々についての通知を受信するＷｉｎＦＸオブジェクトである。カスタム・デシリアライザは、任意の計算を行うことができる。マークアップ要素を処理した後、カスタム・デシリアライザは、結果コードを戻し、要素を使用すべきかまたは飛ばすべきかを構文解析プログラム３０４に命令する。
【００２２】
設計者ヘルパ３１０は、強く型付けされたＷｉｎＦＸオブジェクトについてのマークアップが作成される前に、シリアライザ３０６によって呼び出されるＷｉｎＦＸオブジェクトである。設計者ヘルパは、付加的マークアップを出すことができる。
【００２３】
作動において、システム３００は、次のように作動する。図２のＸＭＬ（または、ＸＡＭＬ）が、システム３００によって処理されると仮定する。図２の例において、未知のＸＭＬ要素「ｅｘｔ  Ｂａｒ」が、他の方法でＸＭＬ要素の既知の集合に挿入されたことに注意されたい。構文解析プログラム３０４がＸＭＬを受信したとき、この特定のシナリオにおいて、２つのことが起こる。
【００２４】
第１に、ＸＭＬは、構文解析プログラムのバイナリ変換器によって処理され、この例においてはＢＡＭＬと呼ばれるＸＭＬのバイナリ表示に変換される。次に、バイナリ表示が保存される。しかしながら、バイナリ変換プロセスにおいては、強く型付けされた環境内で行われる処理によって、全ての既知でない要素が無視される。したがって、ＸＭＬを処理する際、「ｅｘｔ  Ｂａｒ」要素に遭遇したとき、この「ｅｘｔ  Ｂａｒ」要素は無視され、バイナリ変換において事実上失われる。
【００２５】
第２に、構文解析プログラムのツリー作成器は、保存されたバイナリ表示を取得し、該バイナリ表示を処理して、強く型付けされたツリーであるオブジェクト・ツリーをインスタンス化する。このことは、ツリー作成器コンポーネントの右側に図式的に示されている。次に、このツリーをアプリケーション／フィルタ３０２に送り、処理することができる。
【００２６】
図示され、説明される実施形態において、バイナリ変換プロセスが行われるのと同時に、バイナリ変換器は、ＸＭＬ内で遭遇した各ノードまたは要素についてのカスタム・デシリアライザ３０８を呼び出す。この例において、カスタム・デシリアライザは、拡張性をプロセスに挿入する。より具体的には、構文解析プログラム３０４によって構文解析されるノードの各々について、カスタム・デシリアライザが呼び出され、該カスタム・デシリアライザが、ノードまたは要素をどのように処理すべきかを決定する。ノードが既知である場合（すなわち、ノードが、Ｔｅｘｔ、Ｇｒａｐｈｉｃｓ等のような既知の要素に関連付けられている場合）、カスタム・デシリアライザ３０８は、構文解析プログラムに戻り、該構文解析プログラムが通常どおりにノードを処理すべきであることを示す。他方、未知のノードまたは要素が存在する場合には、カスタム・デシリアライザは構文解析プログラムに戻り、該構文解析プログラムがノードをスキップするべきであり、該ノードをバイナリ表示に移さないことを示す。
【００２７】
未知のノードまたは要素を飛ばすべきであることを構文解析プログラム３０４に示すことに加えて、カスタム・デシリアライザは、弱く型付けされたＤＯＭツリーを構築する。すなわち、デシリアライザは、拡張点内から、弱く型付けされたＤＯＭツリーを構築する。この弱く型付けされたＤＯＭツリーが、カスタム・デシリアライザ３０８の左側に図式的に示される。
【００２８】
この特定の例において、あらゆる既知の要素について、デシリアライザは、例えば、ヌル・オブジェクトのようなプレースホルダ・ノードを弱く型付けされたツリー内に作成する。図示の例において、これらのプレースホルダは、黒く塗りつぶされた小円として示される。未知の要素（「ｅｘｔ  Ｂａｒ」要素のような）については、デシリアライザは、元のマークアップ、すなわちマークアップのテキスト文字列「＜ｅｘｔ  Ｂａｒ／＞」を含む「保存（ｐｒｅｓｅｒｖｅ）」ノードを作成する。これは、弱く型付けされたツリー内の星形ノードによって図式的に示される。
【００２９】
プロセスのこの時点においては、２つのツリーが存在する。すなわち、１つは既知の要素に関連付けられたノードを含む強く型付けされたツリーであり、他方は、既知の要素のためのプレースホルダを含むノードと、未知のマークアップに関連付けられたノードとを有する弱く型付けされたツリーである。
【００３０】
今や両方のツリーが作成されたので、弱く型付けされたツリーのノードを強く型付けされたツリーのノードと相関させるために、ノードごとに各々のツリーをウォークする。弱く型付けされたツリー内のノードが、強く型付けされたオブジェクトのためのプレースホルダを有する場合には、弱く型付けされたツリー内のノードは、強く型付けされたツリー内の対応するオブジェクトまたはノードに設定される。他方、弱く型付けされたツリー内のノードが、強く型付けされたツリー内の強く型付けされたオブジェクトのためのプレースホルダに設定されない場合には、弱く型付けされたツリーのノードを飛ばし、プロセスは、弱く型付けされたツリー内の次のノードに進む。この弱く型付けされたツリー内の次のノードが、強く型付けされたツリー内の強く型付けされたオブジェクトに関連付けられたプレースホルダを有する場合には、弱く型付けされたツリーのノードは、強く型付けされたツリー内の対応するオブジェクトまたはノードに設定され、プロセスは、両方のツリーをウォークするまで続く。したがって、このプロセスは、強く型付けされたツリーからのオブジェクトまたはノードと共に、弱く型付けされたツリーを有効に取り込むものである。
【００３１】
相関処理後、完全に取り込まれた弱く型付けされたツリーが戻される。弱く型付けされたツリーと強く型付けされたツリーとの間の相関が確立されると、強く型付けされたツリーをアプリケーション３０２に戻し、該アプリケーションによって作動させることができる。例えば、アプリケーションは、強く型付けされたツリー上のノードを修正または削除することができる。
【００３２】
アプリケーションが何らかの方法で強く型付けされたツリー上で作動すると、修正された強く型付けされたツリーが、シリアライザ３０６に提供され、ＸＭＬ（または、ＸＡＭＬ）に再シリアライズされる。
【００３３】
再シリアライズする際に、相関処理の逆が行なわれる。一例として、アプリケーション３０２が、強く型付けされたツリー内の上から２番目のノードを削除したと仮定する。これは、図４に図式的に示されている。ここで、シリアライザは、強く型付けされたツリー内のどのノードが弱く型付けされたツリー内のどのノードに対応するかを見つけ、次に、弱く型付けされたツリーを強く型付けされたツリーと相関させる。
【００３４】
例えば、シリアライズする際に、シリアライザ３０６が、強くおよび弱く型付けされたツリーをウォークし、該弱く型付けされたツリー上のノードを修正し、該強く型付けされたツリー上で行われた処理を反映させる。この特定の例においては、シリアライザは、強く型付けされたツリーおよび弱く型付けされたツリーにおける第１のノードに遭遇する。これらのノードが互いに対応する場合には、シリアライザは、各ツリー内の次のノードに移動し、対応を調べる。この特定の例においては、強く型付けされたツリー内の次のノードは、アプリケーションによって削除された。シリアライザは応答して、弱く型付けされたツリー内の対応するノードを見つけ、これを削除する。このことは、点線によって図面内に図式的に示される。
【００３５】
続けて、シリアライザは、強く型付けされたツリー内の次のノード−ここでは、（削除されたノードを含めて）上から３番目のノードを見つけ出す。次に、シリアライザは、弱く型付けされたツリー内の対応するノードを見つける。しかしながら、ここでは、弱く型付けされたツリーの最後に処理された対応するノードと現在の対応するノードとの間に付加的なノード（すなわち、「ｅｘｔ  Ｂａｒ」に対応するもの）が存在する。この場合、介在するノードが強く型付けされたノードに対応するものでない場合には、これは、未加工のＸＭＬとしてシリアライズされる。
【００３６】
次に、シリアライザは、引き続き強く型付けされたツリーおよび弱く型付けされたツリーを処理し、これにより、修正された強く型付けされたツリーに適合した形で弱く型付けされたツリーがシリアライズされる。したがって、このようにして、シリアライゼーションを行い、強く型付けされた環境に関連付けられたものでない拡張された要素を保存することができる。
【００３７】
この例は、修正された強く型付けされたツリーに対応させるための、弱く型付けされたツリーのシリアライゼーションについて説明するが、シリアライゼーション・プロセス全体を通じて種々の規則を適用し、弱く型付けされたツリーに対応する最終的にシリアライズされるＸＭＬに作用させることができるように、種々の規則を用い得ることを理解すべきである。例えば、どのノードをシリアライズすべきであり、どのノードをシリアライズすべきでないかを定める幾つかの規則を特定することができる。このようにして、種々の規則はシリアライゼーション・プロセスを推進することができ、特に、強く型付けされた環境において、その環境について既知でないＸＭＬに挿入された要素があるという事実に即して言えば、生成されたシリアライズされたＸＭＬは、所望の形態および予測可能な形態から構成される。
【００３８】
例示的な方法
図５は、一実施形態に従った方法におけるステップを説明するフロー図である。この方法は、いずれかの適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせに実装することができる。単なる一例において、この方法は、すぐ上に説明されたもののようなシステムと共に実装することもできる。しかしながら、特許請求される主題の精神および範囲を逸脱することなく、他のシステムが本方法を実装できることを認識し、理解するべきである。
【００３９】
ステップ５００では、強く型付けされたツリーおよび弱く型付けされたツリーをインスタンス化する。この例において、強く型付けされたツリーは、強く型付けされた環境内で既知の要素またはノードを含み、弱く型付けされたツリーは、強く型付けされた要素に関連付けられたノード、ならびに対応するＸＭＬに挿入された要素に関連付けられ、特定の強く型付けされた環境内で必ずしも既知ではないノードを含む。ステップ５０２では、強く型付けされたツリーおよび弱く型付けされたツリーを相関させるので、該弱く型付けされたツリーは、該強く型付けされたツリー上の既知のノードに対応するノードを有する。
【００４０】
いずれかの適切な方法でツリーの相関を行なうことができる。上述のプロセスにおいて、弱く型付けされたツリーは、強く型付けされた要素に対応するノードのためのプレースホルダを含み、両方のツリーを並行してウォークし、強く型付けされたノードに対応する弱く型付けされたノードを挿入するかまたはこれについての入力を行うことによって、相関を行う。
【００４１】
ツリーが作成され、相関させられると、ステップ５０４では、強く型付けされたツリーのアプリケーション、フィルタの集合、または何らかの他のコンポーネントを戻すので、強く型付けされたツリーを作動させて、修正された強く型付けされたツリーを提供することができる。強く型付けされたツリーが作動されると、該強く型付けされたツリーは、弱く型付けされたツリーと相関させるために戻される。したがって、ステップ５０６では、弱く型付けされたツリーを、戻された修正された強く型付けされたツリーと相関させ、ステップ５０８では、挿入された未知の要素を保存する方法で、相関された弱く型付けされたツリーを再シリアライズする。
【００４２】
擬似コードの例
以下の擬似コードの例は、上述の方法を実施できる１つの方法を提供する。擬似コードは、当業者によって理解され、上述された方法の１つだけの例示的な実施を構成するものである。特許請求される主題の精神および範囲を逸脱することなく、説明される実施形態を実施する他の手段を用い得ることを認識し、理解すべきである。
【００４３】
【表１】
2006323816.tif 000003
【００４４】
例示的なコンピューティング環境
上述のように、６２０で図６に図示するようなコンピューティング装置と共に、種々の実施形態を実施することができる。コンピューティング装置６２０は、処理ユニット６２１、システム・メモリ６２２、およびシステム・メモリを含む種々のシステム・コンポーネントを該処理ユニット６２１に結合させるシステム・バス６２３を含む。システム・バス６２３は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および種々のバス・アーキテクチャのいずれかを用いるローカル・バスを含む、幾つかのタイプのバス構造体のいずれかにすることができる。システム・メモリは、読取り専用メモリ（ＲＯＭ）６２４およびランダム・アクセス・メモリ（ＲＡＭ）６２５を含む。起動時などに、コンピューティング装置６２０内の要素間の情報の転送を助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）６２６が、ＲＯＭ６２４内に格納される。コンピューティング装置６２０は、ハードディスク６６０との間で読み取りおよび書き込みを行うハードディスク・ドライブ６２７と、取り外し可能な磁気ディスク６２９との間で読み取りまたは書き込みを行う磁気ディスク・ドライブ６２８をさらに含む。
【００４５】
ハードディスク・ドライブ６２７および磁気ディスク・ドライブ６２８は、それぞれハードディスク・ドライブ・インターフェース６３２および磁気ディスク・ドライブ・インターフェース６３２によって、システム・バス６２３に接続されている。ドライブおよびそれらの関連したコンピュータ可読メディアは、コンピュータ可読命令、データ構造、プログラム・モジュール、およびコンピューティング装置６２０のための他のデータの不揮発性記憶装置を提供する。ここに説明される例示的な環境は、ハードディスク６６０および取り外し可能な磁気ディスク６２９を用いるが、例示的な作動環境においては、光ディスク・ドライブおよびディスク、磁気カセット、フラッシュメモリ・カード、デジタル・ビデオ・ディスク、ベルヌーイ・カートリッジ、ランダム・アクセス・メモリ、読み取り専用メモリ等のようなコンピュータによりアクセス可能なデータを格納できる他のタイプのコンピュータ可読メディアも用い得ることを当業者であれば理解するであろう。
【００４６】
オペレーティング・システム６３５、１つまたは複数のアプリケーション・プログラム６３６、他のプログラム・モジュール６３７、およびプログラム・データ６３８を含む、多数のプログラム・モジュールを、ハードディスク６６０、磁気ディスク６２９、ＲＯＭ６２４、またはＲＡＭ６２５上に格納することができる。ユーザは、キーボード６４０およびポインティング・デバイス６４２のような入力装置を介して、コマンドおよび情報をコンピューティング装置６２０に入力することができる。他の入力装置（図示せず）は、マイク、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどを含むことができる。これらのおよび他の入力装置は、システム・バスに結合されたシリアルポート・インターフェース６４６を通して処理ユニット６２１に接続されることが多いが、パラレルポート６３４、ゲームポート、またはユニバーサル・シリアル・バス（ＵＳＢ）のような他のインターフェースによって接続することもできる。モニタ６４７または他のタイプの表示装置も、ビデオ・アダプタ６４８のようなインターフェースを介して、システム・バス６２３に接続される。モニタに加えて、コンピューティング装置は、一般に、パラレルポート・インターフェース６３４を通してシステム・バス６２３に接続される、スピーカおよびプリンタ６３０のような他の周辺出力装置を含む。
【００４７】
コンピューティング装置６２０は、プリント・サーバ６４９のような、１つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク化環境において作動することができる。プリント・サーバ６４９は、別のコンピューティング装置、サーバ、ルータ、ネットワーク・コンピューティング装置、ピア装置、または他の共有ネットワーク・ノードとすることができ、一般的には、コンピューティング装置６２０に関して上述された要素の多くを含むが、プリント・サーバ６４９は、コンピューティング装置６２０からの印刷要求を付属のプリンタ６５０に経路付けするための専用であることが多い。図１に示される論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）６５１および広域エリア・ネットワーク（ＷＡＮ）６５２を含む。このようなネットワーク環境は、事務所、企業全体にわたるコンピュータ・ネットワーク、イントラネット、およびインターネットにおいて当たり前のことである。
【００４８】
ＬＡＮネットワーク環境に用いられるとき、コンピューティング装置６２０は、ネットワーク・インターフェースまたはアダプタ６５３を通して、ローカル・ネットワーク６５１に接続される。ＷＡＮネットワーク環境に用いられるとき、コンピューティング装置６２０は、一般に、モデム６５４、またはＷＡＮ６５２にわたって通信を確立するための他の手段を含む。内蔵式にも、あるいは外付け式にもできるモデム６５４は、シリアルポート・インターフェース６４６を介してシステム・バス６２３に接続される。ネットワーク化環境においては、コンピューティング装置６２０に関連して示されたプログラム・モジュールまたはその一部を、リモートのメモリ格納装置内に格納することができる。図示のネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段も用い得ることが理解されるであろう。
【００４９】
上記の説明において、実施形態は、特に指示がない限り、１つまたは複数のコンピュータによって実行される動作および操作の記号表示を参照して説明された。したがって、時としてコンピュータにより実行されると称される、こうした動作および操作は、データを構造化された形態で表す電気信号のコンピュータの処理ユニットによる操作を含むことが理解されるであろう。この操作は、データを変形するか、またはこれをコンピュータのメモリ・システム内の位置に維持し、このことは、当業者には良く理解される方法で、コンピュータの作動を再構成するかまたは他の方法で変更する。データを維持するデータ構造は、該データの形式によって定められる特定の特性を有するメモリの物理的位置である。しかしながら、上記に即して種々の実施形態が説明されたが、当業者であれば、上述の種々の動作および操作をハードウェアにおいても実施できることを理解できるので、これらの実施形態は限定的なものであることを意図していない。
【００５０】
結論
上述の方法およびシステムは、強く型付けされた環境との関連で、未知のネームスペース要素に関連付けられたマークアップを保存することが可能である。少なくとも幾つかの実施形態において、このことは、既知のＸＭＬベース要素に関連付けられた、所謂強く型付けされたツリーと、既知および未知のＸＭＬベース要素に関連付けられた弱く型付けされたツリーをインスタンス化することによって達成される。次に、ＸＭＬベースのマークアップのデシリアライゼーションの際に、相関プロセスを用いて、強く型付けされたツリーと弱く型付けされたツリーを相関させる。次に、デシリアライゼーション・プロセスが、何らかの未知のネームスペース要素を保存する方法で、ＸＭＬベースのマークアップを再シリアライズする。
【００５１】
本発明は、構造的特徴および／または方法論的ステップに特有の言語で説明されたが、添付の特許請求の範囲に定義された本発明が、必ずしも記載された特定の特徴またはステップに限定されるものでないことを理解すべきである。寧ろ、特定の特徴およびステップは、特許請求された本発明を実施する好ましい形態として開示されている。
【図面の簡単な説明】
【００５２】
【図１】強く型付けされた環境の態様を示す図である。
【図２】強く型付けされた環境において作動することができる個別のコンポーネントを示す図である。
【図３】一実施形態による例示的なコンポーネントを示す図である。
【図４】例示的な弱く型付けされたツリーおよび強く型付けされたツリーを示す図である。
【図５】一実施形態に従った方法におけるステップを説明するフロー図である。
【図６】１つまたは複数の実施形態を実施することができる例示的コンピューティング装置を示す図である。
【符号の説明】
【００５３】
１１２：ツリー
１１４：ＸＭＬ表示
２００、３０２：アプリケーション
２０２：マークアップ
２０４：印刷システム
２０６、２００８、２１０：フィルタ
２１２、３０４：構文解析プログラム
２１４、３０６：シリアライザ
２１６：データ・ストア
３００：システム
３０８：カスタム・デシリアライザ
３１０：設計者ヘルパ
６２０：コンピューティング装置
６２１：処理ユニット
６２２：システム・メモリ
６２３：システム・バス
【図１】
2006323816.tif 000004
【図２】
2006323816.tif 000005
【図３】
2006323816.tif 000006
【図４】
2006323816.tif 000007
【図５】
2006323816.tif 000008
【図６】
2006323816.tif 000009