(57)【要約】【課題】  スキーマに基づいて、階層データ構造をフラットデータ構造に変換すること。【解決手段】  階層データ構造のフォーマットはＸＭＬでもよい。スキーマに適合する階層データ構造がアプリケーションプログラムにおいてロードされる。データ構造は、親−子関係で結合された要素および属性を含む。スキーマは、階層データ構造における要素と属性の間の階層関係を定義する。アプリケーションプログラムにおいてスキーマに適合する階層データ構造がロードされた後、スキーマに基づいて複数のレイアウトルールが階層データに適用されてフラットデータ構造が作成される。レイアウトルールが階層データに適用された後、データを行および列に挿入することによって階層データがスプレッドシートにレンダリングされる。【選択図】  図２
2004265405.tif 000002
【特許請求の範囲】
【請求項１】
階層データ構造をフラットデータ構造に変換するための方法であって、
アプリケーションプログラムにおいて、要素と属性の間の階層関係を定義するスキーマに適合する、親−子関係で結合された前記要素および属性を含む階層データをロードするステップと、
フラットデータ構造を作成するために、複数のレイアウトルールを前記スキーマに基づいて前記階層データに適用するステップと、
前記階層データが前記フラットデータ構造の行および列に挿入されるように前記階層データをレンダリングするステップと
を具えたことを特徴とする方法。
【請求項２】
前記複数のレイアウトルールを前記スキーマに基づいて前記階層データに適用するステップは、
前記スキーマで定義された前記要素の出現要件を識別する、前記スキーマ内のプロパティを識別するステップと、
前記複数のレイアウトルールを前記識別されたプロパティに基づいて適用するステップと
を含むことを特徴とする請求項１記載の方法。
【請求項３】
前記プロパティは、
前記要素が前記階層データに出現する順序と、
各要素が前記階層データに出現する最低回数および最高回数と
を指定する第１のプロパティを含むことを特徴とする請求項２記載の方法。
【請求項４】
前記プロパティは、
選択された要素が前記階層データに出現する最低回数および最高回数を指定する第２のプロパティを含むことを特徴とする請求項２記載の方法。
【請求項５】
前記第１のプロパティは、Ｓｅｑｕｅｎｃｅコンポジタであることを特徴とする請求項３記載の方法。
【請求項６】
前記第１のプロパティは、Ａｌｌコンポジタであることを特徴とする請求項３記載の方法。
【請求項７】
前記第２のプロパティは、Ｃｈｏｉｃｅコンポジタであることを特徴とする請求項４記載の方法。
【請求項８】
前記レイアウトルールは、前記第１のプロパティに従って各要素を前記フラットデータ構造内の同じ行に挿入するステップを含むことを特徴とする請求項３記載の方法。
【請求項９】
前記レイアウトルールは、各要素の出現の前記最高回数が１回を超える場合、前記第１のプロパティに従って各要素を前記フラットデータ構造内の別の行に挿入するステップを含むことを特徴とする請求項３記載の方法。
【請求項１０】
前記レイアウトルールは、前記第２のプロパティに従って選択された各要素を前記フラットデータ構造内の別の行に挿入するステップを含むことを特徴とする請求項４記載の方法。
【請求項１１】
前記レイアウトルールは、前記フラットデータ構造内に各属性を挿入するステップを含むことを特徴とする請求項１記載の方法。
【請求項１２】
前記レイアウトルールは、前記フラットデータ構造内のその親要素の内容と同じ行に各属性を挿入するステップを含むことを特徴とする請求項１記載の方法。
【請求項１３】
前記レイアウトルールは、内容の出現毎に、各属性を前記フラットデータ構造内のその親要素の内容と同じ行に挿入するステップを含むことを特徴とする請求項１記載の方法。
【請求項１４】
前記階層データは、祖先要素および兄弟要素を含むことを特徴とする請求項１記載の方法。
【請求項１５】
前記レイアウトルールは、子孫の出現毎に、前記祖先要素を前記フラットデータ構造内のその子孫と同じ行に挿入するステップを含むことを特徴とする請求項１４記載の方法。
【請求項１６】
前記レイアウトルールは、兄弟が複数回出現する毎に、同じ行に前記兄弟要素を挿入するステップを含むことを特徴とする請求項１４記載の方法。
【請求項１７】
前記レイアウトルールは、複数の兄弟要素の出現の前記最高回数が１回を超える場合、各兄弟要素を前記フラットデータ構造内の別の行に挿入するステップを含むことを特徴とする請求項１４記載の方法。
【請求項１８】
前記階層データは、ＸＭＬデータであることを特徴とする請求項１記載の方法。
【請求項１９】
前記アプリケーションプログラムは、スプレッドシートアプリケーションプログラムであることを特徴とする請求項１記載の方法。
【請求項２０】
前記フラットデータ構造は、電子スプレッドシートによって容易に使用可能であることを特徴とする請求項１記載の方法。
【請求項２１】
請求項１記載の方法を実行するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読媒体。
【請求項２２】
階層データ構造をフラットデータ構造に変換するためのコンピュータシステムであって、
メモリと、
前記メモリに機能的に結合されている処理ユニットと
を具え、
前記メモリは、
前記階層データ構造と、
前記フラットデータ構造に関連付けられたスキーマと、
前記フラットデータ構造と
を格納し、
前記処理ユニットは、
要素と属性の間の階層関係を定義するスキーマに適合する、親−子関係で結合された前記要素および属性を含む前記階層データをロードし、
前記スキーマで定義された前記要素の出現要件を識別する前記スキーマ内のプロパティを識別し、
前記フラットデータ構造を作成するために、複数のレイアウトルールを前記識別されたプロパティに基づいて適用し、
前記階層データが前記フラットデータの行および列に挿入されるように前記階層データをレンダリングする
ために動作可能なコンピュータ実行可能命令を実行することを特徴とする階層データ構造をフラットデータ構造に変換するためのコンピュータシステム。
【請求項２３】
前記プロパティは、
前記要素が前記階層データに出現する順序と、
各要素が前記階層データに出現する最低回数および最高回数と
を指定する第１のプロパティを含むことを特徴とする請求項２２記載のシステム。
【請求項２４】
前記プロパティは、
選択された要素が前記階層データに出現する前記最低回数および最高回数を指定する第２のプロパティを含むことを特徴とする請求項２２記載のシステム。
【請求項２５】
前記第１のプロパティは、Ｓｅｑｕｅｎｃｅコンポジタであることを特徴とする請求項２３記載のシステム。
【請求項２６】
前記第１のプロパティは、Ａｌｌコンポジタであることを特徴とする請求項２３記載のシステム。
【請求項２７】
前記第２のプロパティは、Ｃｈｏｉｃｅコンポジタであることを特徴とする請求項２４記載のシステム。
【請求項２８】
前記レイアウトルールは、前記第１のプロパティに従って各要素を前記フラットデータ構造内の同じ行に挿入するステップを含むことを特徴とする請求項２３記載のシステム。
【請求項２９】
前記レイアウトルールは、各要素の出現の前記最高回数が１回を超える場合、前記第１のプロパティに従って各要素を前記フラットデータ構造内の別の行に挿入するステップを含むことを特徴とする請求項２３記載のシステム。
【請求項３０】
前記レイアウトルールは、前記第２のプロパティに従って選択された各要素を前記フラットデータ構造内の別の行に挿入するステップを含むことを特徴とする請求項２４記載のシステム。
【請求項３１】
前記レイアウトルールは、前記フラットデータ構造内に内容を有する各要素を挿入するステップを含むことを特徴とする請求項２２記載のシステム。
【請求項３２】
前記レイアウトルールは、前記フラットデータ構造内に各属性を挿入するステップを含むことを特徴とする請求項２２記載のシステム。
【請求項３３】
前記レイアウトルールは、前記フラットデータ構造内のその親要素の内容と同じ行に各属性を挿入するステップを含むことを特徴とする請求項２２記載のシステム。
【請求項３４】
前記レイアウトルールは、内容の出現毎に、各属性を前記フラットデータ構造内のその親要素の内容と同じ行に挿入するステップを含むことを特徴とする請求項２２記載のシステム。
【請求項３５】
前記レイアウトルールは、子孫の出現毎に、祖先要素を前記フラットデータ構造内のその子孫と同じ行に挿入するステップを含むことを特徴とする請求項２２記載のシステム。
【請求項３６】
前記レイアウトルールは、兄弟が複数回出現する毎に、同じ行に兄弟要素を挿入するステップを含むことを特徴とする請求項２２記載のシステム。
【請求項３７】
前記階層データは、ＸＭＬデータであることを特徴とする請求項２２記載のシステム。
【請求項３８】
前記アプリケーションプログラムは、スプレッドシートアプリケーションプログラムであることを特徴とする請求項２２記載のシステム。
【請求項３９】
前記フラットデータ構造は、電子スプレッドシートによって容易に使用可能であることを特徴とする請求項２２記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高階層データ構造の非階層（またはフラット）データ構造への変換に関し、より詳細には、標準フォーマットのスキーマに関連付けられた入力データの受信、およびスキーマに基づく入力データのフラットなテーブルデータ構造への変換を行う方法、およびそのシステムに関する。
【背景技術】
【０００２】
歴史的に見ると、コンピュータシステムおよびデータベースは、互換性のないフォーマットでデータを含んでいた。これらのシステムやデータベースを使用する組織がより自動化され、コンピュータ化されるにつれて、インターネットなどのコンピュータネットワークを介してデータを共有する必要性がますます広まった。この必要性のため、データの共有のための標準フォーマットが開発された。
【０００３】
開発されたこうした標準フォーマットの１つに、拡張可能なマーク付け言語（「ＸＭＬ」）がある。ＸＭＬは、親−子関係を有する多数のデータ構造を含む極めて階層的なデータフォーマットである。ＸＭＬデータフォーマットでは、各親の子はさらに子を有し、その子はさらに子を有し、というように以下同様に続く。この標準データフォーマットの出現のために、多くのコンピュータユーザは、上記のデータベースを標準ＸＭＬデータフォーマットに変換した。また、ＸＭＬフォーマットによって、コンピュータユーザは、スキーマを使用して各自のデータを特定のドキュメントに合わせることができる。スキーマは、ＸＭＬドキュメントの構造、内容、およびある程度までセマンティクスを定義し、記述するための機構を提供する。
【０００４】
現代のビジネスランドスケープにおけるパーソナルコンピュータの出現とともに、電子スプレッドシートを使用するものを含めて多くの有用なアプリケーションが現れた。電子スプレッドシートは一般に、列および行を含むセルのマトリックスに含まれるデータに対して作用する。一般に、このデータフォーマットは、単一のテーブルに含まれており、データがＸＭＬによって使用される階層データ構造で維持されないという点で、極めてフラットなデータ構造である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
パーソナルコンピュータの入手しやすさによって、多くのユーザは、その使用、より具体的には電子スプレッドシートアプリケーションプログラムの使用に堪能になった。
【０００６】
電子スプレッドシートは、従来の手段に比べて多くの利点を提供し得るが、これもまたフラットデータ構造を使用する。大量のデータがＸＭＬなど階層型のフォーマットで格納されている状態では、フラットデータ構造の電子スプレッドシートは、この大量のデータにアクセスする手段がなく、したがってスプレッドシートでこうしたデータにアクセスする手段が望ましくなった。
【０００７】
現在、ＸＭＬフォーマットのデータをスプレッドシートに変換できるプログラムはあるが、現在のプログラムは、階層フォーマットのドキュメントに関連付けられたスキーマで定義されるデータの関係を考慮に入れていない。
【０００８】
その結果、現在のプログラムを使用してドキュメントに含まれる階層データをスプレッドシートに表示しても、ドキュメントの作成者が意図する表示内容と大幅に異なる場合がある。
【０００９】
そこで、本発明の目的は、ドキュメントに含まれる階層データをスプレッドシートに挿入したとき、そのスプレッドシートにドキュメントの作成者が意図する内容を含ませることが可能な、スキーマベースの階層データ構造をフラットデータ構造に変換するための方法およびシステムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明によれば、上記問題は、階層データ構造に関連付けられたスキーマに基づいて、階層データ構造を電子スプレッドシートテーブルでの使用に適したフラットデータ構造に変換する方法およびシステムによって解決される。
【００１１】
本発明の第１の態様によれば、階層データ構造をスキーマに基づいてフラットデータ構造に変換する方法およびシステムが提供される。階層データ構造のフォーマットはＸＭＬでもよい。
【００１２】
まず、スキーマに適合する階層データ構造がアプリケーションプログラムにロードされる。データ構造は、親−子関係で結合された要素および属性を含む。スキーマは、階層データ構造における要素と属性の間の階層関係を定義する。
【００１３】
次に、複数のレイアウトルールがスキーマに基づいて階層データ構造に適用される。レイアウトルールは、階層データが結果として得られたフラットデータ構造にどのように挿入されるかを決定する。レイアウトルールは、スキーマで定義される要素の出現要件を識別するスキーマ内のプロパティを識別することによって適用することができる。これらのプロパティは、要素が階層データに出現する順序、および各要素が出現する回数を指定するステップを含む。一旦、プロパティが識別されると、識別されたプロパティに基づいてレイアウトルールが階層データに適用される。また、レイアウトルールは、スキーマで定義されている要素のタイプに基づいて適用される。これらの要素タイプは、属性、祖先要素、および兄弟要素を含むことができる。
【００１４】
最後に、レイアウトルールが階層データに適用されてフラットデータ構造が作成され、次いで、データを行および列に挿入することによってフラットデータ構造がスプレッドシートにレンダリングされる。
【００１５】
本発明の態様としては、コンピュータプロセス、コンピューティングシステム、またはコンピュータプログラム製品やコンピュータ可読媒体などの製品として実装することができる。コンピュータプログラム製品は、コンピュータシステムによって読み取り可能な、またコンピュータプロセスを実行する命令のコンピュータプログラムを符号化するコンピュータ記憶媒体とすることができる。また、コンピュータプログラム製品は、コンピュータシステムによって読み取り可能な、またコンピュータプロセスを実行する命令のコンピュータプログラムを符号化する搬送波上の伝搬信号でもよい。
【００１６】
本発明を特徴付けるこれらおよび他の様々な特徴および利点は、以下の詳細な説明および関連する図面から明らかになる。
【発明の効果】
【００１７】
本発明によれば、アプリケーションプログラムにおいて、スキーマに適合する階層データ構造がロードされた後、複数のレイアウトルールがスキーマに基づいてそのロードされた階層データ構造に適用され、そのレイアウトルールが階層データに適用されてフラットデータ構造が作成され、データをフラットデータ構造の行および列に挿入することによって、フラットデータ構造がスプレッドシートにレンダリングされるようにしたので、階層データ構造に関連付けられたスキーマに基づいて、階層データ構造を電子スプレッドシートテーブルでの使用に適したフラットデータ構造に変換することが可能となり、これにより、ドキュメントに含まれる階層データをスプレッドシートに挿入したとき、そのスプレッドシートにドキュメントの作成者が意図する内容を含ませることができる。
【発明を実施するための最良の形態】
【００１８】
本発明は、データに関連付けられたスキーマに基づいて入力ＸＭＬデータをフラットにする方法およびシステムを対象とする。
【００１９】
本発明の一実施形態として、ワシントン州レドモンドのＭｉｃｒｏｓｏｆｔ社が販売するアプリケーションプログラムの「ＯＦＦＩＣＥ」スイートに組み込まれる。簡単に説明すると、本発明は、階層データ構造にフォーマットされたデータの受信を提供する。こうしたフォーマットの例にはＸＭＬがあるが、他の多くのデータベース構造が極めて階層的であることを当分野の技術者であれば理解できる。
【００２０】
以下の詳細な説明では、本明細書の一部を成し、特定の実施形態または例を例示によって示す添付の図面を参照する。次に図面を参照して本発明の態様および動作環境の例を説明する。図中、同様の数字は複数の図面を通じて同様の要素を表す。
【００２１】
図１は、本発明の一実施形態で実施する動作環境の例を示す。
本発明は、この動作環境の中で、スキーマに適合するＸＭＬデータ構造を、スキーマに基づいてフラットデータ構造に容易にフラット化するよう動作することができる。
【００２２】
しかし、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどどんなタイプのコンピュータ動作環境でも実施できることを当分野の技術者であれば理解されたい。本発明は、タスクがリモート処理装置で実行される分散コンピューティング環境においても実施することができる。
【００２３】
本発明の一実施形態の例として、入力ＸＭＬスキーマデータ３８および入力ＸＭＬデータ３７からのデータを受信し、そのデータをスキーマデータに基づいてフラットデータ構造３９に変換するＸＭＬフラット化プログラムモジュール（ｆｌａｔｔｅｎｉｎｇ  ｐｒｏｇｒａｍ  ｍｏｄｕｌｅ）３６の一般的な文脈で説明する。
【００２４】
フラットデータ構造３９は、アプリケーションプログラムのスプレッドシートによって挿入することができる。本発明は他の様々なプログラムモジュール（図示せず）の組合せで実施できることを、当分野の技術者であれば理解されよう。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、構成要素、データ構造などを含む。
【００２５】
さらに、本発明は、通信ネットワークでリンクされている、図示したもの以外のコンピュータシステム構成で実施できることを、当分野の技術者であれば理解できる。分散コンピューティング環境では、プログラムモジュールを、ローカルおよびリモートの記憶媒体に置くことができる。
【００２６】
本発明を実施する動作環境１０の例は、処理ユニット２１、システムメモリ２２、およびシステムメモリを処理ユニット２１に結合するシステムバス２３を含む従来のパーソナルコンピュータシステム２０を含む。システムメモリ２２は、読取専用メモリ（ＲＯＭ）２４およびランダムアクセスメモリ（ＲＡＭ）２５を含む。基本入出力システム２６（ＢＩＯＳ）は、例えば起動中など、パーソナルコンピュータ２０内の要素間での情報の転送を助ける基本ルーチンを含み、ＲＯＭ２４に格納されている。パーソナルコンピュータ２０は、ハードディスクドライブ２７、リムーバブルディスク２９から読み取り、あるいはそこに書き込む磁気ディスクドライブ２８、およびＣＤ−ＲＯＭディスク３１を読み取る、または他の光媒体から読み取り、あるいはそこに書き込む光ディスクドライブ３０を示している。ハードディスクドライブ２７、磁気ディスクドライブ２８、および光ディスクドライブ３０は、それぞれハードディスクドライブインターフェイス３２、磁気ディスクドライブインターフェイス３３、および光ドライブインターフェイス３４によってシステムバス２３に接続される。ドライブおよびその関連のコンピュータ可読媒体は、パーソナルコンピュータ２０の不揮発性ストレージを提供する。
【００２７】
上記のコンピュータ可読媒体の説明は、ハードディスク、リムーバブル磁気ディスク、およびＣＤ−ＲＯＭディスクに言及しているが、コンピュータによって読み取ることができる他のタイプの媒体、例えば磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジなども動作環境の例で使用できることを当分野の技術者であれば理解できる。
【００２８】
オペレーティングシステム３５、ＸＭＬフラット化プログラムモジュール３６、入力ＸＭＬデータ３７、入力ＸＭＬスキーマデータ３８、フラットデータ構造３９、および他のプログラムモジュール（図示せず）を含めて、いくつかのプログラムモジュールをドライブおよびＲＡＭ２５に格納することができる。
【００２９】
ユーザは、コマンドおよび情報を、キーボード４０、およびマウス４２などのポインティングデバイスを介してパーソナルコンピュータシステム２０に入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどがある。これらおよび他の入力装置は、システムバスに結合されているシリアルポートインターフェイス４６を介して処理ユニット２１に接続されることが多いが、ゲームポートやユニバーサルシリアルバス（ＵＳＢ）など他のインターフェイスによって接続してもよい。モニタ４７または他のタイプの表示装置も、ビデオアダプタ４８などのインターフェイスを介してシステムバス２３に接続される。パーソナルコンピュータは一般に、モニタに加えて、スピーカーやプリンタなど他の周辺出力装置（図示せず）を含む。
【００３０】
パーソナルコンピュータシステム２０は、リモートコンピュータ４９など１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク式環境で動作することができる。リモートコンピュータ４９は、サーバー、ルーター、ピアデバイス、または他の一般のネットワークノードでよく、一般にパーソナルコンピュータ２０に関連して述べた多くまたはすべての要素を含むが、図１にはメモリ記憶装置５０のみを示している。
図１に示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）５１および広域エリアネットワーク（ＷＡＮ）５２を含む。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
【００３１】
ＬＡＮネットワーキング環境で使用する場合、パーソナルコンピュータシステム２０は、ネットワークインターフェイス５３を介してＬＡＮ５１に接続される。ＷＡＮネットワーキング環境で使用する場合、パーソナルコンピュータ２０は一般に、モデム５４、またはインターネットなど、ＷＡＮ５２を介して通信を確立する他の手段を含む。モデム５４は、内蔵のものでも外付けのものでもよく、システムポートインターフェイス４６を介してシステムバス２３に接続される。ネットワーク式環境では、パーソナルコンピュータ２０に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。また本発明を、パーソナルコンピュータシステム以外のホストまたはサーバーコンピュータシステムで同様に実施でき、また、ＣＤ−ＲＯＭ以外の手段、例えばネットワークインターフェイス５３によってホストコンピュータシステムに同様に送信できることをさらに理解できる。
【００３２】
本発明は、動的リンクライブラリ（ＤＬＬ）内で実施することができる。こうしたＤＬＬの一例には、ワシントン州レドモンドのＭｉｃｒｏｓｏｆｔ社が販売するアプリケーションプログラムの「ＯＦＦＩＣＥ」スイートによって提供されるＭＳＯ．ＤＬＬがある。ＤＬＬは、ＤＬＬへの静的または動的リンクを作成することによってアプリケーションプログラムからアクセスできる実行可能な機能のライブラリを含む。静的リンクは、プログラム実行中一定のままであり、動的リンクは、必要に応じてプログラムによって作成される。
【００３３】
図２は、上述したパーソナルコンピュータシステム２０において入力ＸＭＬスキーマデータ３８に基づいて入力ＸＭＬデータ３７をフラットデータ構造３９に変換するＸＭＬフラット化プログラムモジュール３６によって実行される論理演算の例を示す。本発明の様々な実施形態の論理演算は、（１）コンピューティングシステム上で動作するコンピュータで実施される一連の動作またはプログラムモジュールとして、かつ／または（２）コンピューティングシステム内の相互接続されたマシン論理回路または回路モジュールとして実施される。この実施は、本発明を実施するコンピューティングシステムの性能要件に依存する選択の問題である。
【００３４】
したがって、本明細書に記載した本発明の実施形態を構成する論理演算は、演算、構造装置、動作、またはモジュールと様々に呼ばれる。これらの演算、構造装置、動作、およびモジュールは、本明細書に添付した特許請求の範囲内に示す本発明の意図および範囲から逸脱することなく、ソフトウェア、ファームウェア、特殊デジタルロジック、およびそれらの任意の組合せで実施できることを当分野の技術者であれば理解できる。
【００３５】
論理演算は、ロード演算２１０で開始する。ここで、スプレッドシートアプリケーションプログラムなどのアプリケーションプログラムで使用するために、階層データを含む入力ＸＭＬデータ３７がＲＡＭ３５などのメモリにロードされる。入力ＸＭＬデータ３７は、データに出現するＸＭＬ要素と属性の間の親−子関係を定義するデータに埋め込まれたスキーマを含むことができる。任意選択で、入力ＸＭＬデータ３７は、ネットワークインターフェイス５３を介してパーソナルコンピュータシステム２０からアクセス可能なパーソナルコンピュータシステム２０またはリモートコンピュータ（リモートコンピュータ４９など）に格納できる入力ＸＭＬスキーマデータ３８へのポインタを含んでいてもよい。入力ＸＭＬスキーマデータ３８のスキーマは、スプレッドシートの行および列が定義された階層関係に対応するように、アプリケーションプログラムにおいてフラットデータ構造３９に「マップ」されることは理解できる。
【００３６】
スキーマは、ユーザによって（すなわちスキーマ要素をスプレッドシートにドラッグアンドドロップすることによって）マップすることができる。あるいはスプレッドシートアプリケーションプログラムによって自動的にマッピングを行うことができる。「マップされた」スキーマは、いったんアプリケーションプログラムにロードされると、入力ＸＭＬデータ３７のデータに関連付けられる。
【００３７】
次に、演算フローは、続いてアプリケーション演算２１５に進む。
ここで、ＸＭＬフラット化プログラムモジュール３６は、スプレッドシートにマップされたスキーマ内の構成体に基づいてロードされたＸＭＬデータがどのように挿入されるべきかを決定する。ＸＭＬフラット化プログラムモジュール３６は、一連の「レイアウトルール」をデータに適用することによってその決定を行う。
【００３８】
レイアウトルールは、既知のスキーマの構成体に基づいており、データがどのように挿入または「フラット化」されるべきかを管理する。ＸＭＬフラット化プログラムモジュール３６は、入力ＸＭＬデータ３７全体またはデータのフラグメントをフラットにすることができることも理解できる。
【００３９】
ＸＭＬフラット化プログラムモジュール３６は、フラグメントのすべてのノードの最も近い共通の親を考慮して、フラグメントの先頭からフラグメントをフラットにする。レイアウトルールを適用した後、ＸＭＬフラット化プログラムモジュールは、フラットデータ構造を作成する。図３は、アプリケーション演算２１５を含むステップを示す。これについては以下でより詳しく説明する。
【００４０】
最後に、演算フローは、続いてレンダリング演算２２０に進み、ここでＸＭＬフラット化プログラムモジュール３６は、「フラット化された」ＸＭＬデータをスプレッドシートにレンダリングする。図４〜図１１は、レイアウトルールに基づいてデータがスプレッドシートにどのようにレンダリングされるかを示す画面ショットの例を示している。これについては以下でより詳しく説明する。
【００４１】
図３は、図２のアプリケーション演算２１５のステップを示す演算フローを示す。
ここで、レイアウトルールが、スプレッドシートにマップされたスキーマに基づいて、ＸＭＬフラット化プログラムモジュール３６によってロードされたＸＭＬデータに適用される。演算フローは、識別演算３１０で開始する。ここでＸＭＬフラット化プログラムモジュール３６は、スキーマで定義されているプロパティおよび要素タイプを識別する。プロパティおよび要素タイプ、およびその関連のレイアウトルールの概要を以下に示す。
【００４２】
＜プロパティ＞
Ａｌｌ：このプロパティは、要素が任意の順序で、しかし一度だけ出現することを指定する。スキーマがＡｌｌプロパティを含んでいる場合、ＸＭＬフラット化プログラムモジュール３６は、このプロパティ内の要素をスプレッドシートの同じ行に表示する。
【００４３】
Ｓｅｑｕｅｎｃｅ：このプロパティは、要素が必ず指定された順序で出現し、ゼロ回から複数回出現してよいことを指定する。シーケンス自体も任意の回数出現してよい。スキーマがＳｅｑｕｅｎｃｅプロパティを含んでいる場合、ＸＭＬフラット化プログラムモジュール３６は、スキーマが要素を複数回出現するものと定義している場合を除いて、このプロパティ内の要素をスプレッドシートの同じ行に表示する。
【００４４】
Ｃｈｏｉｃｅ：このプロパティは、要素は、互いに関係を共有せず、必ず選択される（１回の選択ごとに１回のみの出現）ことを指定する。選択された要素またはグループは、ゼロ回から複数回出現してよい。スキーマがＣｈｏｉｃｅプロパティを含んでいる場合、ＸＭＬフラット化プログラムモジュール３６は、このコンポジタ（ｃｏｍｐｏｓｉｔｏｒ）内の要素をスプレッドシートの別の行に表示する。
【００４５】
＜要素タイプ＞
属性：属性は、スキーマの子要素に相当する。スキーマが属性を含んでいる場合、ＸＭＬフラット化モジュール３６は、スプレッドシートのその親要素と同じ行にその属性を表示する。また、ＸＭＬフラット化プログラムモジュール３６は、スキーマで定義されている他の子要素で属性を「フィルダウン（ｆｉｌｌ  ｄｏｗｎ）」する。
【００４６】
祖先：子孫（子など）を有する要素が祖先要素である。ＸＭＬフラット化プログラムモジュール３６は、祖先要素をその子孫で「フィルダウン」する。
【００４７】
兄弟：共通の親を有する２つ以上の要素が兄弟要素である。ＸＭＬフラット化プログラムモジュール３６は、１つまたは複数の兄弟要素が複数回出現しない限り、兄弟要素を他の兄弟要素で「フィルダウン」する。
【００４８】
この説明および添付の特許請求の範囲で使用する場合、「フィルダウン」という用語は、テーブル内でデータ値を繰り返す動作として定義される。したがって、データは、ＸＭＬデータでは一度しか出現しないとしても、テーブルでは複数回表示される。Ａｌｌ、Ｓｅｑｕｅｎｃｅ、およびＣｈｏｉｃｅのプロパティはコンポジタとしても知られていることを理解されたい。当分野の技術者にはわかるように、コンポジタは、要素のすぐ下の子孫の出現要件または予想を識別するＸＭＬスキーマ構成体である。同じコンポジタ内のメンバは、兄弟とみなされる。ＸＭＬフラット化プログラムモジュール３６は、ステップ３１５で、スキーマを再検討してＡｌｌコンポジタを含んでいるかどうかを判定する。スキーマがＡｌｌコンポジタを含んでいる場合、ＸＭＬフラット化プログラムモジュール３６は、ステップ３２０で、このコンポジタ内の要素を結果として得られたフラットデータ構造の同じ行に挿入する。スキーマがＡｌｌコンポジタを含んでいない場合、ＸＭＬフラット化プログラムモジュール３６は、ステップ３２５で、スキーマがＳｅｑｕｅｎｃｅコンポジタを含んでいるかどうかを判定する。
【００４９】
Ａｌｌコンポジタ内の要素を定義している入力ＸＭＬスキーマデータ３８および適合する入力ＸＭＬデータ３７の例を以下に示す。
【００５０】
スキーマデータ
【００５１】
【表１】
2004265405.tif 000003
【００５２】
データ
【００５３】
【表２】
2004265405.tif 000004
【００５４】
上記の例で示した入力ＸＭＬスキーマデータ３８は、ＸＭＬデータ構造の基本要素「Ａ」を定義している。要素「Ｂ」、「Ｃ」、「Ｄ」、および「Ｅ」は、要素「Ａ」に必ず含まれる要素であり、Ａｌｌコンポジタ内で定義されている。このスキーマについての入力ＸＭＬデータ３７の「ｂ１」、「ｃ１」、「ｄ１」、および「ｅ１」は、要素「Ｂ」、「Ｃ」、「Ｄ」、および「Ｅ」内に含まれるデータを表す。上記のデータに続く「＜／Ｂ＞、＜／Ｃ＞、＜／Ｄ＞、および＜／Ｅ＞は、各要素の末尾を示す。同様に、入力ＸＭＬデータ３７は、「Ｃ」、「Ｂ」、「Ｅ」、および「Ｄ」要素がデータ「ｃ２」、「ｂ２」、「ｅ２」、および「ｄ２」をそれぞれ含み、かつ要素「Ａ」に含まれていることを示している。
【００５５】
図４は、結果として得られたフラットデータ構造３９の例を上記の例の入力ＸＭＬデータ３７のデータについて示す。
【００５６】
図４の４０５行に示すように、列見出しは、入力ＸＭＬスキーマデータ３８のＡｌｌコンポジタ内で定義されている要素「Ｂ」、「Ｃ」、「Ｄ」、および「Ｅ」である。４１０行では、「ｂ１」、「ｃ１」、「ｄ１」、および「ｅ１」のデータが同じ行に表示されている。
【００５７】
同様に４１５行では、「ｂ２」、「ｃ２」、「ｄ２」、「ｅ２」のデータも同じ行に表示されている。上で簡単に述べたように、Ａｌｌコンポジタは、要素が任意の順序で表示されることを指定する。したがって、要素が表示された順序は、図４に示したものと異なり得ることを理解できる。
【００５８】
ここで、図３に戻ると、ＸＭＬフラット化プログラムモジュール３６は、ステップ３２５で、スキーマを再検討してＳｅｑｕｅｎｃｅコンポジタを含んでいるかどうかを判定する。スキーマがＳｅｑｕｅｎｃｅコンポジタを含んでいる場合、ＸＭＬフラット化プログラムモジュール３６は、スキーマが要素を複数回出現するものと定義していない限り、上記でＡｌｌコンポジタに関して図４で示したように、ステップ３３０でこのコンポジタ内の要素を同じ行に挿入する。スキーマがＳｅｑｕｅｎｃｅコンポジタを含んでいない場合、ＸＭＬフラット化プログラムモジュール３６は、ステップ３３５で、スキーマがＣｈｏｉｃｅコンポジタを含んでいるかどうかを判定する。
【００５９】
Ｓｅｑｕｅｎｃｅコンポジタ内の要素を定義している入力ＸＭＬスキーマデータ３８および適合する入力ＸＭＬデータ３７の例を以下に示す。
【００６０】
スキーマデータ
【００６１】
【表３】
2004265405.tif 000005
【００６２】
データ
【００６３】
【表４−１】
2004265405.tif 000006
【００６４】
【表４−２】
2004265405.tif 000007
【００６５】
上記の例で示した入力ＸＭＬスキーマデータ３８は、要素「Ｂ」、「Ｃ」、「Ｄ」、および「Ｅ」をＳｅｑｕｅｎｎｃｅコンポジタ内の無限回の要素（すなわちｍａｘＯｃｃｕｒｓ＝「ｕｎｂｏｕｎｄｅｄ」）として定義している。これは、これらの要素内に含まれるデータが必ず指定された順序で出現し、かつ各要素は複数回出現してもよいことを示している。
【００６６】
図５は、結果として得られたフラットデータ構造３９の例を上記の例の無限回のシーケンスの場合の入力ＸＭＬデータ３７のデータについて示す。
【００６７】
図５の５０５行に示すように、列見出しは、入力ＸＭＬスキーマデータ３８のＳｅｑｕｅｎｃｅコンポジタ内で定義されている要素「Ｂ」、「Ｃ」、「Ｄ」、および「Ｅ」である。５１０〜５２５行では、「ｂ１」、「ｃ１」、「ｄ１」、「ｅ１」のデータが別の行に挿入されている。
【００６８】
同様に５３０〜５４５行では、「ｂ２」、「ｃ２」、「ｄ２」、「ｅ２」のデータも別の行に挿入されている。無限回のシーケンスでは、シーケンスの子は、任意の回数出現することができる。したがって、兄弟間に明白な関係はない。例えば、図５に示す例の入力ＸＭＬデータファイルでは、データセット「ｂ１」、「ｃ１」、「ｄ１」、「ｅ１」、および「ｂ２」、「ｃ２」、「ｄ２」、「ｅ２」は、共通の親を持つため、互いに関係がないと判断することは不可能である。
【００６９】
ここで、図３に戻ると、ＸＭＬフラット化プログラムモジュール３６は、ステップ３３５で、スキーマを再検討してＣｈｏｉｃｅコンポジタを含んでいるかどうかを判定する。スキーマがＣｈｏｉｃｅコンポジタを含んでいる場合、ＸＭＬフラット化プログラムモジュール３６は、ステップ３４０でこのコンポジタ内の要素を別の行に挿入する。スキーマがＣｈｏｉｃｅコンポジタを含んでいない場合、ＸＭＬフラット化プログラムモジュール３６は、ステップ３５５で、スキーマがＡｔｔｒｉｂｕｔｅプロパティを含んでいるかどうかを判定する。
【００７０】
Ｃｈｏｉｃｅコンポジタ内の要素を定義している入力ＸＭＬスキーマデータ３８および適合する入力ＸＭＬデータ３７の例を以下に示す。
【００７１】
スキーマデータ
【００７２】
【表５】
2004265405.tif 000008
【００７３】
データ
【００７４】
【表６】
2004265405.tif 000009
【００７５】
上記の例で示した入力ＸＭＬスキーマデータ３８は、要素「Ｂ」、「Ｃ」、「Ｄ」、および「Ｅ」を、Ｃｈｏｉｃｅコンポジタ＜ｘｓｄ：ｃｈｏｉｃｅ＞内の選択要素として定義している。これは、これらの要素内に含まれるデータは互いに関係を共有しないことを示している。その結果、ＸＭＬフラット化プログラムモジュール３６は、各要素をスプレッドシートの別の行に挿入する。
【００７６】
図６は、結果として得られたフラットデータ構造３９の例を上記の例の入力ＸＭＬデータ３７のデータについて示す。
【００７７】
図６の６０５行に示すように、列見出しは、入力ＸＭＬスキーマデータ３８のＣｈｏｉｃｅコンポジタ内で定義されている要素「Ｂ」、「Ｃ」、「Ｄ」、および「Ｅ」である。６１０〜６２５行では、「ｅ１」、「ｃ２」、「ｄ１」、および「ｂ１」のデータが別の行に挿入されている。
【００７８】
入力ＸＭＬスキーマデータ３８は、他のコンポジタ内でネストされたコンポジタを含み得ることを理解されたい。例えば、ＸＭＬスキーマデータは、Ｓｅｑｕｅｎｃｅコンポジタ内で定義されている要素内でネストされたＣｈｏｉｃｅコンポジタ内の要素を定義することができる。ネストされた要素をフラットにするとき、ＸＭＬフラット化プログラムモジュール３６は、各コンポジタのレイアウトルールに従って各要素のデータを挿入する。Ｓｅｑｕｅｎｃｅコンポジタ要素内でネストされたＣｈｏｉｃｅコンポジタ要素を定義している入力ＸＭＬスキーマデータ３８および適合する入力ＸＭＬデータ３７の例を以下に示す。
【００７９】
スキーマデータ
【００８０】
【表７−１】
2004265405.tif 000010
【００８１】
【表７−２】
2004265405.tif 000011
【００８２】
データ
【００８３】
【表８】
2004265405.tif 000012
【００８４】
上記の例で示した入力ＸＭＬスキーマデータ３８は、要素「Ｂ」および「Ｅ」をＳｅｑｕｅｎｃｅ要素と定義している。これは、これらの要素内に含まれるデータは指定された順序で出現する必要があることを示している。また、入力ＸＭＬスキーマデータ３８は、要素「Ｃ」および「Ｄ」をＣｈｏｉｃｅ要素と定義している。これは、これらの要素内に含まれるデータが互いに関係を共有しないことを示している。したがって、ＸＭＬスキーマデータ３８によれば、要素「Ｂ」および「Ｅ」は、「Ｃ」および「Ｄ」と並び得る。ＸＭＬデータ３７は、要素「Ｂ」、「Ｃ」、「Ｅ」はデータ「ｂ１」、「ｃ１」、「ｅ１」をそれぞれ含むことを示している。また、ＸＭＬデータ３７は、要素「Ｂ」、「Ｄ」、「Ｅ」はデータ「ｂ２」、「ｄ１」、「ｅ２」をそれぞれ含むことも示している。上述したように、ＸＭＬフラット化プログラムモジュール３６は、（ｍａｘＯｃｃｕｒｅｓ＞１でない限り）Ｓｅｑｕｅｎｃｅ要素内のデータをスプレッドシートの同じ行に挿入し、Ｃｈｏｉｃｅ要素内のデータをスプレッドシートの別の行に挿入する。
【００８５】
図７は、結果として得られたフラットデータ構造３９の例を上記の例の適合する入力ＸＭＬデータ３７のデータについて示す。
【００８６】
図７の７０５行に示すように、列見出しは、入力ＸＭＬスキーマデータ３８のＳｅｑｕｅｎｃｅコンポジタおよびＣｈｏｉｃｅコンポジタ内で定義されている要素「Ｂ」、「Ｃ」、「Ｄ」、および「Ｅ」である。７１０行では、「ｂ１」および「ｅ１」Ｓｅｑｕｅｎｃｅデータが「ｃ１」Ｃｈｏｉｃｅデータと同じ行に挿入され、７１５行では、「ｂ２」および「ｅ２」Ｓｅｑｕｅｎｃｅデータも「ｄ１」Ｃｈｏｉｃｅデータと同じ行に挿入される。
【００８７】
従って、図７で示すように、ＳｅｑｕｅｎｃｅコンポジタおよびＣｈｏｉｃｅコンポジタのレイアウトルールが満たされる。Ｃｈｏｉｃｅデータ「ｃ１」および「ｄ１」は異なる行に表示されるが、Ｓｅｑｕｅｎｃｅデータ「ｂ１」、「ｅ１」、「ｂ２」、および「ｅ２」は、Ｃｈｏｉｃｅデータと並ぶ。
【００８８】
ここで、図３に戻ると、ＸＭＬフラット化プログラムモジュール３６は、ステップ３４５で、スキーマを再検討して入力ＸＭＬデータ３７の属性を定義するか否かについて判定する。スキーマが属性を定義したら、ＸＭＬフラット化プログラムモジュール３６は、ステップ３５０で、親要素の内容と同じ行に属性を挿入する。
【００８９】
また、ＸＭＬフラット化プログラムモジュール３６は、ステップ３６０で、スキーマで定義されている各親要素の子孫（例えば子要素）で属性を「フィルダウン」する。スキーマが属性を定義していない場合、ＸＭＬフラット化プログラムモジュール３６は、ステップ３５５で、スキーマが祖先要素を定義しているか否かを判定する。
【００９０】
以下に、属性を定義している入力ＸＭＬスキーマデータ３８および適合する入力ＸＭＬデータ３７の１例を示す。
【００９１】
スキーマデータ
【００９２】
【表９】
2004265405.tif 000013
【００９３】
データ
【００９４】
【表１０】
2004265405.tif 000014
【００９５】
上記の例で示した入力ＸＭＬスキーマデータ３８は、要素「Ａ」および属性「ＡＴＴＡ」を定義しており、「ＡＴＴＡ」はさらに整数値を有するものと定義されている（入力ＸＭＬデータで「１」、「２」、「３」と指定されている。
【００９６】
図８は、上記の例の入力ＸＭＬデータ３７のデータについて、結果として得られたフラットデータ構造３９の例を示す。
【００９７】
図８の８０５行に示すように、列見出しは、入力ＸＭＬスキーマデータ３８で定義されている属性「ＡＴＴＡ」および親要素「Ａ」である。８１０〜８２０行では、整数の属性値「１」、「２」、「３」がそれぞれ、親要素「Ａ」のデータ「Ａ１」、「Ａ２」、「Ａ３」と同じ行に挿入されている。
【００９８】
以下に、属性を定義している入力ＸＭＬスキーマデータ３８および適合する入力ＸＭＬデータ３７の別の例を示す。
【００９９】
スキーマデータ
【０１００】
【表１１−１】
2004265405.tif 000015
【０１０１】
【表１１−２】
2004265405.tif 000016
【０１０２】
データ
【０１０３】
【表１２】
2004265405.tif 000017
【０１０４】
上記の例で示した入力ＸＭＬスキーマデータ３８は、親要素「Ａ」についての属性「ＡＴＴＡ」（整数値「２１３」を有する）、および要素「Ｂ」内の子要素「Ｃ」および「Ｄ」を定義している。
【０１０５】
図９は、結果として得られたフラットデータ構造３９の例を上記の例の入力ＸＭＬデータ３７のデータについて示す。
【０１０６】
図９の９０５行に示すように、列見出しは、属性「ＡＴＴＡ」、および繰返し子要素「Ｃ」および「Ｄ」である。繰返し子要素「Ｃ」および「Ｄ」のデータは、９１０行および９１５行に挿入される。属性「ＡＴＴＡ」のデータ値「２１３」も９１０行および９１５行に、子要素「Ｃ」および「Ｄ」のデータと並んで挿入される。従って、繰り返さない属性「ＡＴＴＡ」のデータは、繰返し子要素「Ｃ」および「Ｄ」のデータでフィルダウンされる。
【０１０７】
ここで、図３に戻って、ＸＭＬフラット化プログラムモジュール３６は、ステップ３５５で、スキーマを再検討して入力ＸＭＬデータ３７の祖先要素を定義しているか否かを判定する。スキーマが祖先要素を定義している場合、ＸＭＬフラット化プログラムモジュール３６は、ステップ３６５で、祖先要素を子孫で「フィルダウン」する。スキーマが祖先要素を定義していない場合、ＸＭＬフラット化プログラムモジュール３６は、ステップ３７０で、スキーマが兄弟要素を定義しているか否かを判定する。
【０１０８】
以下に、祖先要素を定義している入力ＸＭＬスキーマデータ３８および適合する入力ＸＭＬデータ３７の例を示す。
【０１０９】
スキーマデータ
【０１１０】
【表１３】
2004265405.tif 000018
【０１１１】
データ
【０１１２】
【表１４】
2004265405.tif 000019
【０１１３】
上記の例で示した入力ＸＭＬスキーマデータ３８は、要素「Ｃ」が要素「Ｂ」の祖先であることを指定している。入力ＸＭＬデータ３７で、要素「Ｂ」はデータ「Ｂ１」および「Ｂ２」を含み、要素「Ｃ」は内容「Ｃ１」を含んでいる。
【０１１４】
図１０は、結果として得られたフラットデータ構造３９の例を上記の例の入力ＸＭＬデータ３７のデータについて示す。
【０１１５】
図１０の１００５行に示すように、列見出しは、要素「Ｂ」および「Ｃ」である。繰返し要素「Ｂ」のデータは、１０１０行および１０１５行に挿入される。祖先要素「Ｃ」のデータは、要素「Ｂ」のデータとともに「フィルダウン」される。
【０１１６】
ここで、図３に戻ると、ＸＭＬフラット化プログラムモジュール３６は、ステップ３７０で、スキーマを再検討して入力ＸＭＬデータ３７の兄弟要素を定義しているか否かを判定する。
【０１１７】
スキーマが兄弟要素を定義している場合、ＸＭＬフラット化プログラムモジュール３６は、１つまたは複数の兄弟要素が複数回出現しない限り、兄弟要素を他の兄弟要素で「フィルダウン」する。スキーマが兄弟要素を定義していない場合、演算フローは、続いてステップ３８０に進む。
【０１１８】
ここで、ＸＭＬフラット化プログラムモジュール３６は、スキーマに戻って、それ以上プロパティがあるか否かを判定する。スキーマで定義されたプロパティがさらにある場合、演算フローはステップ３１５に戻り、ここでＸＭＬフラット化プログラムモジュール３６は、次のプロパティの識別を決定する。スキーマで定義されたプロパティがそれ以上ない場合、演算フローは、図２のレンダリング演算２２０に戻る。
【０１１９】
以下に、兄弟要素を定義している入力ＸＭＬスキーマデータ３８および適合する入力ＸＭＬデータ３７の例を示す。
【０１２０】
スキーマデータ
【０１２１】
【表１５】
2004265405.tif 000020
【０１２２】
データ
【０１２３】
【表１６−１】
2004265405.tif 000021
【０１２４】
【表１６−２】
2004265405.tif 000022
【０１２５】
上記の例で示した入力ＸＭＬスキーマデータ３８は、要素「Ａ」および「Ｂ」が兄弟であることを指定している。入力ＸＭＬデータ３７で、要素「Ａ」はデータ「Ａ１」および「Ａ２」を含み、要素「Ｂ」は内容「Ｂ１」を含んでいる。
【０１２６】
図１１は、上記の例の入力ＸＭＬデータ３７のデータについて、結果として得られたフラットデータ構造３９を示す。
【０１２７】
図１１の１１０５行に示すように、列見出しは、要素「Ａ」および「Ｂ」である。繰返し要素「Ａ」のデータは１１１０行および１１１５行に挿入される。兄弟要素「Ｂ」のデータは、要素「Ａ」のデータとともに「フィルダウン」される。
【０１２８】
スキーマで、２つ以上の兄弟要素、祖先要素、または祖先兄弟要素が複数回出現するものと定義されているとき、デカルト積が作成されることを理解されたい。デカルト積とは、要素が定義された意味を持たないいくつかの組合せにまとめられた結果である。例えば、兄弟要素「Ａ」および「Ｂ」がスキーマで無限回（すなわち複数回出現する）と定義されている場合、任意の数の要素「Ａ」が任意の数の要素「Ｂ」とともに挿入される必要がある。
【０１２９】
デカルト積は、一般に非常に大きいデータセットをもたらすため、好ましくないことが多い。例えば、それぞれ「ｍ」行および「ｎ」行の２つの列のデータを考慮すると、「ｍ」行に「ｎ」行のデータを掛けるとデカルト積が得られる。これによって、行の数および列の数が増えるにつれて非常に大きいデータセットがもたらされることになる。
【０１３０】
さらに、非常に大きいデータセットをもたらすデカルト積でデータの関係を決定することは難しい。その理由は、特にデータセットが元々まったく関連のないものかもしれないからである。その結果、ＸＭＬフラット化プログラムモジュール３６は、これらの要素を「フィルダウン」しない。
【０１３１】
上記を考慮して、本発明は、スキーマに基づいて階層データ構造をフラットデータ構造に変換する方法およびシステムを提供することを理解されよう。特にその実施形態の例に関連して本発明を示し説明してきたが、本発明の意図および範囲から逸脱することなく形態および詳細の他の様々な変更を加えることができることを、当分野の技術者であれば理解できる。
【図面の簡単な説明】
【０１３２】
【図１】本発明の動作環境の例を示すコンピュータシステムのブロック図である。
【図２】本発明の一実施形態による、入力ＸＭＬスキーマデータに基づいてＸＭＬデータをフラットデータ構造に変換する演算フローを示す図である。
【図３】本発明の様々な実装形態による、レイアウトルールをＸＭＬデータに適用する演算フローを示す図である。
【図４】本発明の実施形態の例による、変換されたＸＭＬデータによって得られるフラットデータ構造を示す画面ショットである。
【図５】本発明の実施形態の例による、変換されたＸＭＬデータによって得られるフラットデータ構造を示す画面ショットである。
【図６】本発明の実施形態の例による、変換されたＸＭＬデータによって得られるフラットデータ構造を示す画面ショットである。
【図７】本発明の実施形態の例による、変換されたＸＭＬデータによって得られるフラットデータ構造を示す画面ショットである。
【図８】本発明の実施形態の例による、変換されたＸＭＬデータによって得られるフラットデータ構造を示す画面ショットである。
【図９】本発明の実施形態の例による、変換されたＸＭＬデータによって得られるフラットデータ構造を示す画面ショットである。
【図１０】本発明の実施形態の例による、変換されたＸＭＬデータによって得られるフラットデータ構造を示す画面ショットである。
【図１１】本発明の実施形態の例による、変換されたＸＭＬデータによって得られるフラットデータ構造を示す画面ショットである。
【符号の説明】
【０１３３】
１０  動作環境
２０  パーソナルコンピュータシステム
２１  処理ユニット
２２  システムメモリ
２３  システムバス
２４  読取専用メモリ（ＲＯＭ）
２５  ランダムアクセスメモリ（ＲＡＭ）
２６  基本入出力システム（ＢＩＯＳ）
２７  ハードディスクドライブ
２８  磁気ディスクドライブ
２９  リムーバブルディスク
３０  光ディスクドライブ
３１  ＣＤ−ＲＯＭディスク
３２  ハードディスクドライブインターフェイス
３３  磁気ディスクドライブインターフェイス
３４  光ドライブインターフェイス
３５  オペレーティングシステム
３６  ＸＭＬフラット化プログラムモジュール
３７  入力ＸＭＬデータ
３８  入力ＸＭＬスキーマデータ
３９  フラットデータ構造
４０  キーボード
４２  マウス
４６  シリアルポートインターフェイス
４７  モニタ
４８  ビデオアダプタ
４９  リモートコンピュータ
５０  メモリ記憶装置
５１  ローカルエリアネットワーク（ＬＡＮ）
５２  広域エリアネットワーク（ＷＡＮ）
５３  ネットワークインターフェイス
５４  モデム
２１０  ロード演算
２１５  アプリケーション演算
２２０  レンダリング演算
３１０  識別演算
【図１】
2004265405.tif 000023
【図２】
2004265405.tif 000024
【図３】
2004265405.tif 000025
【図４】
2004265405.tif 000026
【図５】
2004265405.tif 000027
【図６】
2004265405.tif 000028
【図７】
2004265405.tif 000029
【図８】
2004265405.tif 000030
【図９】
2004265405.tif 000031
【図１０】
2004265405.tif 000032
【図１１】
2004265405.tif 000033
【外国語明細書】
2004265405.tif 000034
2004265405.tif 000035
2004265405.tif 000036
2004265405.tif 000037
2004265405.tif 000038
2004265405.tif 000039
2004265405.tif 000040
2004265405.tif 000041
2004265405.tif 000042
2004265405.tif 000043
2004265405.tif 000044
2004265405.tif 000045
2004265405.tif 000046
2004265405.tif 000047
2004265405.tif 000048
2004265405.tif 000049
2004265405.tif 000050
2004265405.tif 000051
2004265405.tif 000052
2004265405.tif 000053
2004265405.tif 000054
2004265405.tif 000055
2004265405.tif 000056
2004265405.tif 000057
2004265405.tif 000058
2004265405.tif 000059
2004265405.tif 000060
2004265405.tif 000061
2004265405.tif 000062
2004265405.tif 000063
2004265405.tif 000064
2004265405.tif 000065
2004265405.tif 000066
2004265405.tif 000067