"XMLドキュメントを処理するためのコンピュータで実行される方法であって、プロセッサにおいて、XMLドキュメントからのデータを要求するメッセージをアプリケーションから受信すること、プロセッサにおいて、前記メッセージを受信することに応答して、前記XMLドキュメントから、要求された前記データを表わす少なくとも1つのセグメントを取り出すこと、取り出された前記少なくとも1つのセグメントをオブジェクトベースのXML表現に変換すること、前記オブジェクトベースのXML表現を少なくとも1つのアプリケーションデータオブジェクトに変換すること、プロセッサにおいて、前記少なくとも1つのアプリケーションデータオブジェクトを前記アプリケーションに伝送すること、を含む方法。前記オブジェクトベースのXML表現を少なくとも1つのアプリケーションデータオブジェクトに変換することが、少なくとも1つのXMLデータオブジェクトを少なくとも1つのアプリケーション-ドメインオブジェクトにトランスレートすることを含み、抽出された前記少なくとも1つのアプリケーションデータオブジェクトを前記アプリケーションに伝送することが、トランスレートされた前記アプリケーション-ドメインオブジェクトを前記アプリケーションに伝送することを含む、請求項1に記載の方法。前記オブジェクトベースの表現が、XML-バインディングフレームワークにおけるオブジェクトを含む、請求項1に記載の方法。前記オブジェクトベースの表現が、XMLBeansオブジェクトを含む、請求項1に記載の方法。要求された前記データを表わす少なくとも1つのセグメントを取り出すことが、前記少なくとも1つのセグメントを取り出すためにパーサに要求を送信すること、及び、前記パーサから前記セグメントを受信すること、を含む、請求項1に記載の方法。前記パーサがStAXパーサを含む、請求項5に記載の方法。プロセッサにおいて、前記オブジェクトベースの表現を確認することをさらに含む、請求項1に記載の方法。前記オブジェクトベースの表現を確認することが、プロセッサにおいて、前記オブジェクトベースの表現の、XMLスキーマ定義に対する確認を行うことを含む、請求項7に記載の方法。前記XMLドキュメントから、要求された前記データを表わす少なくとも1つのセグメントを取り出すことが、プロセッサにおいて、少なくとも1つのセグメントを取り出すこと、及び、プロセッサにおいて、取り出された前記セグメントの少なくとも1つのサブセグメントを再帰的に取り出すこと、を含む、請求項1に記載の方法。前記XMLドキュメントから、要求された前記データを表わす少なくとも1つのセグメントを取り出すことが、プロセッサにおいて、構成から前記XMLドキュメントの前記少なくとも1つのセグメントのロケーションを要求すること、プロセッサにおいて、要求された前記ロケーションを受信すること、及び、プロセッサにおいて、要求された前記ロケーションからデータを取り出すこと、を含む、請求項1に記載の方法。要求された前記ロケーションからデータを取り出すことが、プロセッサにおいて、前記データを取り出すためにパーサに前記XMLドキュメントをパースするようにコールすることを含む、請求項10に記載の方法。前記XMLドキュメントから、要求された前記データを表わす少なくとも1つのセグメントを取り出すことが、プロセッサにおいて、前記XMLドキュメント内のロケーションのトラックを保つためにセグメントカーソルをインスタンス化すること、プロセッサにおいて、前記セグメントカーソルに対応しているロケーションでデータを取り出すこと、を含む、請求項1に記載の方法。XMLドキュメントを生成するためのコンピュータで実行される方法であって、プロセッサにおいて、アプリケーションからデータオブジェクトを受信すること、プロセッサにおいて、前記データオブジェクトをXML-バインディングフレームワークにおけるオブジェクトにトランスレートすること、プロセッサにおいて、前記XML-バインディングフレームワークにおける前記オブジェクトをXMLセグメントに変換すること、及び、前記XMLセグメントをデータストアに書き込むこと、を含む、方法。前記XML-バインディングフレームワークにおける前記オブジェクトが、XMLBeansオブジェクトを含む、請求項13に記載の方法。前記XMLセグメントをデータストアに書き込むことが、新しいXMLドキュメントを作成することを含む、請求項13に記載の方法。前記XMLセグメントをデータストアに書き込むことが、前記XMLセグメントを既存のXMLドキュメントに追記することを含む、請求項13に記載の方法。前記XMLセグメントが複数のデータ要素を含み、前記XMLセグメントをデータストアに書き込むことが、プロセッサにおいて、前記データ要素を増加的に書き込むことを含む、請求項13に記載の方法。前記XMLセグメントの少なくとも1つのデータ要素がエンドタグを含み、前記データ要素を増加的に書き込むことが、プロセッサにおいて、前記XMLセグメントの要素に対する少なくとも1つのエンドタグを除去すること、プロセッサにおいて、除去された前記エンドタグをスタック上にプッシュすること、プロセッサにおいて、子データ要素を増加的に前記データストアに書き込むことプロセッサにおいて、前記スタックから前記XMLセグメントに対する前記少なくとも1つのエンドタグをポップすること、プロセッサにおいて、ポップされた前記エンドタグを前記データストアに書き込むこと、を含む、請求項13に記載の方法。XMLドキュメントをフラットファイルに変換するためのコンピュータで実行される方法であって、少なくとも1つのプロセッサを含むコンピューティングシステムにおいて、プロセッサにおいて、XMLドキュメントをフラットファイルに変換するために要求を受信すること、プロセッサにおいて、前記フラットファイルに対する構成を得ること、プロセッサにおいて、前記XMLドキュメントの少なくとも1つのセグメントを取り出すこと、プロセッサにおいて、取り出された前記少なくとも1つのセグメントをオブジェクトベースの表現に変換すること、プロセッサにおいて、前記オブジェクトベースの表現から少なくとも1つのオブジェクトを抽出すること、プロセッサにおいて、抽出された前記少なくとも1つのオブジェクトを表わすデータを、前記得られた構成によって指定されるフォーマットで、前記フラットファイルに書き込むこと、を含む、方法。プロセッサにおいて、得られた前記構成によって指定される前記フォーマットに応答して、前記XMLドキュメントの少なくとも1つのセグメントから少なくとも1つのデータ項目を導出すること、プロセッサにおいて、導出された前記データを前記フラットファイルに書き込むこと、をさらに含む、請求項19に記載の方法。XMLドキュメントをフラットファイルに変換するためのコンピュータで実行される方法であって、少なくとも1つのプロセッサを含むコンピューティングシステムにおいて、プロセッサにおいて、XMLドキュメントをフラットファイルに変換するために要求を受信すること、プロセッサにおいて、前記フラットファイルに対する構成を得ること、プロセッサにおいて、前記XMLドキュメントの第1のセグメントを取り出すこと、プロセッサにおいて、前記第1のセグメントをオブジェクトベースの表現に変換すること、プロセッサにおいて、前記XMLドキュメントの第1のセグメントと前記XMLドキュメントの第2のセグメントとの間の少なくとも1つのクロスリファレンスの指示を受信すること、プロセッサにおいて、少なくとも1つのクロスリファレンスの前記指示に基づいて、前記XMLドキュメントの前記第1の部分のオブジェクトベースの表現から抽出される少なくとも1つのクロスリファレンスされる値をメモリ内に維持すること、プロセッサにおいて、前記XMLドキュメントの前記第2のセグメントを取り出すこと、プロセッサにおいて、前記第2のセグメントをオブジェクトベースの表現に変換すること、プロセッサにおいて、前記XMLドキュメントの前記第1の部分の前記オブジェクトベースの表現から少なくとも1つのオブジェクトを抽出すること、プロセッサにおいて、前記XMLドキュメントの前記第2の部分の前記オブジェクトベースの表現から少なくとも1つのオブジェクトを抽出すること、プロセッサにおいて、前記XMLドキュメントの前記第1の部分及び前記第2の部分の前記オブジェクトベースの表現から抽出されるオブジェクトを表わすデータを、得られた前記構成によって指定されるフラットファイルフォーマットで書き込むこと、を含む、方法。前記XMLドキュメントの前記第1の部分及び前記第2の部分の前記オブジェクトベースの表現から抽出されるオブジェクトを表わすデータを書き込むことが、前記フラットファイルに対する前記構成によって指定される様式で前記XMLドキュメントの前記第1の部分及び前記第2の部分からのデータを組み合わせること、を含む、請求項21に記載の方法。前記XMLドキュメントの前記第1の部分の前記オブジェクトベースの表現から抽出される前記少なくとも1つのクロスリファレンスされる値をメモリ内に維持することが、前記XMLドキュメントの前記第1の部分の前記オブジェクトベースの表現から抽出される各クロスリファレンスされる値をメモリロケーション内に格納し、且つ前記値をエイリアスによって識別すること、を含む、請求項21に記載の方法。前記少なくとも1つのクロスリファレンスされる値を格納した後で、メモリから前記第1の部分の前記オブジェクトベースの表現を廃棄すること、をさらに含む、請求項21に記載の方法。プロセッサにおいて、得られた前記構成によって指定される前記フォーマットに応答して、前記XMLドキュメントの前記第1の部分及び前記第2の部分のうちの少なくとも1つから少なくとも1つのデータ項目を導出すること、プロセッサにおいて、前記導出されたデータを前記フラットファイルに書き込むこと、をさらに含む、請求項21に記載の方法。XMLドキュメントを処理するためのコンピュータプログラム製品であって、一時的なものでないコンピュータ可読記憶媒体と、コンピュータプログラムコードであって、少なくとも1つのプロセッサに、XMLドキュメントからのデータを要求するメッセージをアプリケーションから受信するステップと、前記メッセージを受信するステップに応答して、前記XMLドキュメントから、要求された前記データを表わす少なくとも1つのセグメントを取り出し、取り出された前記少なくとも1つのセグメントをオブジェクトベースのXML表現に変換し、及び、前記オブジェクトベースのXML表現を少なくとも1つのアプリケーションデータオブジェクトに変換し、前記少なくとも1つのアプリケーションデータオブジェクトを前記アプリケーションに伝送するステップと、を行わせるための、媒体上でエンコードされるコンピュータプログラムコードと、を備えるコンピュータプログラム製品。XMLドキュメントを生成するためのコンピュータプログラム製品であって、一時的なものでないコンピュータ可読記憶媒体と、コンピュータプログラムコードであって、少なくとも1つのプロセッサに、アプリケーションからデータオブジェクトを受信するステップと、前記データオブジェクトをXML-バインディングフレームワークにおけるオブジェクトにトランスレートするステップと、前記XML-バインディングフレームワークにおける前記オブジェクトをXMLセグメントに変換するステップと、前記XMLセグメントをデータストアに書き込むステップと、を行わせるための、媒体上でエンコードされるコンピュータプログラムコードと、を備えるコンピュータプログラム製品。XMLドキュメントをフラットファイルに変換するためのコンピュータプログラム製品であって、一時的なものでないコンピュータ可読記憶媒体と、コンピュータプログラムコードであって、少なくとも1つのプロセッサに、XMLドキュメントをフラットファイルに変換する要求を受信するステップと、前記フラットファイルに対する構成を得るステップと、前記XMLドキュメントの少なくとも1つのセグメントを取り出すステップと、取り出された前記少なくとも1つのセグメントをオブジェクトベースの表現に変換するステップと、前記オブジェクトベースの表現から少なくとも1つのオブジェクトを抽出するステップと、抽出された前記少なくとも1つのオブジェクトを表わすデータを、得られた前記構成によって指定されるフォーマットで前記フラットファイルに書き込むステップと、を行わせるための、媒体上でエンコードされるコンピュータプログラムコードと、を備えるコンピュータプログラム製品。XMLドキュメントをフラットファイルに変換するためのコンピュータプログラム製品であって、一時的なものでないコンピュータ可読記憶媒体と、コンピュータプログラムコードであって、少なくとも1つのプロセッサに、XMLドキュメントをフラットファイルに変換する要求を受信するステップと、前記フラットファイルに対する構成を得るステップと、前記XMLドキュメントの第1のセグメントを取り出すステップと、前記第1のセグメントをオブジェクトベースの表現に変換するステップと、前記XMLドキュメントの第1のセグメントと前記XMLドキュメントの第2のセグメントとの間の少なくとも1つのクロスリファレンスの指示を受信するステップと、少なくとも1つのクロスリファレンスの前記指示に基づいて、前記XMLドキュメントの前記第1の部分の前記オブジェクトベースの表現から抽出される少なくとも1つのクロスリファレンスされる値をメモリ内に維持するステップと、前記XMLドキュメントの前記第2のセグメントを取り出すステップと、前記第2のセグメントをオブジェクトベースの表現に変換するステップと、前記XMLドキュメントの前記第1の部分の前記オブジェクトベースの表現から少なくとも1つの値を抽出するステップと、前記XMLドキュメントの前記第2の部分の前記オブジェクトベースの表現から少なくとも1つのオブジェクトを抽出するステップと、前記XMLドキュメントの前記第1の部分及び前記第2の部分の前記オブジェクトベースの表現から抽出されるオブジェクトを表わすデータを、得られた前記構成によって指定されるフラットファイルフォーマットで書き込むステップと、を行わせるための、媒体上でエンコードされるコンピュータプログラムコードと、を備えるコンピュータプログラム製品。XMLドキュメントを処理するためのシステムであって、プロセッサを有するコンピューティングシステムにおいて、XMLドキュメントからのデータを要求するメッセージをアプリケーションから受信し、且つXMLセグメントの抽出を要求するためのフレームワークと、要求された前記データを表わす少なくとも1つのセグメントを前記フレームワークに提供するための、前記フレームワークに通信可能に結合される、パーサと、前記取り出された少なくとも1つのセグメントをオブジェクトベースのXML表現に変換し、且つ前記オブジェクトベースのXML表現を少なくとも1つのアプリケーションデータオブジェクトに変換するための、前記フレームワークに通信可能に結合される、トランスレーション層と、を備え、前記フレームワークが、前記少なくとも1つのアプリケーションデータオブジェクトを前記アプリケーションに伝送する、システム。XMLドキュメントを生成するためのシステムであって、プロセッサを有するコンピューティングシステムにおいて、アプリケーションからデータオブジェクトを受信するためのフレームワークと、前記データオブジェクトをXML-バインディングフレームワークにおけるオブジェクトにトランスレートし、且つ前記XML-バインディングフレームワークにおける前記オブジェクトをXMLセグメントに変換するための、前記フレームワークに通信可能に結合される、トランスレーション層と、前記XMLセグメントを格納するための、前記フレームワークに通信可能に結合される、データストアと、を備えるシステム。XMLドキュメントをフラットファイルに変換するためのシステムであって、プロセッサを有するコンピューティングシステムにおいて、XMLドキュメントをフラットファイルに変換する要求を受信するためのフレームワークと、前記フラットファイルに対する構成を前記フレームワークに伝送するための、前記フレームワークに通信可能に結合される、コンフィギュレータと、前記構成に基づいて、前記XMLドキュメントの少なくとも1つのセグメントを取り出すための、前記フレームワークに通信可能に結合される、パーサと、取り出された前記少なくとも1つのセグメントをオブジェクトベースの表現に変換するための、前記フレームワークに通信可能に結合される、トランスレーション層と、前記フレームワークは、前記オブジェクトベースの表現から少なくとも1つのオブジェクトを抽出し、抽出された前記少なくとも1つのオブジェクトを、得られた前記構成によって指定されるフォーマットでフラットファイルに格納するための、前記フレームワークに通信可能に結合される、データストアと、を備えるシステム。必要とされるのは、したがって、アプリケーションがパーシングの低レベルの詳細に関与することを要求することなく、ドキュメントの異なる部分へのランダムアクセスを許可しながら、シリアルAPIの利点を提供する、XML処理システム及び方法である。さらに必要とされるのは、DOMのような上記で説明されたツリートラバーサル方法において見出されるように厳しいメモリ制限を被らない技術である。さらに必要とされるのは、従来技術の方法の制限及び欠点を回避するXMLパーシングスキームである。種々の実施形態において、本発明は、StAXのようなプルベースのストリーミングパーサをXMLBeansのようなXMLオブジェクトバインディングフレームワークと組み合わせることによって、XMLドキュメントを処理するための改善されたシステム及び方法を提供する。このように、本発明は、メモリ制限を被ることなく任意のサイズのXMLドキュメントを処理することができる。加えて、本発明の種々の実施形態は、StAX及びXMLBeansからアプリケーションコードを隔離するフレームワークを提供する。アプリケーションデータオブジェクトは、StAX及びXMLBeansを意識する必要はない。コードは、これにより、より容易に維持することができ、XMLオブジェクトバインディングフレームワークXMLBeansと組み合わせたXMLパーサStAXの使用は、コードがアプリケーションの動作に悪影響を及ぼすことなくスワップされ、強化され、又は他の方法で修正されることを可能にする。種々の実施形態において、本発明のシステム及び方法はまた、以下の特色及び利点を提供する。●それらを特定用途向けハンドラによって取り扱うことができるように、アプリケーションへの確認エラーメッセージのハンドリングの構成可能なConfigurableスキーマ確認及びデリゲーション●XMLスキーマ定義XMLSchemaDefinitionXSD確認に失敗したセグメントの構成可能なスキップ/包含●XSD確認に失敗したレコードを識別する一助とするためのXSDエラーメッセージの構成可能なカスタマイゼーション●XMLファイルのXPathを介したフラットファイルへの構成可能な変換●アプリケーションデータオブジェクトからのXMLの増分的生成incrementalgeneration●対応するアプリケーションデータオブジェクトを提供しながらXMLセグメントをシリアルに抽出し且つ処理することStAXのようなプルベースのストリーミングパーサとXMLBeansのようなXMLオブジェクトバインディングフレームワークとの組合せは、プログラマが低レベルのXML処理ではなくJava登録商標オブジェクトに対処することができるように、等価なJava登録商標インターフェース/クラスへのスキーママッピングを容易にしながら、本発明のXMLパーサがあらゆるサイズのXMLドキュメント上で動作することを可能にする。XMLドキュメントは、これにより、アプリケーションによって必要とされる場合にセグメントで処理することができる。XMLドキュメントから一度に一つのセグメントが抽出され、XMLBeansは、抽出されたセグメントをオブジェクトにロードするのに用いられる。逆に言えば、XMLドキュメントは、XMLBeansオブジェクトからXMLセグメントを生成し、生成されたXMLを、StAXを用いてストリームすることによって作成することができる。このように、あらゆるサイズのXMLドキュメントを増加的に生成することができる。一実施形態において、アプリケーションデータオブジェクトは、XMLBeansオブジェクトとアプリケーションデータオブジェクトとの間のマッピングを提供するために別個のトランスレーション層を提供することによって、StAX及びXMLBeansコードから隔離される。XMLBeans関連のコードは、したがって、これがトランスレーション層内にのみ収容されることになるため、アプリケーションの他の部分に増殖しない。ゆえに、XMLBeansに精通する開発者は、トランスレーション層に集中することができ、一方、アプリケーション開発者は、StAX又はXMLBeansを絶えず理解する必要なしに、ビジネス論理部の実装に集中することができる。付属の図面は、本発明の幾つかの実施形態を例証し、且つ、説明と共に、本発明の原理を解説するのに役立つ。図面に示された特定の実施形態は単なる例示的なものであって、本発明の範囲を限定することを意図されるものではないことを当業者は認識するであろう。システムアーキテクチャここで図1を参照すると、一実施形態に係る本発明を実施するためのアーキテクチャの例を描いたブロック図が示されている。XMLパーシングシステム100は、フレームワーク102、コンフィギュレータ103、StAXパーサ104、XMLBeans105、及びトランスレーション層106を含む。XMLドキュメント107は、例えば、本発明の他のコンポーネントに対してローカルであってもよいし又はリモートであってもよいデータストア108のようなあらゆるソースから来ることができる。アプリケーション101は、XMLドキュメント107からのデータを要求するあらゆるソフトウェアアプリケーションである。フレームワーク102は、XMLドキュメント107の生成並びに既存のXMLドキュメント107からのデータの抽出及びパーシングを制御するための機能性モジュールである。フレームワークは、XMLドキュメント107のストリームされたパーシングのためのStAXパーサ104と、アプリケーションコードを生XMLから隔離するオブジェクトバインディングフレームワークを実装するためのXMLBeans105とを含む本発明の技術を実装するために、他のコンポーネントを採用し、且つこれと対話する。トランスレーション層106は、XMLBeansオブジェクトとアプリケーションデータオブジェクトとの間のマッピングを提供するように、XMLBeansオブジェクトからドメインオブジェクトを生成する。コンフィギュレータ103は、XMLの構造、トランスレータクラス、無効なレコードの包含/排除、XSD確認を行うかどうか、XMLとフラットファイルとの変換構成などについての情報をフレームワーク103に提供する。図1に示された種々の機能性モジュールは、別個のコンピューティングエンティティ上で走るソフトウェアとして実装することができ、又はそれらは、あらゆる所望の構成で組み合わされてもよい。それらは、あらゆる数のハードウェアデバイスにわたって分散された様式で実装されてもよい。機能性モジュールの間での通信は、TCP/IP及びHTTPのような公知のネットワークプロトコルを用いて、あらゆる公知のデジタル通信媒体上で行われてもよい。図1における及び別途本明細書に記載された機能性モジュールの特定の配置は、本発明の一実施形態の例証となることを意図され、本発明の範囲をいかなる方法によっても制限すると考えられるべきではない。本発明の技術によれば、XMLパーシングシステム100は、メモリ制限を被ることなく、任意のサイズのXMLドキュメントの処理を容易にし、アプリケーションデータオブジェクトは、XMLBeansオブジェクトとアプリケーションデータオブジェクトとの間のマッピングを提供するために別個のトランスレーション層106を提供することによって、StAX及びXMLBeansコードから隔離される。一実施形態において、システム100は、アプリケーション101がフレームワーク102からのデータを必要とされるときにプルベースのパラダイムで要求するように、アプリケーション101をそれによって制御下におくことができる、機構を提供する。加えて、一実施形態において、システム100は、プログラマが低レベルのXML処理ではなくJava登録商標オブジェクトに対処することができるように、等価なJava登録商標インターフェース/クラスへのスキーママッピングを容易にしながら、システム100があらゆるサイズのXMLドキュメント上で動作することを可能にするために、オブジェクトバインディングフレームワークXMLBeans105のようなを採用する。一実施形態において、アプリケーション101からの要求に応答して、フレームワーク102は、要求を満たすのに必要とされる場合にXMLドキュメント107の一部を抽出する。抽出されたXML部分は、XMLBeans105に渡され、XMLBeans105は、該部分のメモリ内モデルを生成し、且つこれをアプリケーション101に提示するためにフレームワーク102に戻す。このように、メモリ内でXMLドキュメント全体107を表わす必要性が回避される。一実施形態において、トランスレーション層106は、XMLBeans105によって生成されたメモリ内モデルを、これがアプリケーション101によって理解されることが可能なドメインオブジェクトの形態であるようにトランスレートする。例えば、アプリケーションが、ファーストネーム、ラストネーム、アドレスなどを含むがそのデータを表わすXMLが異なるフォーマットを有する、employeeオブジェクトを要求する場合、トランスレーション層106は、必要とされるトランスレーションを行う。動作方法本発明の技術によれば、少なくとも3種類の動作、すなわち、XMLセグメント及びサブセグメントに対応しているアプリケーションデータオブジェクトを得るためにXMLドキュメントを処理すること、アプリケーションデータからXMLドキュメントを生成すること、及びXMLドキュメントをフラットファイルに変換すること、が利用可能である。ここで図5を参照すると、一実施形態に係るXMLドキュメントを処理するための方法の概要を描いた流れ図が示されている。アプリケーション101は、データオブジェクトを要求する502。フレームワーク102は、StAXパーサ104からデータチャンクを要求し且つ受信する503。例えば、アプリケーション101がemployeeを表わす要求されたデータを有する場合、StAXパーサ104からのデータチャンクは、employeeを表わすデータの次のチャンクであってもよい。フレームワーク102は、次いで、データチャンクをトランスレーション層106に渡し504、トランスレーション層106が変換を行い、且つXMLBeansフォーマットで等価なオブジェクトツリーを戻す505。フレームワーク102がオブジェクトツリーを受信すると、フレームワーク102は、トランスレーション層106をコールして、オブジェクトをアプリケーション101が理解できるフォーマットに変換する506。トランスレーション層106は、結果が、XML低レベルAPI、XMLBeansオブジェクト、及びアプリケーションが関係しない他のアーチファクトのないものであるように、オブジェクトツリーをこうしたフォーマットにトランスレートする。ここで図6を参照すると、一実施形態に係るXMLドキュメントを生成するための方法の概要を描いた流れ図が示されている。アプリケーション101は、データオブジェクトをフレームワーク102に渡す。フレームワーク102は、トランスレーション層106をコールして、XMLBeansオブジェクトへのトランスレーションを行う。トランスレーションが行われると、フレームワーク102は、XMLBeansオブジェクトを用いて、等価なXMLを抽出する603。フレームワーク102は、次いで、XMLをデータストア108に書き込む605。一実施形態において、ステップ605は、新しいXMLドキュメントの作成の開始、又は以前に開始された既存のXMLドキュメントへのXMLの追記を含む。この様式、個別的なpiecemeal様式、又はストリーミングの様式で、XMLドキュメントの作成が容易にされる。一実施形態において、フレームワーク102は、指定されたメモリ限界に達するとすぐにXMLの書き込みを行う。StAXパーサ104は、すべてのサブセグメントが書き込まれるときにXMLのどの部分が書き込まれるべきか及びどの部分が書き込まれることになるメモリ内に保たれるべきかを判定するのに用いられる。例えば、以下のXMLが生成されることになると想定する。これは、employeesセグメント内で各employeeセグメントを増加的に生成することによって達成される。一実施形態において、XMLを生成するために以下のステップが行われる。●1最初にemployeesセグメントを生成するが、そのエンドタグ</employees>は書き込まない。生成されたセグメントをメモリ内に保持する。フレームワーク102は、XMLをStAXパーサ104に渡し、且つStAXパーサ104にXMLをオープニングタグ及びエンディングタグのような個々のタグに分割するように頼む。フレームワーク102は、次いで、エンディングタグ以外のすべてのタグを書き込む。ここで、フレームワーク102は、XMLセグメント内の個々のタグを識別するためにStAXパーサ104を利用している。●2employee要素の付加を続ける。フレームワーク102は、employeeデータに対応しているXMLの追記を続ける。●3アプリケーション101がすべてのemployee要素が付加されていることを示すと、エンドタグ</employees>を書き込む。一実施形態において、本発明のシステムはまた、種々のタイプのドキュメント変換を行うことができる。例えば、XMLドキュメントをフラットファイルに変換することは時々有用であり、こうした変換は、XMLをアップロードすることができない場合があるコンポーネントSQLLoaderのようなとの関連において動作するときの、データファイルの大量アップロードのために用いられてもよい。ドキュメント変換を行うときに、フラットファイルを生成するときにオリジナルのXMLドキュメントの異なる部分からのデータを得ることが時々必要な場合がある。各データチャンクは、一般に、結果として得られるフラットファイルにおけるライン又はラインの数に対応する。しかしながら、ラインをポピュレートするためのデータは、別のチャンク、例えば異なるソース又はソースの組合せから得る必要がある場合があるチャンクから来る場合がある。一実施形態において、コンフィギュレータ103は、フラットファイルのラインを生成するのに必要とされるこれらのデータ片を取り出し、且つフラットファイルのラインを生成するのに必要とされる限りにわたってメモリ内に保持することができるように、他のデータチャンクの送信元を識別する最初のデータチャンクを解釈する。処理されているデータチャンクによってクロスリファレンスされるデータ要素は、これにより必要とされる場合に取り出すことができる。このように、コンフィギュレータ103は、メモリ使用量を管理可能な量に依然として保ちながら、必要なデータ要素が取り出され且つ提示されることを保証する。一実施形態において、フラットファイルにおけるラインは、データのソースを指定する。例えば、フラットファイルを生成する際に該当する情報を得るためにパートナーのすなわちデータの補助ソース情報が必要とされると想定する。XMLドキュメントからの最初のデータチャンクは、パートナーを指定してもよい。パートナーの識別は、他のデータチャンクを処理するための付加的な情報を得ることに該当する。したがって、フレームワークは、フラットファイルの生成を容易にするように、他のデータチャンクを処理しながらパートナー名をメモリ内に維持する。コンフィギュレータ103は、どのデータ要素がメモリ内に維持されるべきか及びそれらが処理された後でどれを廃棄することができるかを判定するのに必要とされる情報をフレームワーク102に提供する。一実施形態において、コンフィギュレータ103は、XPathドキュメントを用いてこうした情報を指定する。XPathドキュメントは、どのデータ項目がクロスリファレンスであるかを示し、且つどのデータチャンクが提示されることになるどのデータを要求するかをさらに示す。XPath、XMLPath言語は、XMLドキュメントからノードを選択するための周知のクエリ言語である。この情報が与えられると、フレームワーク102は、クロスリファレンスを必要とされる限りにわたってメモリ内に保持し、且つもはや必要とされないこれらのアイテムを廃棄することができる。XPathドキュメントは、1つのXMLタイプから別のXMLタイプへと変化してもよい。一実施形態において、クロスリファレンスがもはや必要とされなくなると、例えばメモリを解放する必要がある場合に、ドキュメント変換がまだ完了していない場合であっても、それらは廃棄されてもよい。別の実施形態において、クロスリファレンスは、ドキュメント変換が完了するまで保持される。さらに別の実施形態において、もはや必要とされないクロスリファレンスは、それらが後で利用可能にされてもよいように、ディスク又は他の記憶装置にスワップアウトされる。XMLドキュメントの処理一実施形態において、本発明のシステムは、或る動作クライアント要求をサービスすることのようなを行う際にアプリケーション101によって使用可能なアプリケーションドメインオブジェクトを生成するために、XMLドキュメント107を処理することができる。XMLドキュメント107は、例えば、どこにドキュメントが行くべきか及びどこからドキュメントが来るべきかを示すtoタグ及びfromタグを含む、多くの異なる種類の情報を収容することができる。employee情報を収容するXMLドキュメントの例は以下の通りである。一実施形態において、アプリケーションドメインオブジェクトは、アプリケーション100上記の例に示された<employee>キーのようなによって渡されるキーに基づいて生成される。キーは、コンフィギュレータ103によって用いられる構成ファイルを介して対応するXMLセグメントにマップすることができる。StAXパーサ104は、アプリケーション101によってパスインされる各セグメント名に対応しているセグメントを抽出する。XMLBeans105は、抽出されたXMLセグメントを用いて、対応するXMLBeansオブジェクトを生成する。フレームワーク102は、生成されたXMLBeansオブジェクト上でXSD確認を行い、確認エラーは、さらなる処理のために特定用途向けエラーハンドラにデリゲートされる。一実施形態において、XSD確認に失敗する事例では、無効なXMLセグメントを含むようにフレームワーク102が構成されない限り同じキーをもつ次のセグメントがフレームワーク102によってフェッチされる。このプロセスは、有効なセグメントが見つけ出されるまで、又は次のセグメントの始まりが検出されるまで、若しくはXMLドキュメント全体107が尽くされるexhaustedまで繰り返される。一実施形態において、フレームワーク102は、アプリケーションデータオブジェクトの作成をXMLBeansオブジェクトからトランスレーション層106にデリゲートする。結果として得られたアプリケーションデータオブジェクトがアプリケーション101に戻される。一実施形態において、本発明のシステムは、メモリ制限に直面することなく任意のサイズのXMLドキュメント107を処理することができる。アプリケーション101は、アプリケーション101が、増分的なシリアルな様式で各サブセグメントに対するデータを得ることができるように、そのサブセグメントのいずれの包含もなしにセグメントに収容されたデータに対応しているアプリケーションデータオブジェクトを得ることができる。一実施形態において、これは、SegmentCursorクラスのインスタンスを戻すopenSegmentメソッドをコールすることによって達成される。アプリケーション101は、メソッドgetDataObjectを用いることによって、そのサブセグメントからの如何なるデータの包含もなしに、特定のセグメントに対応しているデータオブジェクトを得ることができる。メソッドは、employeeサブセグメントに対応しているデータオブジェクトをシリアルに得るために、次のを再帰的に用いることができる。ここで図2Aを参照すると、一実施形態に係るXMLドキュメントの処理を描いたイベントトレースダイヤグラムが示されている。図2Aに描かれた特定のステップは、本発明の一実施形態の単に例示的なものに過ぎない。アプリケーション101は、XMLドキュメントのロケーション及び構成キーをフレームワーク102に送信する。フレームワークは、アプリケーション101によって提供されたキーに基づいて、コンフィギュレータ103からの構成情報XMLドキュメントの構造のようなを要求する202。この情報を取り出すために、フレームワーク102は、コンフィギュレータ103から、上記の例となるXMLドキュメントに示されるように、to及びfrom情報を収容しているXMLセグメントheaderのロケーションを要求する。コンフィギュレータ103は、XMLドキュメント107の該当する部分を見つけ出すことができる場所を示すマッピングを収容し、したがって、コンフィギュレータ103は、例えば、セグメント、サブセグメント、X-Pathクエリ、トランスレータクラスなどを含むXML構造についての構成情報を送信すること203によって、要求202に応答する。上記の例では、XMLドキュメント107のヘッダにおいてこうした情報が見つけ出される。アプリケーション101は、XMLセグメントの名前を提供することによって、アプリケーションドメインオブジェクトを要求する。フレームワーク102は、XMLセグメントを抽出するためにStAXパーサ104に要求を送信する205。StAXパーサ104は、識別された情報に遭遇するまでXMLドキュメント107をパースし、上記の例では、これは、<header>タグが見つけ出されるまでXMLドキュメント107をパースし、且つタグが見つけ出されるときにフレームワーク102に通知する。フレームワークは、エンドタグ</header>が見つけ出されるまでStAXを介してXMLの取り出しを続ける。一実施形態において、こうしたパーシングは、データストア108からのデータの、繰返される取り出しを含んでもよい。識別された情報に遭遇すると、StAXパーサ104は、XMLセグメントを戻す206。フレームワーク102は、次いで、例えば、抽出されたXMLセグメントとアプリケーションによって提供されたセグメント名とを渡すことによって、XMLBeansオブジェクトへの変換を要求するためにトランスレーション層106に要求を送信する207。一実施形態において、トランスレーション層106は、周知の技術に従ってXMLセグメントをXMLBeansオブジェクトに変換するためのXMLBeansモジュール105を含む。トランスレーション層106及び/又はXMLBeansモジュール105は、フレームワーク102に対して及びシステム100の他のコンポーネントに対してローカルに位置づけられてもよいし又はリモートに位置づけられてもよい。トランスレーション層106は、XMLセグメント及びセグメント名を用いて生成された対応するXMLBeansオブジェクトを戻す208。フレームワーク102は、次いで、オブジェクトをアプリケーション101によって理解されることが可能なフォーマットに変換するために、XMLBeansオブジェクトをトランスレーション層106に送信209し、トランスレーション層106にXMLBeansオブジェクトとセグメントキーを渡す。トランスレーション層106がこのアプリケーションドメインオブジェクトを生成すると、トランスレーション層106は、アプリケーションドメインオブジェクトを戻し210、次いで、これをフレームワーク102がさらなる処理のためにアプリケーション101に戻す211。一実施形態において、コンフィギュレータ103は、例外ハンドリングを制御する。例えば、無効なXMLに遭遇する場合に、コンフィギュレータ103は、無効なXMLがスキップされるべきかどうか又は無効なXMLの取り出し可能などんな部分をも取り出す試みがなされるべきかどうかを示すことができる。ここで図2B及び図2Cを参照すると、付加的な詳細とエラーハンドリングとを含む別の実施形態に係るXMLドキュメントの処理を描いたイベントトレースダイヤグラムが示されている。アプリケーション101は、例えばopenDataObjectsegmentNameコールを発行することによりXMLセグメントの名前を提供することによって、セグメントに対するアプリケーションドメインオブジェクトが開かれることを要求する241。フレームワーク102は、コールを受信し、且つ例えばextractStartElementAndItsAttributessegmentNameをコールすることによって、セグメントに対するスタート要素及び属性を抽出する242ために、StAXパーサ104への要求をサブミットする。StAXパーサ104は、セグメントXMLを戻す257。フレームワーク102は、次いで、例えばappendEndTagInExtractedXmlをコールすることによって、抽出されたXMLにエンドタグを追記する243。抽出されたXMLセグメントは、エンドタグが追記された後で整形式のXMLに変化する。フレームワーク102は、例えば、getXmlObjectextractedXml、segmentNameコールを介して、抽出されたXML及びセグメント名をトランスレーション層106に渡すことによって、トランスレーション層106からのXMLBeansオブジェクトを要求する244。トランスレーション層106は、createCorrespondingXmlObjectをコールすることによって、対応するXMLBeansオブジェクトを生成し245、且つ生成したXMLBeansオブジェクトを戻す246。フレームワーク102は、例えばgenerateDataObjectxmlObjectメソッドをコールすることによって、アプリケーションドメインオブジェクトを要求する247。トランスレーション層106は、アプリケーションドメインオブジェクトを戻すこと248によって応答する。フレームワーク102は、次いで、例えばinstantiateSegmentCursorObjectメソッドをコールすることによって、セグメント内のロケーションのトラックを保つために、アプリケーションドメインオブジェクトを要約するセグメントカーソルをインスタンス化する249。このセグメントカーソルは、アプリケーション101に戻される250。アプリケーション101は、このとき、アプリケーション101がデータフローの制御下にあるように、データオブジェクトをプル型配置で要求することができる。アプリケーション101は、例えばgetDataObjectをコールすることによって、セグメントカーソル231によって要約されたアプリケーションドメインオブジェクトを要求する251。セグメントカーソル231は、要求されたアプリケーションドメインオブジェクトを戻す252。必要とされる場合に、アプリケーション101は、次いで、例えばnextsubSegmentNameコールを発行することによりサブセグメント名を渡すことによって、アプリケーションドメインオブジェクトを要求する253。セグメントカーソル231は、現在開かれているセグメント及びそのサブセグメントの名前を提供するフレームワーク102に要求を転送する254。フレームワーク102は、図2Aとの関連において上記で説明された技術に従うアプリケーションドメインオブジェクトを生成する257。しかしながら、一実施形態において、XMLは、現在の開かれたセグメント内からのみ抽出される。フレームワーク102は、次いで、アプリケーションドメインオブジェクトを戻し255、セグメントカーソル231は、オブジェクトをアプリケーション101に戻す256。図2Cに続くと、アプリケーション101は、例えば、getDataObjectsegmentNameコールを介してXMLセグメントの名前を提供することによって、XMLセグメントに対するアプリケーションドメインオブジェクトを要求する261。フレームワーク102は、例えば、extractXmlSegmentsegmentNameをコールすることによって、識別されたセグメント名に対するXMLセグメントを抽出するために、StAXパーサ104をコールする262。StAXパーサ104は、セグメントXMLを戻す274。フレームワーク102は、次いで、例えば、getXmlObjectextractedXml,segmentNameコールを介して、抽出されたXML及びセグメント名をトランスレーション層106に渡すことによって、XMLBeansオブジェクトを要求する263。トランスレーション層106は、例えばcreateCorrespondingXmlObjectをコールすることによって、抽出されたXMLに対応しているXMLBeansオブジェクトを生成する264。トランスレーション層106は、XMLBeansオブジェクトをフレームワーク102に戻す265。一実施形態において、フレームワーク102は、例えばvalidateAgainstXsdをコールすることによって、XMLBeansオブジェクトをXSDに対して確認する266。メソッドコールは、XMLBeansオブジェクトにそれ自身をXSDに対して確認するように依頼する。何らかの確認エラーが存在する場合、フレームワーク102は、XMLBeans105からそれらを得る267。フレームワーク102は、エラーを有するこれらのオブジェクトに対するレコード識別子を抽出するためにレコード識別子XPathクエリコンフィギュレータを介して構成されるを走らせ268runXPathQueriesToExtractRecordIdentifiersxmlObject、XMLBeans105は、レコード識別子単数又は複数を戻す275。フレームワーク102は、エラーのソースを識別することができるように、エラーメッセージに識別子文字列を追記する269appendIdentifierStringToErrorMessages。フレームワーク102は、次いで、エラーハンドラ233でのハンドリングをそれに引き起こさせるエラー及びオブジェクトの識別を含む各エラーメッセージをエラーハンドラ233に送信する270handleValidationErrorscode,message。フレームワーク102は、次いで、例えばgenerateDataObjectxmlObjectコールを発行することによって、アプリケーションドメインオブジェクトに変換するために、XMLBeansオブジェクト及びセグメント名をトランスレーション層106に伝送する271。トランスレーション層106は、XMLBeansオブジェクトに対応しているアプリケーションドメインオブジェクトを生成すること272によってトランスレーションを行い、且つアプリケーションドメインオブジェクトをフレームワーク102に戻し273、フレームワーク102が、次いで、アプリケーションドメインオブジェクトをアプリケーション101に転送する276。XMLドキュメントの生成本明細書で説明されるように、XMLドキュメント107の生成は、個別的な様式で行うことができ、この場合、アプリケーション101は、各セグメントに対する情報を順に提供し、且つセグメントがフルセグメントであるか又は囲みenclosingセグメントであるかを示す。或るセグメントは、XMLドキュメント107が生成されている状態でメモリ内に保たれてもよく、一方、他のセグメントは、個々の要素レコードのようなが1つずつ生成され且つ追記されてもよいようにメモリ内に保つには大きすぎる場合がある。アプリケーション101は、あらゆる数のデータソースからのデータ並びにアプリケーションビジネス論理に基づいて、XMLドキュメント107を生成する必要がある場合がある。アプリケーション101は、したがって、アプリケーションデータオブジェクトに要約されるデータを有し、本明細書で説明されるように、これらのアプリケーションデータオブジェクトは、XMLセグメントを生成するために用いられる。本発明のシステムは、アプリケーション101にStAXパーサ104又はXMLBeans105のあらゆる知識又は意識を有することを要求することなく、こうした変換が行われることを可能にする。データオブジェクトは、対応するXMLセグメントを生成し且つ生成されているXMLドキュメント107に追記することができるように、フレームワーク102に増加的に渡される。フレームワーク102は、アプリケーション101によって提供されたデータオブジェクトに基づいて、そのメモリバッファにおけるXMLコードの生産を開始する。プロセスは、メモリバッファが満杯であるときに、バッファに入れられたデータがデータストア108に書き込まれている状態で続行する。上記で説明されたように、トランスレーション層106は、アプリケーションデータオブジェクトと対応するXMLBeansオブジェクトとの間のマッピングを提供する。フレームワーク102は、XMLBeansオブジェクトを生成するタスクをトランスレーション層106にデリゲートする。フレームワーク102は、トランスレーション層106によって生成されたXMLBeansオブジェクトの、XMLスキーマ定義XSDに対する確認を行い、且つ確認エラーメッセージのハンドリングをアプリケーションエラーハンドラにデリゲートする。フレームワーク102は、XMLBeansオブジェクトを用いて対応するXMLセグメントを生成し、且つセグメントをそのバッファに書き込む。一実施形態において、このバッファは、より永続的なデータ記憶デバイスにバックアップされてもよい。アプリケーション101がXML生成プロセスの終了を示すと、バッファがフラッシュされ、ファイルが閉じられる。多くの状況において、多数のレコードが書き込まれることになる。セグメントXML及び対応するXMLBeansオブジェクトがメモリ内に生成されるので、フレームワーク102がすべてのレコードをメモリ内に同時に保持することを試みた場合に、リソース制限が存在する場合がある。したがって、本発明の技術は、それによってセグメントにおける要素を増加的に付加することができる、機構を提供する。アプリケーション101は、その子セグメントサブセグメントが増加的に付加されることになるセグメントを付加するようにフレームワーク102に依頼する。フレームワーク102は、生成されたXMLからセグメントエンドタグ例えば</employees>を除去し、且つこれをスタックにプッシュする。アプリケーション101は、次いで、employeeサブセグメントを増加的に付加し続けることができる。アプリケーション101がすべてのサブセグメントの付加を終えると、スタックからの最後のタグがポップされ、且つ生成されたXMLコードに戻って追記される。XMLのこの増分的な生成は、メモリ制限に直面することなく任意のサイズのXMLドキュメントが生成されることを可能にする。サブセグメントは、所望の場合に互いにネストすることができる。フレームワーク102は、階層の深さに対して如何なる制約をも課さない。一実施形態において、いつセグメントを開くか及びいつセグメントを閉じるかをフレームワーク102に通知することはアプリケーション101の担当である。例えば、上記に示されたXMLコードを生成する際に、<header>セグメントは、<employees>セグメント及び関連するデータ、並びに囲み<wmi>タグと共に生成される。<header>セグメントを生成し且つ書き込むために、システムは、囲み<wmi>タグを開き、且つ<header>セグメントを書き込む。エンディング</wmi>タグは、付加的なデータ<employees>セグメントが最初に書き込まれる必要が依然としてあるので、まだ書き込まれなくてもよい。したがって、XMLドキュメント107は、エンディング</wmi>タグが欠けることになるため、一時的に非整形式となるであろう。このエンディングタグは、これが適切な時点で書き込まれることが可能となるように保持することができる。一実施形態において、アプリケーション101がドキュメント107全体を書き込むことなくXMLドキュメント107のセグメントを書き込むことを試みる場合に、これは、セグメントが開かれるべきであるがまだ閉じられるべきではないこと、及びデータの一部のみが送られており、さらに後に続くことをフレームワーク102に通知するように、openSegmentコールを渡すことができる。これは、データ要素の増分的な書き込みレコードのようなを可能にする。エンディングタグは、データ要素がすべて書き込まれた後でこれが書き込まれることが可能となるように、StAXパーサ104から得られ且つメモリ内に保持されてもよい。ここで図3A及び図3Bを参照すると、一実施形態に係るXMLドキュメント107の生成を描いたイベントトレースダイヤグラムが示されている。アプリケーション101は、構成キーをフレームワーク102に送信321し、コンフィギュレータ103から、提供されたキーに対する構成を要求する322。コンフィギュレータ103は、トランスレータクラスが無効なXMLセグメントを無視するか又は含むかなどについてのデータを含む、要求された構成情報を戻す323。アプリケーション101は、オブジェクトがXMLに変換されることを要求するアプリケーションドメインオブジェクトをフレームワーク102に渡す301。フレームワーク102は、例えばgenerateXmlObjectコールを発行することによって、オブジェクトをトランスレーション層106に送信する302。トランスレーション層later106は、createCorrespondingXmlObjectのようなメソッドを走らせ、且つ対応するXMLBeansオブジェクトを戻す303。フレームワーク102は、次いで、例えばXSDを用いて生成されたXMLオブジェクトクラスを用いて、XMLBeansオブジェクトからXMLセグメントを生成する304。フレームワーク102は、以下のようにXMLをデータストア108に書き込む309。ここで図3Bを参照すると、アプリケーション101は、openSegmentobjectコールをフレームワーク102に送信する306。このコールは、書き込まれることになるデータに対する新しいセグメントを開くように、しかしエンディングタグを書き込まないようにフレームワーク102に伝える。フレームワーク102は、例えばgenerateXmlObjectコールを発行することによって、アプリケーションドメインオブジェクトをトランスレーション層106に送信する324。トランスレーション層later106は、対応するXMLBeansオブジェクトを戻す325。フレームワーク102は、次いで、例えばXSDを用いて生成されるXMLオブジェクトクラスを用いて、XMLBeansオブジェクトから対応するXMLセグメントを生成する326。フレームワーク102は、エンディングタグを得るようにパーシングするためにXMLをStAXパーサ104に送信する307。StAXパーサ104は、エンディングタグを識別するためにXMLをパースし、且つエンディングタグをフレームワーク102に送信する308。一実施形態において、ステップ307は、removeSegmentEndTagAndPushItInStackコールを用いて実装され、これがエンディングタグの除去を引き起こす。フレームワーク102は、例えば、エンドタグをスタックに保存することによって、エンディングタグを後で用いるためにメモリ内FIFOスタックに保持する。幾つかの事例において、多数のエンディングタグがこの方法で保存されてもよい。エンドタグなしのXMLコードは、データストア108におけるデータに追記される311。この技術を用いて、フレームワーク102は、メモリ制限にぶつかることなくあらゆる任意の長さのXMLコードが書き込まれることを可能にする個別的な様式でXMLコードを書き込むことができる。一実施形態において、これは、writeXmlToBufferBackedByFileコールを用いて実装され、これは、永続的記憶装置にもバックアップされる、XMLコードのバッファへの書き込みを引き起こす。付加されることになる各セグメントに対して、アプリケーション101は、addSegmentコールをフレームワーク102に送信する310。これは、現在開かれているセグメントへの任意の数のサブセグメントの付加を可能にする。フレームワーク102は、例えば、generateXmlObjectコールを発行することによって、アプリケーションドメインオブジェクトをトランスレーション層106に送信し329、これがcreateCorrespondingXmlObjectメソッドを呼び出し、且つ対応するXMLBeansオブジェクトを戻す330。随意的に、フレームワーク102は、戻されたXMLBeansオブジェクトをXSDに対して確認してもよい。もしあれば、エラーメッセージが戻され、フレームワーク102は、例えばgetRecordIdentifiersコールを発行することによって、トランスレーション層106からのレコード識別子を要求する。トランスレーション層106は、アプリケーションデータオブジェクトから抽出された識別子文字列を戻す。トランスレーション層106は、有意味なレコード識別子を抽出し及び生成することを担当する。フレームワーク102は、エラーを引き起こした適切なレコードを識別することができるようにエラーメッセージに識別子文字列を追記し、こうした動作は、例えば、appendIdentifierStringToErrorMessagesコールによって行うことができる。必要であれば、handleValidationErrorsコールを介してエラーハンドラを呼び出すことができる。フレームワーク102は、XMLBeansオブジェクト330を用いて、例えばXSDを用いて生成されるXMLオブジェクトクラスを用いて、対応するXMLセグメントを生成する331。フレームワーク102は、アプリケーション101から受信した命令に従ってXMLセグメントを追記する333。ステップ310及び329~333は、付加されているすべてのセグメントに対して繰り返される。すべてのデータがXMLドキュメント107に付加されると、フレームワーク102は、開かれている囲みセグメントもし存在すればを閉じ、且つドキュメントの書き込みを適正に終えるのに必要とされる場合にあらゆる他のエンディングタグを追記する準備ができた状態となる。アプリケーション101は、closeSegmentコールを送信315し、これは、フレームワーク102に、そのサブセグメントが増加的に書き込まれていたセグメントに対するメモリ内スタックからエンディングタグをポップさせ、且つエンディングタグをデータストア108で書き込まれているデータに追記させる312。一実施形態において、ステップ312は、popStackAndWritePoppedEndTagToBufferBackedByFileメソッドをコールすることによって行われてもよい。アプリケーション101は、次いで、closeAllコールを送信313し、これは、フレームワーク102に、スタックからすべての残りのクロージングタグを取り出させ且つそれらをXMLドキュメント107に追記させる。例えば、タグがスタックに保存されていた場合、フレームワーク102は、スタックからタグをポップし、且つそれらをデータストア108で書き込まれているデータに追記する314。このように、タグが適正な順番で書き込まれる。結果は、データストア108での整形式のXMLドキュメント107である。一実施形態において、ステップ313及び314は、popStackUntilEmptyAndWritePoppedEndTagsToBufferBackedByFileメソッド、続いてflushBufferメソッド、及びcloseFileメソッドをコールすることによって行われてもよい。XMLドキュメントのフラットファイルへの変換前述のように、一実施形態において、本発明のシステムはまた、種々のタイプのドキュメント変換を行うことができる。例えば、XMLドキュメントをフラットファイルに変換することが時々有用である。フラットファイルは、構造化された関係性をもたないレコードを収容するデータファイルである。それらは、例えば、XMLをアップロードすることができない場合があるコンポーネントSQLLoaderのようなとの関連において動作するときに、データファイルの大量アップロードのために用いられてもよい。バルクローダは、普通はフラットファイルからの入力をとり、それらを解釈するために或る付加的な知識を用いる。例えば、OracleSQLLoaderは、ファイルフォーマット特性についての付加的な情報を提供するために制御ファイルを用いる。一般に、フラットファイルは、あらゆる形態をとることができる。フラットファイルに対する1つの典型的な配置は、以下のセクションを含む。●ヘッダデータ:例えば、送信元識別子、トランザクション識別子、受信日付などを含んでいるメタデータを含む。一般に、ボディレコード毎に繰り返される必要のない情報を含む。●ボディデータ:employeeレコードのような個々のレコードを含む。●フッタデータ:レコードの総数などのようなデータをファイルにまとめるためのアイテムを保持する。一実施形態において、本発明のシステムは、XMLドキュメント107をフラットファイルに変換するための機構を提供する。StaxBeanMapping.propertiesと呼ばれる構成ファイルは、フラットファイル内のどこに種々のデータ項目が置かれるべきかについての情報を提供する。このように、ヘッダセクション、ボディセクション及び/又はフッタセクションにおいてポピュレートされることになるデータを、例えばXpathクエリ言語を介して指定することができる。XPathは、セグメント、サブセグメント、及び/又は開かれたセグメントに対応しているXMLオブジェクトを参照することができる。このように、あらゆる所与の時点でメモリ内に必要とされるのはXMLの対応するセグメント及び/又はXMLBeansオブジェクトのみであるため、メモリ使用量が最適化される。XMLドキュメント全体をメモリ内に保持する必要はない。データを1つのセグメントから別のセグメントにクロスリファレンスする必要がある場合、フレームワーク102は、変換の間にメモリ内に適切なデータを保持することができるように、XPathリファレンスとして指定される、こうしたクロスリファレンスの構成を提供する。フィールドを互いから分離するために及びレコードを互いから分離するために、あらゆる種類のフィールド区切り文字及びレコード区切り文字を用いることができる。例えば、フィールド区切り文字としてタブ又はコンマを用いることができ、フラットファイルの各ラインがレコードに対応するように、レコード区切り文字として改行キャリッジリターンを用いることができる。一実施形態において、フラットファイルは、ファイルに対するシンタックスを指定する構成によって定義される。例えば、構成は、ボディデータが現れるべき順番と、含まれるべきあらゆる付加的なメタデータ例えばレコードの総数のようなとを指定してもよい。本明細書に記載の技術に従ってフラットファイルに変換することができるXMLドキュメント107の例は以下の通りである。幾つかの状況において、XMLドキュメント107の一部ではなかった特定用途向けデータをフラットファイルにエンリッチすることが有用な場合がある。一実施形態において、フレームワーク102は、こうしたデータを変換されたフラットファイルに付加するためのサポートを提供する。こうしたデータは、構成によって指定されてもよく、且つ、例えば、XMLから抽出する、導出する、又は計算することができるデータを含んでもよい。こうしたデータは、例えば以下のものを含むことができる。●現在処理されているセグメントからのデータ項目。これらは、例えば、セグメントXPathを用いて指定されてもよい。●必要とされる場合があるが、現在処理されているセグメントから入手可能ではない、データ項目。これらは、例えば、クロスリファレンスXPathを用いて指定されてもよい。○一実施形態において、XPathクロスリファレンスタイプは、XPathクエリによって表される値がメモリに保存されるべきである及びエイリアスに割り当てられるべきであるフレームワークを示す構成ファイルにおいて指定される。XPathに対応しているデータは、対応するエイリアスを参照することによって後でアクセスすることができる。例えば、XPathクエリヘッダ/senderIDヘッダセグメントから抽出されるの値には、XPathヘッダ/senderIDに対応している値を含めるために他のセグメントによって用いられることが可能なクロスリファレンスエイリアスsenderIDを割り当てることができる。一実施形態において、すべてのクロスリファレンスされたエイリアスは、それらが属するセグメントが処理されるとすぐにメモリ内に保存される。○一実施形態において、クロスリファレンスデータは、経時的に蓄積される幾つかの式に基づくグローバルデータを含んでもよく、且つ幾つかのセグメントに対するデータの組合せを表してもよい。○一実施形態において、クロスリファレンスデータは、或る期間にわたって維持され、次いで、用いられたときに廃棄される、レコード別のデータを含んでもよい。●導出されるデータ項目:これらは、1つ又は複数のセグメントから導出される何かを含んでもよい。例は、幾つのレコードが処理されているかのトラックを保つ、レコードカウントである。例えば、フレームワーク102は、各employeeレコードを抽出し且つこれをフラットファイルに書き込みながら、開かれた各セグメントにおけるemployeeレコードサブセグメントのカウントを保つことができる。カウントは、employeeレコードの一部としてファイルに書き込むことができる。また、これは、ファイルのフッタセクションに書き込むことができる。●セッションデータ項目:これらは、アプリケーション101が追記することを望むがXMLで利用可能ではない、あらゆるデータを含んでもよい。例えば、パートナーソースがinventoryファイルを供給する場合、システムにファイル名を渡すことができ、且つファイル識別子を戻すことができる。このファイル識別子は、XMLから導出可能ではない場合があるが、これはフラットファイルに付加されることになるデータの有用な断片である場合がある。したがって、こうしたデータは、このカテゴリに含めることができる。他の例は、登録ID、処理時間などを含む。●アプリケーションデータ:アプリケーション101は、ランタイムの間にあらゆる数の名前値のペアを付加することができる。これらの値は、それらの名前によって参照されることが可能であり、且つ所望の場合に、変換されたファイルのあらゆるセクション単数又は複数に付加することができる。ここで図4A及び図4Bを参照すると、一実施形態に係るXMLドキュメント107をフラットファイルに変換するための方法を描いたイベントトレースダイヤグラムが示されている。アプリケーション101は、フレームワーク102をコールしてXMLとフラットファイルとの変換を開始し、フレームワーク102にファイルロケーション及び構成キーを送信する402。一実施形態において、これは、createInstanceStringkey,FileinputFileコールをフレームワーク102に送信するアプリケーション101によって達成される。フレームワーク102は、コンフィギュレータ103から、キーと関連する構成を要求する403。これに応答して、コンフィギュレータ103は、構成をフレームワーク102に送信する404。構成を受信すると、フレームワーク102は、XMLファイルのどんな要素を、ヘッダ、ボディ、フッタ、区切り文字などを含むフラットファイルの種々の部分に対して用いるかをこのとき知る。アプリケーション101によって送信されるキーは、したがって、一実施形態において、処理されているXMLのタイプに固有の構成を識別する。構成ファイルに収容され且つキーを介して識別される情報は、以下のような情報を収容する。●トランスレータクラス●セグメント及びサブセグメントのようなXMLの構造●無効なレコードをスキップするか又は含むかどうか●XSD確認を行うかどうか一実施形態において、構成は、ボディデータが現れるべき順番と、含まれるべきあらゆる付加的なメタデータのような情報を含むフラットファイルの構造を指定する。一実施形態において、構成は、Java登録商標クラスとして指定することができるが、あらゆる所望のフォーマットを用いることができる。アプリケーション101は、次いで、指定されたXMLドキュメント上で変換が行われることを要求する431。フレームワーク102は、StAXパーサ104がセグメントXMLを抽出するべくファイルのパーシングを始めることができるように、フレームワーク102にファイルロケーションを提供することをStAXパーサ104にコールする。フレームワーク102は、StAXパーサ104から、ヘッダに対するXMLセグメント及び/又は他のXMLセグメントのような固有のデータを要求する。これに応答して、StAXパーサ104は、XMLセグメントを得る及びこのXMLをフレームワーク102に戻すために、XMLドキュメント107の該当する部分をパースする。例えば、ヘッダセグメントに対して、フレームワーク102は、extractXmlSegmentheaderSegmentをコールすることによってこれらのステップを行うことができる。一実施形態において、フラットファイルに対するヘッダレコードは、XMLデータから,構成ファイルにおいて構成される対応するセグメントを抽出することによって生成される。セグメントにおいて見つけ出される場合に、あらゆる構成されたグローバルクロスリファレンスエイリアスもまた抽出される。フレームワーク102は、StAXパーサ104に、フラットファイルのヘッダレコードを生成するのに必要とされるセグメントを抽出することをコールする411。フレームワーク102は、コンフィギュレータ103からセグメントの名前を入手し、且つこれをStAXパーサ104に渡して、対応するXMLセグメントを入手する。StAXパーサ104は、ヘッダレコードに対して要求されるXMLセグメントを戻す411A。フレームワーク102は、抽出されたXMLセグメント及びセグメント名をトランスレーション層106に渡す411B。トランスレーション層は、対応するXMLBeansオブジェクトを生成し411C、且つこれをフレームワーク102に戻す411D。フレームワーク102は、構成されたXpathクエリをXMLBeansオブジェクト上で走らせる411E。これはまた、構成されクロスリファレンスされたエイリアスに対してXpathクエリを走らせ、且つこれらを後で用いるためにメモリ内に格納する。フレームワーク102は、ヘッダレコードをアセンブルし、且つこれをデータストア108で生成されているフラットファイルに書き込む412。あらゆるグローバルデータ、クロスリファレンスデータ、又はそれに類似のものを、これを他のレコードと共に用いるために利用することができるように例えばエイリアスに格納することができる。フレームワーク102は、そのサブセグメントが変換されたフラットファイルのボディにおけるレコードを表す、セグメントを処理する。図4Bは、フラットファイルに書き込むことに関与する固有のステップに関する付加的な詳細を描く。図4Bに示された方法によれば、フレームワーク102は、こうしたデータがレコードをフラットファイルに書き込むために必要とされる可能性があるときに、メモリ内にデータを維持することができる。フレームワーク102は、各セグメント名に対応しているXMLセグメントを提供するようにStAXパーサ104に依頼する。一実施形態において、フレームワーク102は、スタート要素及び関連する属性を表わすXMLセグメントのみを入手する。したがって、フレームワーク102は、StAXパーサ104から、書き込まれることになるフラットファイルのボディに対して構成されたXMLセグメント、スタート要素、及びその属性を要求する421。StAXパーサ104は、要求されたXMLを戻す422。フレームワーク102は、整形式のXMLを生成するために、抽出されたXMLにエンドタグを追記する422A。フレームワーク102は、次いで、XMLドキュメント107におけるセグメント及びサブセグメントを抽出し且つ対応するレコードをフラットファイルに書き込むプロセスを通してループする。各セグメント及びサブセグメントに対して、フレームワーク102は、StAXパーサ104によってサブセグメントの抽出を要求し、StAXパーサ104は、指定されたセグメント又はサブセグメントに対するXMLセグメントを戻す。各サブセグメントは、employee又はそれに類似のもののような特定のエンティティと関係付けられてもよい。付加的な詳細は図4Bに示される。フレームワーク102は、例えば、抽出されたXML及びセグメント名をトランスレーション層106に渡すことによって、XMLBeansオブジェクトを要求する422B。トランスレーション層106は、対応するXMLBeansオブジェクトを生成し422C、XMLBeansオブジェクトをフレームワーク102に戻す422D。フレームワーク102は、例えばセグメントレベルで構成されるXpathクエリを走らせることによって、フラットファイルの生成のためにXMLBeansオブジェクトからデータを抽出する422E。フレームワーク102は、各サブセグメントの名前をStAXパーサ104に1つずつ渡すことによって現在のセグメントのXMLサブセグメントを抽出する。各サブセグメントに対して、フレームワーク102は、StAXパーサ104によるサブセグメントの抽出を要求し424、StAXパーサ104は、指定されたサブセグメントに対するXMLセグメントを戻す425。フレームワーク102は、例えば抽出されたXML及びサブセグメント名をトランスレーション層106に渡すことによって、XMLBeansオブジェクトを要求する425A。トランスレーション層106は、対応するXMLBeansオブジェクトを生成し425B、XMLBeansオブジェクトをフレームワーク102に戻す425C。フレームワーク102は、例えばサブセグメントレベルで構成されるXpathクエリを走らせることによって、フラットファイルの生成のためにXMLBeansオブジェクトからデータを抽出する425D。フレームワーク102はまた、前に抽出されたグローバルデータ及び/又はアプリケーションにより提供されたデータを用いてレコードをアセンブルすることができる。フレームワーク102は、次いで、複数のソースから収集したデータを用いてボディレコードをアセンブルし425E、且つレコードをフラットファイルとしてデータストア108に書き込む429。ステップ421~429は、すべてのレコードが書き込まれるまで必要に応じて何度でも繰り返すことができる。一実施形態において、フレームワーク102は、ファイルにおける種々のボディセグメントを通してループする。各ボディセグメントは、あらゆる数のサブセグメントを収容してもよく、フレームワーク102は、これらを通して同様にループする。すべてのセグメントが完了すると、フレームワーク102は、フッタレコードをアセンブルし429A、且つフッタレコードをデータストア108に書き込んで429B、これをフラットファイルに追記する。フレームワーク102は、次いで、ファイルを閉じる429C。したがって、各ボディセグメントに対して、フレームワーク102は、以下のステップを行うことができる。●ボディのスタート要素及びその属性を抽出するextractStartElementAndItsAttributessegmentName。●エンドタグappendEndTagInExtractedXmlを追記する。●XMLBeansオブジェクトへの変換を要求するgetXmlObjectextractedXml,segmentNameをトランスレーション層106に送信し、トランスレーション層106がcreateCorrespondingXmlObjectを実行し、且つXMLBeansオブジェクトを戻すことによる。●XMLBeansオブジェクトからデータを抽出するrunXPathQueriesOnXmlObject。次いで、ボディセグメントにおける各サブセグメントに対して、フレームワーク102は、以下のステップを行うことができる。●サブセグメントに対応しているXMLを抽出する。●XMLBeansオブジェクトへの変換を要求するgetXmlObjectextractedXml,subSegmentNameをトランスレーション層106に送信し、トランスレーション層106がcreateCorrespondingXmlObjectを走らせ、且つXMLBeansオブジェクトを戻すことによる。●XMLBeansオブジェクトからデータを抽出するrunXPathQueriesOnXmlObject。●抽出されたデータをフラットファイルに書き込むwriteExtractedDataInFile。すべてのボディセグメントにおけるすべてのサブセグメントが処理されると、フレームワーク102は、フッタを書き込みwriteFooterDataInFile、且つファイルを閉じるcloseFile。一実施形態において、フレームワーク102が、処理されるレコードの総数のようなグローバルデータのトラックを保つことが、有用な場合がある。こうした情報は、例えば、書き込まれているフラットファイルのフッタ又は他のデータ要素における包含のために用いられてもよい。こうした状況において、アプリケーション101は、addSessionDatakey,dataのようなコールをフレームワーク102に発行することができる。コールに含まれるデータを、次いで、格納することができ、且つフレームワーク102によって適宜用いることが可能である。こうしたコールの例は、以下のものを含む。●addSessionDataregID、36590;●addSessionDatatimeProcessed、July25,2009フレームワーク102は、次いで、レコードをフラットファイルに書き込みながら、アプリケーションにより供給されるセッションデータを用いることができる。一実施形態において、セッションデータは、フレームワーク102がそれを行うように構成される場合に、レコードボディ、ヘッダ、及び/又はフッタにのみ書き込まれるであろう。フレームワークアーキテクチャ上記で説明された技術は、ソフトウェアモジュールの種々の配置を用いて実装することができる。以下は、多様な構成オプションを提供するフレームワーク102に対するアーキテクチャの例である。一実施形態において、プロデューサクラス及びトランスレータクラスのセットは、コンフィギュレータ103にアクセス可能な構成ファイルで構成される。上記で説明されたように、アプリケーション101は、用いられることになるトランスレータクラスのキーの名前を渡す。フレームワーク102は、次いで、トランスレーション層106と指定された構成ファイルとを用いて必要なタスクを行う。一実施形態において、少なくとも3つのクラス、すなわち、XMLドキュメント107を生成するためのプロデューサクラス、アプリケーション101によって使用可能なアプリケーションドメインオブジェクトを生成するべくXMLドキュメント107を処理するための消費者クラス、及びXMLドキュメント107をフラットファイルフォーマットのような別のフォーマットに変換するためのトランスフォーマクラスが提供される。以下は、これらのクラスの詳細の幾つかの例である。プロデューサクラスここで図7を参照すると、一実施形態に係るプロデューサクラス700のためのクラスダイアグラムが示されている。このアーキテクチャにおいて、エラーハンドラ701、XmlProducer703、XmlProducerFactory704、及びXmlException708がアプリケーション101に露出される。Configuratorクラス709は、構成ファイルで提供される構成をロードすること、パーシングすること、確認すること、及びキャッシュに入れることを担当するコンフィギュレータ103を実装する。コンフィギュレータ103は、XmlProducerImplのインスタンスをインスタンス化し、構成パラメータを設定し、且つトランスレータクラスのインスタンス構成される場合にを導入injectする。XmlProducerFactory704は、XmlProducerImplの作成をConfiguratorクラス709にデリゲートする。一実施形態において、フレームワーク102は、XMLを生成するために以下の構成を用いる。●classes.keysエントリは、構成ファイルで用いられているすべてのキーの名前を指定するのに用いられる。これらは、生産する、消費する、及び/又は変換するのに必要とされるトランスレータクラス及びすべての他のクラスに対するキー及びフラットファイルへのXMLファイルである。一実施形態において、各XMLタイプXSDによって駆動されるは、独自のキーと独自の構成を有する。同じキーは、XmlProducer703のインスタンスを入手するためにアプリケーション101によって用いられる。●<translator-key>.classエントリは、ProducerTranslator702インターフェースを実装するトランスレータクラスの完全修飾パッケージ名を伴う名を指定する。アプリケーション101は、XmlProducer703インスタンスへの参照を入手するためにキー名を渡す。●<translator-key>.includeInvalidエントリは、XSD確認に失敗したXMLセグメントが結果セットに含まれるべきか否かを決定するためにフレームワーク102によって用いられる。これは真のデフォルト値をもつ随意的なエントリである。●<translator-key>.logInvalidエントリは、XSD確認に失敗したXMLセグメントがログされる及び/又はエラーハンドラに渡されるべきか否かを決定するためにフレームワーク102によって用いられる。これは真のデフォルト値をもつ随意的なエントリである。XmlProducerインターフェース703は、XMLドキュメント107を生産するために要求される動作を含む。アプリケーション101は、XmlProducerインターフェース703を用いてXMLセグメントを増加的に生成する。アプリケーション101は、アプリケーションデータオブジェクトを渡し、XmlProducerインターフェース703は、トランスレータクラス及びXMLオブジェクトクラスの助けによりXMLを生産する。一実施形態において、XmlProducerインターフェース703は、以下のメソッドを含む。●voidopenSegmentObjectobject:アプリケーション101は、その子を増加的に付加することができるように、このメソッドを用いてXML要素を開く。ProducerTranslatorインターフェース702は、パスインされたアプリケーションデータオブジェクトを用いて等価なXMLBeansオブジェクトを作成する、トランスレーション層106によって実装される。●booleanaddSegmentObjectobject:アプリケーション101は、このメソッドを用いて、生産されているXMLにXMLセグメントを付加する。ProducerTranslator702は、パスインされたオブジェクトを用いて、等価なXMLBeansオブジェクトを作成する。一実施形態において、XMLセグメントは、もしあれば最後の開かれたセグメントの子要素として追記されるであろう。他の場合には、これはドキュメントルートの子として付加されるであろう。セグメントがXSD確認を渡す場合、戻り値は真であり、他の場合にはこれは偽である。一実施形態において、XSD確認は、フレームワーク102が無効なセグメントを除外するように構成されるか又は無効なセグメントをログするように構成されるかのいずれかの場合にのみ行われる。●voidsetErrorHandlerErrorHandlerhandler:アプリケーション101は、随意的に、ErrorHandlerインターフェースを実装するエラーハンドラを設定することができる。XSD確認エラーは、ハンドラにデリゲートされ、アプリケーション101は、それらを多少なりとも用いることができる。確認エラーは、エラーハンドラが設定されない場合にJava登録商標ロガーを用いてログされる。●voidcloseSegment:アプリケーション101は、このメソッドを用いて、現在開かれているセグメントのすべての子の増分的な付加が過度であることをフレームワーク102に通知する。フレームワーク102は、最後の開かれたセグメントのエンディングタグを挿入する。●voidcloseAll:アプリケーション101は、このメソッドを用いて、これが如何なるさらなるデータをも有さず且つXML生成が完了することをフレームワーク102に通知する。アプリケーション101は、XMLを適正に生成することができるように、このメソッドをコールする。フレームワーク102は、このコールの結果として以下の動作を行う。○対応するエンディング要素をXMLに挿入することによって、すべての開かれたセグメントを閉じる。この機能featureは、アプリケーション101が複数の入れ子にされたセグメントを開き、且つそれらのすべてを閉じることを望むときに有用である。○バッファをフラッシュし、出力ファイルを閉じる。XmlProducerFactoryclass704は、XmlProducerインターフェースを実装するオブジェクトの作成を要約する。一実施形態において、このクラスは、オブジェクトを作成するための、一方はファイルオブジェクトを伴い、他方は生成されたXMLを書き込むためのファイル名を伴う、2つのオーバーロードされるメソッドを含む。XmlExceptionclass708は、例外のために用いられる。フレームワーク102は、XmlExceptionclass708のインスタンスで遭遇した例外を変換する。この例外は、オリジナルの例外における情報が失われないようにオリジナルの例外をラップする。ProducerTranslatorインターフェース702は、トランスレーション層106におけるフレームワーク102とProducerTranslatorクラスとの間の規約を定義する。トランスレータクラスは、等価なXMLBeansオブジェクトへのアプリケーションデータオブジェクトのマッピングを提供する。一実施形態において、ProducerTranslatorインターフェース702は、以下のメソッドを含む。●XmlObjectgetRootObject:トランスレータクラスは、フレームワーク102がすべての適用可能なネーム空間と一緒にルートドキュメントの生成を開始できるように、ルートドキュメントXmlObjectインスタンスを戻すべきである。●XmlObjectgetXmlObjectObjectdataObject:トランスレータクラスは、渡されたアプリケーションデータオブジェクトに基づいて対応するXMLBeansインスタンスを生成するべきである。生成されたXMLBeansオブジェクトXmlObjectは、XMLの対応するセグメントを生成するためにフレームワークによって用いられる。●XmlObjectgetInnerXmlObjectObjectdataObject,XMLObjectobject:トランスレータクラスは、アプリケーションデータオブジェクト並びに対応するXMLObjectの知識を有する。データタイプがXSDで定義される方法に応じて、データオブジェクトからXMLBeansオブジェクトを生成しながら、XMLオブジェクトグラフにおいて親XMLBeansオブジェクトが生成されてもよい。例えば、単一のemployeeレコードのXMLBeansオブジェクトを生成するために、EmployeesXmlObjectが最初にインスタンス化され、その後、1つのEmployeeXmlObjectを収容するサイズのアレイがインスタンス化される。このアレイは、ラッパーオブジェクトに付加される。本質的に、EmployeeXmlObjectをラップするのはEmployeesXmlObjectである。employeeXmlObjectに対してXSD確認を行うために、フレームワーク102は、ラッパーXMLObjectEmployeesからemployeeXmlObjectを抽出する。トランスレータクラスは、アプリケーションデータオブジェクトに対応する内側XmlObjectを戻す。戻されたXmlObjectは、XSD確認を行うためにフレームワークによって用いられる。●StringgetObjectIdentifiersObjectdataObject:XSD確認エラーメッセージは、パーサからパーサへと変化することがある。技術者でない人々にとってそれらを理解するのは非常に難しいことがある。これらのエラーメッセージは、XSD確認に失敗したレコードを識別するのに十分な情報を提供しない場合がある。一実施形態において、フレームワーク102は、getObjectIdentifiersを用いて、付加的な情報をXSDエラーメッセージに追記する。一実施形態において、追記されることになる情報を判定するのはトランスレータクラスである。アプリケーションデータオブジェクトは、これが適切な情報を抽出することができるように、トランスレーションクラスに渡され戻される。抽出された情報は、XSD確認エラーメッセージに追記される。アプリケーションデータオブジェクトは、これが対応するXMLセグメントを生成するための情報のソースであるので、トランスレータクラスに渡される。フレームワーク102は、XSD確認エラーをログするように構成されるときに、この関数を利用する。XmlProducerImplクラス707は、インターフェースXmlProducerを実装する。このクラスの新しいインスタンスが、XmlProducerFactoryを介してアプリケーション101に戻される。アプリケーション101は、XmlProducerインターフェース規約において提供されるメソッドを呼び出すことによってXMLを増加的に生産するためにXmlProducerインスタンス上で動作する。一実施形態において、StAXパーサ104、生成されたXMLBeansオブジェクト、トランスレーション層106、及び確認メッセージハンドリングの間でのすべての協調が、XmlProducerImplクラス707によって制御される。これは、XMLを増加的に生産するのに必要とされる以下のようなすべての機能性を収容する。●提供されたアプリケーションデータオブジェクトに対応しているXMLセグメント及び開かれたセグメントを生産すること。●XMLセグメントをファイルに書き込むこと。●すべての開かれたセグメントのトラックとそれらの順番を保つこと。●XMLセグメント上でXSD確認を走らせ、且つ確認エラーメッセージを特定用途向けエラーハンドラにデリゲートすること。インターフェースメソッドを実装することに加えて、XmlProducerImplクラス707はまた、以下のような内部メソッドを含むことができる。●protectedvoidsetup保護されたボイドセットアップFilexmlOutFile,ProducerTranslatorproducerTranslator,booleanincludeInvalid,booleanlogInvalid:コンフィギュレータクラス709は、アプリケーション101がXmlProducerFactoryを介してXmlProducerのインスタンスを要求するときに、このクラスの新しいインスタンスを作成する。コンフィギュレータ103は、次いで、構成される場合にトランスレータクラスのインスタンスを作成し、且つこのメソッドを呼び出して、構成情報例えば、XSD確認が行われる必要があるかどうか、XSD確認エラーをログするかどうか、及びトランスレータクラスインスタンスを渡す。●privatevoidstartDocument:このメソッドは、トランスレータメソッドgetRootObjectによって戻される対応するXmlObjectに基づいてルートドキュメントノードを生成することを担当する。XMLは、XmlObjectから抽出され、且つStAXパーサ104に渡される。ルートドキュメントエンド要素は、FIFOFirst-In-First-Outキューにプッシュされる。アプリケーション101がすべてのセグメント及び開かれたセグメントの付加を完了すると、要素がポップされ、且つ生成されたXMLに追記される。●privatebooleananalyzeプライベートブール解析ObjectdataObject,XmlObjectxmlObject:フレームワーク102は、このメソッドを用いてXSD確認を行い、且つそれを行うように構成される場合にあらゆるXSDエラーをログする。これは、最初に、トランスレータクラスに、内側XmlObjectを提供し、且つ戻された内側オブジェクト上でXSD確認を行うように依頼する。これは次いで、XSD確認エラーメッセージに追記されることになる付加的な情報を入手するために、トランスレータクラスに対してgetObjectIdentifiersdataObjectメソッドをコールする。最後に、エラーメッセージは、さらなる処理のためにErrorHandlerのアプリケーションにより提供される実装に引き渡される。SegmentFilterクラス705は、非ルートXmlObjectから生成されたXMLセグメントから開始及び終了ドキュメント要素をフィルタで除去するために、javax.xml.stream.events.EventFilterインターフェースを実装する。これは、StAXパーサ104を用いてXMLをパーシングしながらこれらの要素をフィルタするために、XmlProducerImpl707によって用いられる。消費者クラスここで図8を参照すると、一実施形態に係る消費者クラス800のためのクラスダイアグラムが示されている。このアーキテクチャにおいて、XmlConsumer812、XmlConsumerFactory811、及びSegmentCursor806がアプリケーション101に露出される。一実施形態において、消費者クラス800は、2つのタスク、すなわち、アプリケーションデータオブジェクトの生成と、XMLとフラットファイルとの変換を取り扱う。構成パラメータは、XMLからフラットファイルへの融通性のある変換を提供するために用いることができる。一実施形態において、コンフィギュレータ103及びXmlExceptionクラス708は、フレームワーク102の消費者クラス800とプロデューサクラス700との両方に共通である。しかしながら、コンフィギュレータ103は、消費者クラス800に対する付加的な構成パラメータを提供することができる。プロデューサクラス700との関連において上記で説明された構成に加えて、消費者クラス800に対する以下の付加的な構成パラメータを構成することができる。●セグメント及びサブセグメント構成XMLにおけるすべてのセグメントを、それらがXMLドキュメントにおいて現れる順番にリストする。それらは本質的に、ドキュメントルート要素の即時の別個の子を表す。一実施形態において、このエントリは、構成されたセグメントサブセグメントの子が順次に処理される必要があるときにのみ要求される。それらは、そのサブセグメントが抽出され且つ順次に処理される必要があるセグメントの一意の子を表す。言い換えれば、アプリケーション101は、それらを順次に抽出してもよい。●クロスリファレンス構成:一実施形態において、消費者クラス800は、一度に一つだけのセグメント/サブセグメントに対するデータをメモリ内に保つ。幾つかの事例において、他のセグメント単数又は複数からのデータが必要とされる場合がある。フレームワーク102は、処理されているXMLドキュメントのライフサイクル全体にわたるセグメント/サブセグメントに収容される或るデータを格納する方法を提供する。こうしたデータは、クロスリファレンスデータと呼ばれる。クロスリファレンスデータは、セグメント及びサブセグメント上のXPathを用いて構成することができる。このデータは、識別子を介してアイデンティティを与えられる。XML処理のライフサイクルの全体を通して抽出されたデータを参照するために同じ識別子を用いることができる。以下は、クロスリファレンスを構成するために用いることができる構成の例である。●XSD確認エラーカスタマイゼーション構成:以下の構成は、特定のセグメントに対するXSD確認エラーメッセージに追記されることになる付加的な情報を抽出するために用いることができる。一実施形態において、あらゆる数のレコード識別子をセグメントと関連付けることができる。構成される識別子の値は、関連するタイプフィールドに基づいて評価される。それらのすべては、識別子フィールドに基づいて評価される。displayNameエントリにおいて指定される、評価される値及び名前は、XSD確認エラーメッセージに追記されることになる名前と値とのペアを生成するのに用いられる。例えば、employeeIDに、EMPLOYEEのような表示名をもつすべての無効なemployeeセグメントを追記するために、構成は、以下のように現れる場合がある。セグメントemployeeのすべてのXSD確認エラーメッセージは、以下のものを追記されるであろう。この付加的な情報は、失敗したXSD確認に対するemployeeレコードを識別する一助となる。一実施形態において、レコード識別子構成に対して以下のタイプがサポートされる。●SEGMENT_XPATH:このタイプに対応しているrefフィールドは、XPathとなるべきである。Xpathクエリは、セグメントをルートドキュメントとして対処することによって評価される。●OPEN_SEGMENT_XPATH:このタイプに対応しているrefフィールドは、XPathとなるべきである。Xpathクエリは、その子要素のいずれもなしに開かれたセグメントをルートドキュメントとして対処することによって評価される。●X_REF:このタイプに対応しているrefフィールドは、クロスリファレンス識別子となるべきである。●VALUE:このタイプに対するrefフィールド値は、如何なる評価をも行うことなく値として用いられる。●COUNT:指定されたセグメントレコードの現在のカウントは、refフィールドの値として評価される。●SESSION_DATA:refフィールドにおいて指定されるキーをもつマッチングセッションデータが用いられる。以下は、図8に描かれた種々のクラスの記述である。XmlConsumerクラス812は、XMLドキュメント107を処理するのに要求される動作を抽象化するために用いられる。アプリケーション101は、これを用いてXMLセグメント/サブセグメントを順次に処理する。アプリケーション101は、セグメント/サブセグメントの名前を渡し、フレームワーク102は、StAXパーサ104、トランスレーション層106、及びXMLBeansオブジェクトによって抽出された対応するXMLセグメントを用いて、対応するアプリケーションデータオブジェクトを生成する。一実施形態において、XmlConsumerクラス812は、以下のメソッドを含む。●SegmentCursoropenDataObjectStringsegmentName:アプリケーション101は、このメソッドを用いて、指定されたセグメントのサブセグメントへのカーソルを得る。SegmentCursorインターフェースは、セグメント及びそのサブセグメントのすべてに対応しているアプリケーションデータオブジェクトを取り出すためにメソッドを提供する。●ObjectgetDataObjectStringsegmentName:アプリケーション101は、このメソッドを用いて、指定されたセグメントに対応しているアプリケーションデータオブジェクトを取り出す。フレームワーク102は、StAXパーサ104を用いて指定されたXMLセグメントを抽出する。抽出されたXML及びセグメント名は、トランスレータクラスに渡される。トランスレータクラスは、セグメント名と抽出されたXMLセグメントとを用いて、対応するXMLObjectインスタンスをインスタンス化する。フレームワーク102は、トランスレータクラス構成される場合によって生成されたXmlObject上でXSD確認を行う。レコード識別子は、構成される場合にXmlObjectから抽出され、且つXSD確認エラーに追記される。確認エラーは、さらなる処理のために提供される場合特定用途向けエラーハンドラに引き渡される。最後に、フレームワーク102は、XmlObject及びセグメント名をトランスレータクラスに渡す。トランスレータクラスは、アプリケーション101に戻される対応するアプリケーションデータオブジェクトを生成する。●voidsetErrorHandlerErrorHandlerhandler:アプリケーション101は、随意的に、ErrorHandlerインターフェースを実装するエラーハンドラを設定することができる。XSD確認エラーは、さらなる処理のためにアプリケーション固有のエラーハンドラにデリゲートされる。●voiddoTransformFiletransformedFile:アプリケーション101は、このメソッドを用いて、XMLファイルをフラットファイルに変換する。変換は、構成ファイルにおいて指定される構成によって駆動される。●voidaddSessionDataStringkey,Objectvalue:アプリケーション101は、このメソッドを用いて、変換されたファイルをエンリッチするか又はXSD確認エラーにおける付加的な情報を付加するかのいずれかのために、フレームワークによって用いられる特定用途向けデータを付加する。XmlConsumerFactoryクラス811は、XmlConsumerインターフェースを実装する、オブジェクトの作成を要約するファクトリクラスである。一実施形態において、このクラスは、オブジェクトを作成するための、一方はファイルオブジェクトを伴い、他方は処理されることになるXMLドキュメントのファイル名を伴う、2つのオーバーロードされるメソッドを含む。ConsumerTranslatorインターフェース809は、消費者トランスレータクラスによって提供される動作を抽象化する。実装クラスは、抽出されたXMLセグメントから適切なXMLObjectインスタンスをインスタンス化するのに十分な知識を有する。プロセスの後の方で、対応するアプリケーションデータオブジェクトがXmlObjectインスタンスからインスタンス化される。一実施形態において、ConsumerTranslatorインターフェース809は、以下のメソッドを含む。●XmlObjectgetRooNodeName:トランスレータクラスは、ルートドキュメントノードの名前を戻す。フレームワーク102は、これを用いて、処理されているXMLにおけるルートノードを識別する。●XmlObjectgetXmlObjectStringsegmentName、StringsegmentXml、StringnamespaceStartWrapper、booleanisSubSegment:トランスレータクラスは、渡されたセグメント名及びセグメントXMLに基づいて、対応するXMLObjectインスタンス生成する。トランスレータクラスは、それらが必要とされる場合に他の2つのパラメータを利用することができる。生成されたXmlObjectは、XSD確認及びXPathクエリを用いるデータの抽出を行うためにフレームワークによって用いられる。●XmlObjectgetInnerXmlObjectStringsegmentName、XmlObjectobject:トランスレータクラスは、セグメント及びそのXMLBeansオブジェクトXmlObjectの知識を有する。生XMLデータからXMLBeansを生成しながら、XMLBeansオブジェクトグラフにおいて親XMLBeansオブジェクトが生成される。戻されたXMLBeansオブジェクトは、XSD確認を行うためにフレームワーク102によって用いられる。●ObjectgenerateDataObjectXmlObjectxmlObject:トランスレータクラスは、パスインされたXMLBeansオブジェクトXmlObjectを用いて、対応するアプリケーションデータオブジェクトを生成する。具体的なタイプのパスインされるxmlObjectインスタンスは、生成されることになるアプリケーションデータオブジェクトタイプを判定するのに用いられる。XmlConsumerImplクラス805は、XmlConsumerインターフェース812を実装する。このクラスの新しいインスタンスは、XmlConsumerFactory811を介してアプリケーション101に戻される。アプリケーション101は、XMLセグメントを順次に処理するためにXmlConsumer812インスタンス上で動作し、XmlConsumer812及びSegmentCursor806インターフェース規約において提供されるメソッドを呼び出す。一実施形態において、StAXパーサ104、生成されたXMLBeansオブジェクト、トランスレーション層106、及び確認メッセージハンドリングの間でのすべての協調が、XmlConsumerImplクラス805によって制御される。これは、XMLを順次に処理するのに必要とされる以下のようなすべての機能性を収容する。●XMLセグメント/サブセグメント及び開かれたセグメントを処理することによってアプリケーションデータオブジェクト単数又は複数を生成すること。●開かれたセグメント単数又は複数のトラックを保つこと。●XMLセグメント上でXSD確認を走らせ、且つエラーをエラーハンドラにデリゲートすること。●XmlObjectインスタンス上でXpathクエリを走らせることによって構成されたデータを抽出すること。●クロスリファレンスデータを抽出すること。●構成される場合にXMLからフラットファイルへの変換を行うこと。一実施形態において、XmlConsumerImplクラス805は、2つの異なる規約、すなわち、以下で説明されるように、アプリケーションデータオブジェクトを提供すること及びXMLをフラットファイルに変換することを実装する。データオブジェクトの抽出。アプリケーションデータオブジェクトは、要求されたセグメントの抽出されたXMLセグメントから作成される。一実施形態において、このタスクを達成するために以下のステップに従う。1.アプリケーション101によって渡されるセグメント/サブセグメント名に基づいてセグメント/サブセグメントを抽出する。2.トランスレータクラスは、抽出されたXMLセグメントに対応している指定されたXmlObjectインスタンスを生成する。3.戻されたXmlObject上でXpathクエリを走らせることによって、構成されたXPathクロスリファレンスデータを抽出する。4.戻されたXmlObject上で確認を行い、確認エラーをカスタマイズし構成される場合、次いで、さらなる処理のためにエラーを特定用途向けErrorHandler808に引き渡す。抽出されたデータ値をエラーメッセージに付加するために、XmlObject上のXpathクエリを用いて付加的なデータログエントリにおいて構成される場合が抽出される。5.セグメントがXSD確認をパスせず、skipinvalidoptionが真である場合に、現在のセグメントを無視する。次のセグメントを取り出し、且つこれをステップ2を通じて渡す。6.トランスレータクラスは、XmlObjectを用いて、対応するアプリケーションデータオブジェクトを生成する。7.生成された特定用途向けデータオブジェクトがアプリケーション101に戻される。XMLからフラットファイルへの変換。一実施形態において、XMLをフラットファイルに変換するために以下のステップが行われる。1.フラットファイルのヘッダを生成するために、要求されたセグメント構成される場合を抽出する。2.トランスレータクラスが、抽出されたXMLセグメントに対応している指定されたXmlObjectインスタンスを生成する。3.戻されたXmlObject上でXpathクエリを走らせることによって、構成されたXPathクロスリファレンスデータを抽出する。4.戻されたXmlObject上で確認を行い、確認エラーをカスタマイズし構成される場合、次いで、さらなる処理のためにエラーをErrorHandler808に引き渡す。抽出されたデータ値を確認エラーメッセージに付加するために、XmlObject上のXpathクエリを用いて付加的なデータログエントリにおいて構成される場合を抽出する。5.戻されたXmlObjectからデータを抽出し、且つXpathクエリを走らせて、データを取り出し、且つこれをフラットファイルにポピュレートする。6.すべてのボディセグメント及びサブセグメントに対してステップ1~5を繰り返す。7.フッタをフラットファイル構成される場合に追記する。インターフェースメソッドを実装することに加えて、XmlConsumerImplクラス805はまた、以下のような内部メソッドを含むことができる。●protectedvoidsetup保護されたボイドセットアップFilexmlOutFile,ConsumerTranslatortrans,Segment[]segments,XPathCrossReference[]xPathCrossRef,booleanincludeInvalid,booleanlogInvalid:コンフィギュレータクラス709は、アプリケーション101がXmlConsumerFactoryを介してXmlConsumerのインスタンスを要求するときに、このクラスの新しいインスタンスを作成する。次いで、トランスレータクラスのインスタンスが作成され、構成情報例えば、XSD確認が行われる必要があるかどうか、XSD確認エラーをログするかどうか、並びにセグメント及びそれらのサブセグメントのリストを渡すために、このメソッドが呼び出される。●privateXmlObjectgetSegmentXmlObjectStringsegmentName:このメソッドは、パスインされたセグメント名に対応しているXMLセグメントを抽出することを担当する。StAXパーサ104は、XMLセグメントを抽出するのに用いられる。トランスレータクラスは、抽出されたXMLから対応するXMLBeansオブジェクトを作成する。●privateXmlObjectopenSegmentStringsegmentName:このメソッドは、パスインされたセグメント名に対応しているXMLセグメントその子要素のいずれもなしにを抽出することを担当する。パーシングは、名付けられたセグメントの子が検出されるとすぐに停止される。整形式のXMLは、クロージングタグを追記することによって生成される。抽出されたXML追記されるクロージングタグを伴うは、トランスレータクラスに渡される。トランスレータクラスは、抽出されたXMLから対応するXMLBeansオブジェクトを作成する。●privatebooleananalyzeプライベートブール解析StringsegmentName,XmlObjectxmlObject:フレームワーク102は、このメソッドを用いてXSD確認を行い、且つそれを行うように構成される場合にあらゆるXSDエラーをログする。トランスレータクラスは、XSD定義に応じて内側XMLBeansオブジェクト又は同じオブジェクトを提供する。戻されたXMLBeansオブジェクト上でXSD確認が行われる。エラーメッセージもしあればは、提供された構成に基づいてカスタマイズされる。最後に、エラーメッセージは、さらなる処理のためにErrorHandler808に引き渡される。SegmentCursorImplクラス807は、開かれたセグメントのサブセグメントにわたって反復するためにSegmentCursor806インターフェースの実装を提供する。XPathCrossReferenceクラス810は、XPathクロスリファレンスと関係付けられた構成データを要約し、且つこのデータをセットし且つ入手するためにセッター/ゲッターメソッドを提供する。Fieldクラス801は、識別子の構成された名前及びタイプを要約し、例は、SEGMENT_XPATH、OPEN_SEGMENT_XPATH、X_REF、VALUE、COUNT、SESSION_DATA、及びUSER_DEFINEDを含む。Fieldクラス801は、名前及びタイプに対するセッター/ゲッターメソッドを提供する。LogFieldクラス802は、Fieldクラス801を拡張し、且つ表示名及び関係するセッター/ゲッターメソッドを保持するために付加的な変数を付加する。Separatorクラス813は、XMLとフラットファイルとの変換を行いながら、必要とされるレコード及びフィールドセパレータに関係する構成データを要約する。TransformConfigクラス804は、XMLをフラットファイルに変換するのに必要とされるすべての構成データヘッダ、ボディ、フッタなどのようなを要約する。Segmentクラス803は、その名前、親セグメントもしあれば、及びサブセグメントもしあればのようなセグメントについての構成情報を要約する。XMLとフラットファイルとの変換構成上記で解説されたように、一実施形態において、フレームワーク102によって生成されるフラットファイルは、3つのセクション、すなわち、ヘッダ、ボディ、及びフッタを有する。一実施形態において、フレームワーク102は、以下のように、これらのセクションの各々に対する複数の構成オプションを提供する。ヘッダヘッダは、送信元情報、トランザクションID、レコードの数などのようなメタデータを収容する。データは、ヘッダに書き込まれることになるあらゆるXMLセグメントから抽出することができる。構成に対するシンタックスの例は以下の通りである。セグメント名は、XMLセグメントの名前であり、この場合、データは、フィールド構成で指定されたようにXpathクエリを走らせることによって抽出される必要がある。一実施形態において、フィールド構成は、XSD確認エラーカスタマイゼーション構成と同一である。しかしながら、ref及びtypeは、コロンで区切られ、各ペアをコンマで区切ることによって構成することができる。ref部は、構成されるtypeに基づいて評価される。このセクションで構成されるXPathは、一般に、シンプルテキスト又は単一の属性値を評価する。評価された値は、ここで構成されたのと同じ順番でフラットファイルヘッダにポピュレートされる。変換されたファイルにポピュレートされた値は、区切り文字によって分離される。区切り文字の値は、以下で解説するように構成することができる。ボディヘッダ部に対して上記に示されたものと類似したフォーマットを用いて、あらゆる数のセグメントを構成することができる。一般に、構成されるセグメントのすべてのサブセグメントは、指定されたサブセグメントに遭遇する度に、再帰的に取り出され、1つのレコードが作成され、且つ変換されたファイルに追記される。前に述べたように、セグメント及びそれらのサブセグメントのリストは、それらがXMLドキュメントにおいて現れる順番に構成される。フッタフッタ構成は、サマリレコードを作成し且つこれを変換されたファイルの末尾に追記することへのサポートを提供する。これは、ヘッダに対して上記で説明されたのと類似したフォーマットに従う。フィールド及びレコード区切り文字一実施形態において、あらゆる区切り文字を指定することができる。以下の構成は、変換されたファイルにおける区切り文字を指定するために用いることができる。実施例以下は、本発明の技術を用いてXMLドキュメント107を生成生産し及び処理消費する例である。例証する目的で、例は、以下のXSDを用いる。以下は、上記のXSDに適合するサンプルXMLドキュメント107である。以下の例は、上記のXSD及びサンプルXMLに対するプロデューサ動作、消費者動作、及びファイル変換動作を実証する。第1のステップは、XMLBeansクラスを生成することである。XMLBeansクラスを生成するために以下のコマンドが用いられる。このコマンドは、XMLBeansを拡張するJava登録商標インターフェースクラスを生成する。以下は、このプロセスによって生成されるサンプルインターフェースJava登録商標クラスのリストである。トランスレーション層106は、動作するのにアプリケーションデータオブジェクトを必要とする。それらは、プロデューサトランスレータによってXMLを生成するのに用いられる。消費者トランスレータは、抽出されたXMLからそれらのインスタンスを作成する。データオブジェクトは、如何なるXMLイベント又はXMLBeansオブジェクトをも意識しない。しかしながら、それらは、プロデューサトランスレータによって用いられるときにそれらからデータを抽出する方法を提供し、且つ消費者トランスレータによって用いられるときにデータをポピュレートする方法を提供する必要がある。例証する目的で、我々は、アプリケーション101が、サンプルXMLにおいて表されるデータを要約するために以下の3つのクラスを有すると仮定する。●トランザクションIDtransactionID、トランザクション日付transactiondate、及びXMLドキュメントの送信元senderについての情報のようなヘッダレベルデータを要約する、HeaderDto。●itemのinventory情報を要約する、InventoryDto。●promotionデータを要約する、PromotionDto。これらのクラスの例が以下に示される。前に述べたように、プロデューサトランスレータクラスは、ProducerTranslatorインターフェースを実装し、消費者トランスレータクラスは、ConsumerTranslatorインターフェースを実装する。ProducerTranslatorプロデューサトランスレータ一実施形態において、フレームワーク102は、3つの異なる方法のいずれかでXMLドキュメント107を生成することができる。●XMLドキュメント全体107を同時に生成する。この手法は、inventory及びpromotion要素が過多に存在しないときに実行可能である。アプリケーション101は、XMLドキュメント全体107を生産するのに必要とされるすべてのデータを有するアプリケーションデータオブジェクトを提供する。しかしながら、一実施形態において、XmlConsumerインターフェース規約は、単一のオブジェクトのみを渡すことを可能にする。この事例において、データは、複数のデータオブジェクト、すなわちHeaderDtoインスタンス、InventoryDto[]インスタンス、及びPromotionDto[]インスタンスに要約される。これは、2つの方法のうちの1つ、すなわち、すべてのオブジェクトを別のオブジェクトの中にラップすること、又はそれらのすべてをHashMapに入れることのいずれかで行うことができる。例証する目的で、この例ではHashMap手法が用いられるであろう。●セグメントtransactionInfo、inventory、及びpromotionsを所与の順番で付加することによって、XMLドキュメント107を増加的に生成する。アプリケーション101は、各セグメントをXMLに追記することができるように、Headerインスタンス、Inventory[]インスタンス、及びPromotion[]インスタンスを順次にフレームワーク102に渡す。●XMLセグメントtransactionInfoを生成し、次いで、セグメントinventoryを開き、そのサブセグメントitemを順次に付加する。同様に、開かれたセグメントpromotionsを生成し、且つサブセグメントpromotionを順次に付加する。アプリケーション101は、transactionInfoXMLセグメントを生成することができるように、HeaderDtoインスタンスを渡す。開かれたセグメントinventoryは、transactionInfoセグメントに追従し、InventoryDtoオブジェクトのインスタンスは、フレームワーク102に順次に渡される。promotionsに対して同じプロセスinventoryの事例のようにが繰り返される。プロデューサトランスレータクラスは、これらの事例の各々を取り扱うことができ、したがって、これは、すべての3つの事例において対応するXMLObjectをインスタンス化することができる。特性ファイルは、例えば以下のエントリを付加することによって、このトランスレータクラスを用いるように構成される。XMLドキュメント全体107を同時に生成するために、アプリケーション101は、XMLドキュメント107を生成するのに必要とされるデータをDTOの形態で提供する。トランスレータクラスは、アプリケーション101が達成しようとしていることを理解することができるような方法で実装される。例えば、アプリケーション101は、アプリケーションデータオブジェクトのインスタンス、すなわち、キーヘッダ、inventory、及びpromotionsをそれぞれ伴うHeaderDto、InventoryDto[]アレイ、及びPromotion[]アレイを収容するHashMapを渡してもよい。このパラメータを受信すると、フレームワーク102は、XMLドキュメント107全体を生成することができる。この手法によって生成されたXMLドキュメント107の例は以下の通りである。XMLドキュメント107を増加的に生成するために、transactionInfoセグメント、inventoryセグメント、及びpromotionsセグメントが順次に付加される。例えば、フレームワーク102は、HeaderDtoからtransactionInfoXMLセグメントを生成し、InventoryDto[]アレイインスタンスからinventoryセグメントを生成し、及びPromotionDto[]アレイインスタンスからpromotionsを生成する。セグメント及びサブセグメントを順次に付加することによってXMLドキュメント107を生成するために、transactionInfoセグメントが最初に付加され、その後、inventoryサブセグメントitem、及びpromotionsサブセグメントpromotionが順次に付加される。フレームワーク102は、最初にHeaderDtoインスタンスからtransactionInfoXMLセグメントを生成する。次に、これは、inventoryに対する開かれたセグメントを付加し、且つすべてのそのサブセグメントを順次に付加する。inventoryセグメントを閉じた後で、開かれたセグメントpromotionsが付加される。そのサブセグメントのすべては、後で順次に付加される。closeAllへのコールは、それらが開かれた順番にすべての開かれたセグメントを閉じる。消費者トランスレータ一実施形態において、フレームワーク102は、3つの異なる方法のいずれかでXMLドキュメント107を処理することができる。●transactionInfo、inventory、及びpromotionsのようなセグメントを順次に抽出する。アプリケーション101は、これらを順次に取り出すことができる。これらのセグメントのうちのすべてのサブセグメントは、それぞれのセグメントと一緒に取り出されるであろう。●セグメントtransactionInfoを抽出し、次いで、セグメントinventoryを開き、その後、そのサブセグメントitemを順次に抽出する。最後に、セグメントpromotionsを開き、その後、そのサブセグメントpromotionを順次に抽出する。●構成ファイルで指定された場合にXMLドキュメント107をフラットファイルに変換する。消費者トランスレータクラスは、これらの事例のいずれかを取り扱うために用いられる。特性ファイルは、例えば以下のエントリを付加することによって、このトランスレータクラスを用いるように構成される。これらのエントリは、フレームワーク102に以下のように指示する。●トランスレーションのためにInventoryConsumerTranslatorクラスを用いる。●XSD確認に失敗するセグメント/サブセグメントを含まないこと。●XSD確認エラーをログすること。●ルートノードの3つの子、すなわち、transactionInfo、inventory、及びpromotionsが存在し、これらはセグメントと呼ばれる。●itemは、inventoryセグメントの唯一のサブセグメント子ノードである。●promotionは、promotionsセグメントの唯一のサブセグメント子ノードである。上記で解説されたように、フレームワーク102は、所望の場合にセグメントtransactionInfo、inventory、及びpromotionsを順次に抽出することによって、XMLドキュメント107を処理することができる。こうした処理によって生成される出力の例は、以下の通りである。promotion及びitemサブセグメントは、順次に処理することができる。サブセグメントを順次に処理することは、多数のサブセグメントが期待されるときに有用なことがあり、それらのすべてを一緒に抽出することは、アプリケーション101にメモリを使い果たさせる場合がある。最初に、フレームワーク102は、固定されたサイズのセグメントtransactionInfoを処理する。transactionInfoセグメントを処理した後で、アプリケーション101は、フレームワーク102に、inventoryセグメントを開き、且つitemサブセグメントを順次に処理するように依頼する。最後に、アプリケーション101は、フレームワーク102に、セグメントpromotionsを開き、且つサブセグメントpromotionを順次に処理するように依頼する。XMLドキュメント107をフラットファイルにトランスレートするときに、変換されたデータは、XMLにより指定されたものとアプリケーションにより指定されたものとの2つの異なるソースを有する。抽出されることになるXMLデータは、XPathsを用いて表され、アプリケーションにより指定されたデータは、sessiondataとして表される。一実施形態において、データは、書き込まれることになるフラットファイルの各セクション、すなわち、ヘッダ、ボディ、及びフッタに対して適切に構成される。例えば、ヘッダは、すべてがtransactionInfoセグメントから来る以下のフィールドを含むものと想定する。●transactionId●senderId●senderNameフラットファイルのボディは、inventoryセグメント及びpromotionsセグメントからのフィールドを含むものと想定する。サブセグメントに対応しているフィールドは、変換されたファイルにおけるボディレコードを構成するであろう。transactionInfoセグメントからのSenderId及びtransactionIdは、クロスリファレンスを介して含まれるであろう。また、各inventoryレコードは、ワードINVENTORYで始まり、promotionレコードは、ワードPROMOTIONで始まるべきである。そのうえ、累積レコードカウント及びアプリケーションにより指定されたフィールド、すなわち処理日付もまた付加されることになると想定する。以下のフィールドは、フラットファイルにおけるinventory/promotion及びフッタレコードを構成する。●Inventoryセグメント○INVENTORYというそのままのワード○transactionInfoセグメントからのsenderId○itemid○availabilitycode利用可能コード○availabilityquantity利用可能量○アプリケーションデータ-processingdate処理日付○transactionInfoセグメントからのtransactionid○inventoryセグメント内の累積itemレコードカウント●Promotionsセグメント○PROMOTIONというそのままのワード○transactionInfoセグメントからのsenderId○promotionコード○transactionInfoセグメントからのtransactionid○promotionsセグメント内の累積promotionレコードカウント●Footerフッタ○transactionInfoセグメントからのtransactionid○itemレコードの数○promotionレコードの数○promotionレコードとitemレコードの総数。以下は、上記のフィールドを変換されたファイルに含めるための構成の例である。1つのセグメントから別のセグメントにクロスリファレンスされているフィールドは、クロスリファレンスconfigのリストに含まれる。結果として得られるフラットファイルの例は以下の通りである。この例において、フレームワーク102は、すべてのアプリケーションにより付加されたデータのtoString関数の出力を用いる。デフォルトレコードセパレータ新しいライン及びデフォルトフィールドセパレータ|は、それらが指定されていなかった場合に用いられる。一実施形態において、XSD確認エラーメッセージは、それらに付加的な情報を追記することによってカスタマイズすることができる。例えば、itemサブセグメントがXSD確認に失敗するときにはいつも、transactionIdクロスリファレンスを介して及びitemIdを付加することを我々が望むと想定する。transactionIdに対する表示名は、TRANSACTIONIDとなるべきであり、itemIdに対する表示名は、Itemとなるべきである。このカスタマイゼーションに対する構成エントリは、以下のようになる可能性がある。エラーメッセージは、次いで、以下のように読み出されるであろう。角括弧内の情報は、無効なitemセグメントに遭遇するときの包含のためにフレームワーク102構成される場合にによって付加されている。結論上記の説明に基づいて、種々の実施形態において、本発明のシステムは、従来技術のスキームを上回る幾つかの利点を提供することが分かる。本発明のシステムは、任意のサイズのXMLドキュメントをシリアルに処理し及び/又は生成することができるように、StAXパーサのストリーミング及び融通性をXMLBeansのパワー及び使いやすさと組み合わせる。加えて、アプリケーションコードは、XMLドキュメントのパーシング及び処理の詳細から隔離することができ、アプリケーションコードを維持しやすいものにし、且つアプリケーションに影響を及ぼすことなく他のXML技術でのスワップアウトを容易にする。種々の実施形態において、本発明は、上記で説明された技術を単独で又はあらゆる組合せでのいずれかで行うためのシステム又は方法として実装することができる。別の実施形態において、本発明は、コンピューティングデバイス又は他の電子装置におけるプロセッサに上記で説明された技術を行わせるための、一時的なものではないコンピュータ可読記憶媒体と、該媒体上でエンコードされるコンピュータプログラムコードとを備えるコンピュータプログラム製品として実装することができる。本明細書における一実施形態又は実施形態への言及は、実施形態との関連において説明された特定の機能feature、構造、又は特徴が、本発明の少なくとも1つの実施形態に含まれることを意味する。本明細書の種々の場所での一実施形態においてという語句の出現は、必ずしもすべてが同じ実施形態を言及するわけではない。上記の幾つかの部分は、コンピュータメモリ内のデータビット上の動作のアルゴリズム及び象徴的表現の観点で提示される。これらのアルゴリズム記述及び表現は、それらの研究の実体を他の当業者に最も効果的に伝えるためにデータ処理分野の当業者によって用いられる手段である。アルゴリズムは、ここでは及び一般に、所望の結果につながる、つじつまの合う一連のステップ命令となると考えられる。ステップは、物理的量の物理的操作を要求するものである。普通は、必ずしもそうであるわけではないが、これらの量は、格納する、伝送する、組み合わせる、比較する、変換する、及び他の方法で操作することができる電気信号、磁気信号、又は光信号の形態をとる。時には、主として恒例commonusageの理由で、これらの信号を、ビット、値、要素、記号symbol、文字character、用語term、数、又はそれに類似のものとして言及するのが便利である。そのうえ、時には、一般性を失わずに、物理的量の物理的操作を要求するステップの或る配置を、モジュール又はコードデバイスとして言及するのも便利である。しかしながら、これらの及び類似した用語のすべては、適切な物理的量と関連付けられるものであって、これらの量に貼られる単なる便利なラベルであることに留意されたい。特にそれ以外の指定のない限り、以下の解説から明らかなように、説明の全体を通して、処理する又はコンピューティング又は計算する又は判定する又は表示する又はそれに類似のもののような用語を用いる解説は、コンピュータシステムメモリ又はレジスタ若しくは他のこうした情報記憶装置、伝送デバイス、又はディスプレイデバイス内の物理的電子量として表されるデータを操作し及び変換するコンピュータシステム又は類似した電子コンピューティングデバイスのアクション及びプロセスを言及することが分かる。本発明の或る態様は、アルゴリズムの形態の本明細書に記載のプロセスステップ及び命令を含む。本発明のプロセスステップ及び命令は、ソフトウェア、ファームウェア、又はハードウェアにおいて具体化することができ、ソフトウェアにおいて具体化されるときに、種々のオペレーティングシステムによって用いられる異なるプラットフォーム上に常駐するようにダウンロードし及びそこから動作することができることに注意されたい。本発明はまた、本明細書の動作を行うための装置に関する。この装置は、要求された目的のために特別に構築されてもよく、又は、これは、コンピュータに格納されたコンピュータプログラムによって選択的にアクティブ化され又は再構成される1つ又は複数の汎用コンピュータ単数又は複数を備えてもよい。こうしたコンピュータプログラムは、限定はされないが、電子命令を格納するのに適しており、且つ各々がコンピュータシステムバスに結合される、フロッピー登録商標ディスク、光ディスク、CD-ROM、磁気-光ディスク、読出し専用メモリROM、ランダムアクセスメモリRAM、EPROM、EEPROM、磁気又は光学カード、特定用途向け集積回路ASIC、又はあらゆるタイプの媒体を含むあらゆるタイプのディスクのようなコンピュータ可読記憶媒体に格納されてもよい。そのうえ、本明細書において言及されるコンピュータ及び/又は他の電子装置は、単一のプロセッサを含んでもよく、又は、増加したコンピューティング能力のための多数のプロセッサ設計を採用するアーキテクチャであってもよい。一実施形態において、上記で説明された幾つかの又はすべての機能性コンポーネントは、ソフトウェアの制御の下で上記で説明されたステップを行うプロセッサを含むコンピュータハードウェアとして実装される。本明細書で提示されるアルゴリズム及び表示は、如何なる特定のコンピュータ又は他の装置とも本質的に関係付けられない。種々の汎用システムもまた本明細書の教示に係るプログラムと共に用いられる可能性があり、又は要求される方法ステップを行うためにより特化された装置を構築することが便利であることを証明する可能性がある。種々のこれらのシステムに対して要求される構造は、以下の説明から明らかとなるであろう。加えて、本発明は、如何なる特定のプログラミング言語にも関連して説明されない。種々のプログラミング言語は、本明細書で説明される場合の本発明の教示を実装するのに用いられてもよく、固有の言語への以下のあらゆる言及は、本発明の実施可能モード及び最良モードを開示するために提供されることが理解されるであろう。したがって、種々の実施形態において、本発明は、コンピュータシステム、コンピューティングデバイス、又は他の電子装置、又はクライアント/サーバアーキテクチャ、又はそのあらゆる組合せ又は複数を制御するためのソフトウェア、ハードウェア、又は他の要素として実装することができる。本発明のシステムを実装するためのハードウェアは、例えば、当該技術分野では周知の技術に係るプロセッサ、入力デバイスキーボード、マウス、タッチパッド、トラックパッド、ジョイスティック、トラックボール、マイクロフォン、及び/又はその任意の組合せのような、出力デバイススクリーン、スピーカ、及び/又はそれに類似のもののような、メモリ、長期記憶装置磁気記憶装置、光学記憶装置、及び/又はそれに類似のもののような、及び/又はネットワーク接続性を含むことができる。こうした電子装置は、ポータブルのものであってもよいし、又はポータブルのものでなくてもよい。本発明を実装するために用いられてもよい電子装置又は本発明のコンポーネントの例は、移動電話、パーソナルデジタルアシスタント、スマートフォン、公衆電話ボックスkiosk、デスクトップコンピュータ、ラップトップコンピュータ、消費者向け電子装置、テレビ、セットトップボックス、又はそれに類似のものを含む。本発明を実装するための電子装置は、例えば、Redmond、WashingtonのMicrosoftCorporationから入手可能なMicrosoftWindows登録商標7のようなオペレーティングシステム、又はデバイス上で用いるために適合されるあらゆる他のオペレーティングシステムを用いてもよい。最後に、本明細書で用いられる言語は、主として、読みやすさ及び教育上の目的のために選択されており、発明的な主題を描写する又は局限するように選択されているわけではないことに注意されたい。したがって、本発明の開示は、以下の請求項に記載される本発明の範囲を限定するのではなく、例証となることを意図される。本発明は、好ましい実施形態及び幾つかの代替的実施形態を参照して具体的に示され説明されているが、本発明の精神及び範囲から逸脱することなく形態及び詳細における種々の変化をそこに加えることができることが当業者には理解されるであろう。"