(57)【特許請求の範囲】
【請求項１】
データ項目が拡張可能マークアップ言語（ＸＭＬ）構造体を表わすことができるようにするＳＱＬ対応データベース管理システム（ＤＢＭＳ）において、前記拡張可能マークアップ言語（ＸＭＬ）構造体と構造化照会言語（ＳＱＬ）構造体との間で、階層データを変換するために、コンピュータで実現される方法であって、
２つまたはそれよりも多いＸＭＬ構造体の第１の組を含む少なくとも第１のＸＭＬ構造体を表わす第１のデータ項目に対して作用する特定のオペレータを含むＳＱＬステートメントを受取るステップを含み、前記第１のＸＭＬ構造体は、ＸＭＬツリー階層における祖先ノードであり、前記方法はさらに、
前記ＳＱＬステートメントを実行するステップと、前記ＳＱＬステートメントの実行中、２つまたはそれよりも多いエントリの順序付けられた集合を生成することによって、前記特定のオペレータを評価するステップを含み、
前記順序付けられた集合内の各エントリは、
前記第１の組の特定のＸＭＬ構造体を表わす特定のデータ項目と、
前記ＸＭＬツリー階層における前記特定のＸＭＬ構造体のレベルを示すレベルデータとを含み、
前記方法は、メモリに記憶されている１つ以上のシーケンスを実行する１つ以上のプロセッサを含む１つ以上のコンピュータによって実行され、
前記ＳＱＬステートメントは、前記１つ以上のコンピュータに接続された他のコンピュータから受け取られ、
前記順序付けられた集合における前記２つまたはそれよりも多いエントリは、出力ＸＭＬ文書の２つまたはそれよりも多いエントリの順序に対応する順序で示される、方法。
【請求項２】
前記レベルを示す前記レベルデータは、前記第１のＸＭＬ構造体よりも下の、前記特定のＸＭＬ構造体のレベルを示す、請求項１に記載の方法。
【請求項３】
前記順序付けられた集合を生成する前記ステップはさらに、
前記第１の組から、ＸＭＬ文書の順序で前記ＸＭＬツリー階層の第１のノードの直後にある、前記ＸＭＬツリー階層の次のノードの現在のＸＭＬ構造体を受取るステップと、
前記現在のＸＭＬ構造体を表わすための現在のデータ項目を生成するステップと、
前記順序付けられた集合内の特定のエントリにおいて、現在のレベルを前記現在のデータ項目と関連付けるステップとを含む、請求項１に記載の方法。
【請求項４】
前記順序付けられた集合を生成する前記ステップはさらに、
前記次のノードが前記ＸＭＬツリー階層における前記第１のノードの子ノードであるかどうか判断するステップと、
前記現在のデータ項目が前記第１のノードの子ノードであると判断された場合、前記第１のノードを表わす第２のデータ項目に関連する第１のレベルを増分することによって、前記現在のレベルを生成するステップとを含む、請求項３に記載の方法。
【請求項５】
前記順序付けられた集合を生成する前記ステップはさらに、
前記次のノードが前記ＸＭＬツリー階層における前記第１のノードの兄弟ノードであるかどうか判断するステップと、
前記次のノードが前記第１のノードの前記兄弟ノードであると判断された場合、前記第１のノードを表わす第２のデータ項目に関連する第１のレベルに等しいものとして、前記現在のレベルを生成するステップとを含む、請求項３に記載の方法。
【請求項６】
前記順序付けられた集合を生成する前記ステップはさらに、
前記次のノードが前記ＸＭＬツリー階層における前記第１のノードの祖先ノードの兄弟であるかどうか判断するステップと、
前記次のノードが前記祖先ノードの前記兄弟であると判断された場合、前記第１のノードを表わす第２のデータ項目に関連する第１のレベルを、前記ＸＭＬツリー階層における前記次のノードと前記第１のノードとの間の深さの変化に関連する量だけ減分することによって、前記現在のレベルを生成するステップとを含む、請求項３に記載の方法。
【請求項７】
１つまたはそれよりも多い命令シーケンスを保持する、コンピュータで読取可能な媒体であって、前記１つまたはそれよりも多い命令シーケンスは、コンピュータの１つまたはそれよりも多いプロセッサによって実行されると、前記１つまたはそれよりも多いプロセッサに、データ項目がＸＭＬ構造体を表わすことができるようにするＳＱＬ対応データベース管理システム（ＤＢＭＳ）において、拡張可能マークアップ言語（ＸＭＬ）構造体と構造化照会言語（ＳＱＬ）構造体との間で、階層データを変換するための方法を実行させ、前記方法は、
２つまたはそれよりも多いＸＭＬ構造体の第１の組を含む少なくとも第１のＸＭＬ構造体を表わす第１のデータ項目に対して作用する特定のオペレータを含むＳＱＬステートメントを受取るステップを含み、前記第１のＸＭＬ構造体は、ＸＭＬツリー階層における祖先ノードであり、前記ＳＱＬステートメントは、前記コンピュータに接続された他のコンピュータから受け取られ、前記方法はさらに、
前記ＳＱＬステートメントを実行するステップと、前記ＳＱＬステートメントの実行中、前記特定のオペレータを、２つまたはそれよりも多いエントリの順序付けられた集合を生成することによって評価するステップを含み、
前記順序付けられた集合内の各エントリは、
前記第１の組の特定のＸＭＬ構造体を表わす特定のデータ項目と、
前記ＸＭＬツリー階層における前記特定のＸＭＬ構造体のレベルを示すレベルデータとを含み、
前記順序付けられた集合における前記２つまたはそれよりも多いエントリは、出力ＸＭＬ文書の２つまたはそれよりも多いエントリの順序に対応する順序で示される、コンピュータで読取可能な媒体。
【請求項８】
前記レベルを示す前記レベルデータは、前記第１のＸＭＬ構造体よりも下の、前記特定のＸＭＬ構造体のレベルを示す、請求項７に記載のコンピュータで読取可能な媒体。
【請求項９】
前記順序付けられた集合を生成する前記ステップはさらに、
前記第１の組から、ＸＭＬ文書の順序で前記ＸＭＬツリー階層の第１のノードの直後にある、前記ＸＭＬツリー階層の次のノードの現在のＸＭＬ構造体を受取るステップと、
前記現在のＸＭＬ構造体を表わすための現在のデータ項目を生成するステップと、
前記順序付けられた集合内の特定のエントリにおいて、現在のレベルを前記現在のデータ項目と関連付けるステップとを含む、請求項７に記載のコンピュータで読取可能な媒体。
【請求項１０】
前記順序付けられた集合を生成する前記ステップはさらに、
前記次のノードが前記ＸＭＬツリー階層における前記第１のノードの子ノードであるかどうか判断するステップと、
前記現在のデータ項目が前記第１のノードの子ノードであると判断された場合、前記第１のノードを表わす第２のデータ項目に関連する第１のレベルを増分することによって、前記現在のレベルを生成するステップとを含む、請求項９に記載のコンピュータで読取可能な媒体。
【請求項１１】
前記順序付けられた集合を生成する前記ステップはさらに、
前記次のノードが前記ＸＭＬツリー階層における前記第１のノードの兄弟ノードであるかどうか判断するステップと、
前記次のノードが前記第１のノードの前記兄弟ノードであると判断された場合、前記第１のノードを表わす第２のデータ項目に関連する第１のレベルに等しいものとして、前記現在のレベルを生成するステップとを含む、請求項９に記載のコンピュータで読取可能な媒体。
【請求項１２】
前記順序付けられた集合を生成する前記ステップはさらに、
前記次のノードが前記ＸＭＬツリー階層における前記第１のノードの祖先ノードの兄弟であるかどうか判断するステップと、
前記次のノードが前記祖先ノードの前記兄弟であると判断された場合、前記第１のノードを表わす第２のデータ項目に関連する第１のレベルを、前記ＸＭＬツリー階層における前記次のノードと前記第１のノードとの間の深さの変化に関連する量だけ減分することによって、前記現在のレベルを生成するステップとを含む、請求項９に記載のコンピュータで読取可能な媒体。
【請求項１３】
構造化照会言語（ＳＱＬ）ステートメントを処理する、コンピュータで実行される方法であって、
前記ＳＱＬステートメントが、１つまたはそれよりも多いリレーショナルテーブルから情報を集めるための操作を特定する特定のオペレータを含むことを検出するステップと、
前記ＳＱＬステートメントを実行するステップと、前記特定のオペレータを含む前記ＳＱＬステートメントの実行中、前記１つまたはそれよりも多いリレーショナルテーブルから、属性値と、対応するレベル値とを読出すステップと、
前記操作の結果として、階層的な拡張可能マークアップ言語（ＸＭＬ）情報を生成するステップとを含み、
前記階層的なＸＭＬ情報内で、前記属性値は各々、前記属性値に対応する前記レベル値に基づく階層レベルに属しており、
前記方法は、メモリに記憶されている１つ以上のシーケンスを実行する１つ以上のプロセッサを含む１つ以上の前記コンピュータによって実行され、
前記ＳＱＬステートメントは、前記コンピュータに接続された他のコンピュータから受け取られる、方法。
【請求項１４】
階層的なＸＭＬ情報を生成する前記ステップは、特定のデータ項目を前記結果に挿入するステップを含み、
前記特定のデータ項目は、ＸＭＬ文書の順序でＸＭＬツリー階層の第１のノードに続く、ＸＭＬツリー階層の次のノードを表わし、
前記第１のノードは第１のデータ項目によって表わされ、
前記第１のノードに対するＸＭＬ構造体の終了タグは、前記結果にまだ挿入されておらず、
前記第１のノードは前記ＸＭＬツリー階層の第１のレベルにある、請求項１３に記載の方法。
【請求項１５】
前記特定のデータ項目を前記結果に挿入する前記ステップはさらに、
前記特定のデータ項目の特定のレベルが前記第１のレベルよりも１の増分だけ大きいかどうか判断するステップと、
前記特定のレベルが前記第１のレベルよりも１の増分だけ大きいと判断された場合、終了タグの挿入の前に、特定のＸＭＬ構造体の開始タグを挿入するステップとを含む、請求項１４に記載の方法。
【請求項１６】
前記特定のデータ項目を前記結果に挿入する前記ステップはさらに、
前記特定のデータ項目の特定のレベルが前記第１のレベルと等しいかどうか判断するステップと、
前記特定のレベルが前記第１のレベルと等しいと判断された場合、
終了タグを挿入するステップと、
前記終了タグ挿入の直後に、特定のＸＭＬ構造体の開始タグを挿入するステップとを含む、請求項１４に記載の方法。
【請求項１７】
前記特定のデータ項目を前記結果に挿入する前記ステップはさらに、
前記特定のデータ項目の特定のレベルが前記第１のレベルより小さいかどうか判断するステップと、
前記特定のレベルが前記第１のレベルより小さいと判断された場合、
終了タグを挿入するステップと、
第１のレベルを減分するステップとを含む、請求項１４に記載の方法。
【請求項１８】
１つまたはそれよりも多い命令シーケンスを保持する、コンピュータで読取可能な媒体であって、前記１つまたはそれよりも多い命令シーケンスは、コンピュータにおける１つまたはそれよりも多いプロセッサによって実行されると、前記１つまたはそれよりも多いプロセッサに、構造化照会言語（ＳＱＬ）ステートメントを処理するための方法を実行させ、前記方法は、
前記ＳＱＬステートメントが、１つまたはそれよりも多いリレーショナルテーブルから情報を集めるための操作を特定する特定のオペレータを含むことを検出するステップと、
前記ＳＱＬステートメントを実行するステップと、前記特定のオペレータを含む前記ＳＱＬステートメントの実行中、前記１つまたはそれよりも多いリレーショナルテーブルから、属性値と、対応するレベル値とを読出すステップと、
前記操作の結果として、階層的な拡張可能マークアップ言語（ＸＭＬ）情報を生成するステップとを含み、
前記階層的なＸＭＬ情報内で、前記属性値は各々、前記属性値に対応する前記レベル値に基づく階層レベルに属しており、
前記ＳＱＬステートメントは、前記コンピュータに接続された他のコンピュータから受け取られる、コンピュータで読取可能な媒体。
【請求項１９】
階層的なＸＭＬ情報を生成する前記ステップは、特定のデータ項目を前記結果に挿入するステップを含み、
前記特定のデータ項目は、ＸＭＬ文書の順序でＸＭＬツリー階層の第１のノードに続く、ＸＭＬツリー階層の次のノードを表わし、
前記第１のノードは第１のデータ項目によって表わされ、
前記第１のノードに対するＸＭＬ構造体の終了タグは、前記結果にまだ挿入されておらず、
前記第１のノードは前記ＸＭＬツリー階層の第１のレベルにある、請求項１８に記載のコンピュータで読取可能な媒体。
【請求項２０】
前記特定のデータ項目を前記結果に挿入する前記ステップはさらに、
前記特定のデータ項目の特定のレベルが前記第１のレベルよりも１の増分だけ大きいかどうか判断するステップと、
前記特定のレベルが前記第１のレベルよりも１の増分だけ大きいと判断された場合、終了タグの挿入の前に、特定のＸＭＬ構造体の開始タグを挿入するステップとを含む、請求項１９に記載のコンピュータで読取可能な媒体。
【請求項２１】
前記特定のデータ項目を前記結果に挿入する前記ステップはさらに、
前記特定のデータ項目の特定のレベルが前記第１のレベルと等しいかどうか判断するステップと、
前記特定のレベルが前記第１のレベルと等しいと判断された場合、
終了タグを挿入するステップと、
前記終了タグ挿入の直後に、特定のＸＭＬ構造体の開始タグを挿入するステップとを含む、請求項１９に記載のコンピュータで読取可能な媒体。
【請求項２２】
前記特定のデータ項目を前記結果に挿入する前記ステップはさらに、
前記特定のデータ項目の特定のレベルが前記第１のレベルより小さいかどうか判断するステップと、
前記特定のレベルが前記第１のレベルより小さいと判断された場合、
終了タグを挿入するステップと、
第１のレベルを減分するステップとを含む、請求項１９に記載のコンピュータで読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明は、拡張可能マークアップ言語（ＸＭＬ）データをリレーショナル（関係）データベースシステムにおいて用いるための技術に関する。
【背景技術】
【０００２】
発明の背景
ワールドワイドウェブ（ＷＷＷ）は、インターネット上のサーバのネットワークを含み、各サーバは、１以上のハイパーテキストマークアップ言語（ＨＴＭＬ）ページと関連付けられる。ＨＴＭＬページは、サーバに要求を行なうクライアントと、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を使用するサーバとの間で転送される。インターネット上のサーバから入手可能なリソースの場所は、ユニバーサルリソースロケータ（ＵＲＬ）を用いて特定される。ＷＷＷの標準およびプロトコルは、ワールドワイドウェブコンソーシアム（Ｗ３Ｃ）によって、www.w3c.orgにあるそのサーバを通して公表されており、インターネット上での使用に加え、多くの個人的なネットワーク上でも使用されている。
【０００３】
ＨＴＭＬ標準は、標準汎用マークアップ言語（ＳＧＭＬ）と呼ばれる、より一般的なマークアップ言語標準の１つの応用である。最近、ＨＴＭＬよりも効果的かつ柔軟性のあるＳＧＭＬのサブセットが規定され、インターネットおよびそれ以外のネットワークを通した情報の転送では人気を得ている。この、Ｗ３Ｃによって開発および推奨されている新しい標準は、拡張マークアップ言語（ＸＭＬ（eXtensible Markup Language））と呼ばれる。ＸＭＬは、データ内の構造を表現するための共通のシンタックス（構文）を提供する。構造化されたデータとは、その内容、意味または用途についてタグ付けされたデータを指す。ＸＭＬは、フォーマットまたはプレゼンテーションに焦点を置いたＨＴＭＬで行なわれているタグ付けを拡張するものである。ＸＭＬタグは、ＸＭＬ要素およびＸＭＬ要素の属性を識別する。ＸＭＬ要素を入れ子にして要素の階層を形成することができる。
【０００４】
ＸＭＬによって規定および使用される要素が与えられると、ドキュメントオブジェクトモデル（ＤＯＭ）は、あるＸＭＬ文書内の情報の配置の仕方を規定するように形成されたツリー（木）構造となる。このＤＯＭは、ＸＭＬ文書内の要素および属性の階層の中の特定のノードまたは内容を示すＸＰａｔｈ表現を用いてナビゲートされる。ＸＰａｔｈは、Ｗ３Ｃが公表した標準である。
【０００５】
リレーショナルデータベースは、ワールドワイドウェブよりも前に、ワールドワイドウェブとは別に開発された。リレーショナルデータベースは、データを、データ内の論理関係に対応する種々のタイプのデータコンテナに記憶する。結果として、リレーショナルデータベースは、効果的な検索および更新機能をサポートする。リレーショナルデータベースは、典型的には、データを行列状のテーブルに記憶し、テーブルでは、１つの行におけるすべての列の値に関連がある。たとえば、従業員テーブルの１つの行の中の値は、同一の従業員の、名前、社会保障番号、住所、給与、電話番号およびそれ以外の情報といった属性を、記述する。属性はそれぞれ異なる列に記憶される。集合と呼ばれるいくつかの属性は、複数のエントリを持つことができる。たとえば、従業員が複数の電話番号を持つことを許可されている場合がある。特別な構造はいくつかのリレーショナルデータベースで規定されて集合を記憶する。
【０００６】
リレーショナルデータベース管理システム（ｒｅｌａｔｉｏｎａｌ  ＤＢＭＳ）は、リ
レーショナルデータベース内のデータの記憶および検索を行なうシステムである。リレーショナルＤＢＭＳは、テーブルの作成および削除、テーブル内のデータの追加および削除、ならびにデータベース内のテーブルからのデータ検索といったデータベース機能の実行要求を処理する。データベース要求を表現するための周知の標準的な言語は、構造化照会言語（ＳＱＬ）である。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
要素間の階層関係をサポートするデータ交換フォーマットとしてのＸＭＬの人気のため、および、リレーショナルＤＢＭＳのデータ更新および検索力のため、リレーショナルデータベースから出力されるＸＭＬデータの生成、および、ＸＭＬデータのリレーショナルデータベースへの記憶に対する需要がある。１つの手法では、データベースアドミニストレータ（管理者）が、特定のＸＭＬ構造体内のデータを特定のリレーショナルデータベース構造体内のデータにマッピングしたりその逆を行なったりする手続言語でコードを生成するプログラミング作業を、依頼することができる。このようなプログラミング作業はコストが高い。
【０００８】
別の手法では、ＳＱＬステートメントと同様の宣言ステートメントを用いて、ＸＭＬ構造体とＳＱＬ構造体との関係を簡単に表現することができる。宣言された関係に従いデータを変換する一般的なルーチンは、ＤＢＭＳ供給業者によって１度書込まれ、データベースアドミニストレータに供給される。これによって、データベースアドミニストレータは、データを変換するための手続言語プログラムを開発しなくてもよくなる。この需要をサポートするために、ＸＭＬ文書に対して機能する業界標準ＳＱＬが開発されている。この標準はＳＱＬ／ＸＭＬと呼ばれ、ＳＱＬ／ＸＭＬに関する情報は、これを書いている時点においてはwww.sqlx.orgで入手できる。ＳＱＬ／ＸＭＬは、階層的なＸＭＬ構造体内のデータとＳＱＬリレーショナル構造体内のデータとの間の、いくつかの変換を、簡単に表現するために使用できる、宣言ステートメントを提供する。たとえば、ＸＭＬＡｇｇは、１つのＸＭＬ文書を、あるリレーショナルテーブルの選択された行から生成された１組のＸＭＬ要素から生成する、ＳＱＬ／ＸＭＬ関数である。
【０００９】
本明細書で使用されるＸＭＬ構造体は、特に、ＸＭＬ文書、ＸＭＬ要素、複数のＸＭＬ要素を含む文書フラグメント、および、ＸＭＬ要素のＸＭＬ属性を含む。ＳＱＬ対応のＤＢＭＳにおいて操作されるデータであって、ＤＢＭＳによって、そのデータを伝えるＸＭＬ構造体の生成をサポートするために構成されるデータは、「ＸＭＬ型インスタンス」または簡単に「ＸＭＬデータ」と呼ばれる。このようなＸＭＬデータは、テーブル、行および列といったＳＱＬ構造体内に記憶されても記憶されなくてもよい。
【００１０】
ＳＱＬ／ＸＭＬステートメントは、ＸＭＬ構造体とＳＱＬ構造体との間の変換において生じる多くの状況に対して効果的なツールを提供するが、これらステートメントは、発生する状況すべてに単純に対処するのではない。たとえば、ＸＭＬ型のインスタンスは、従業員が署名して帯出することを認められた種々の装置に対応する数個の子要素を含む従業者要素のためのデータを含み得る。ＤＢＭＳのユーザは、何らかの基準を満たす装置を記述する一連のＸＭＬ文書を生成したいと思うかもしれない。これらの子要素を抽出するための従来のＳＱＬ／ＸＭＬステートメントは、すべての装置がその基準を満たす単一のインスタンスを生成する。別々の装置それぞれに対してＸＭＬ型の別々のインスタンスを生成するためには、数個の従来のステートメントが、サブ基準を満たす装置１つにつき１つ、使用される。数個のステートメントを生成するのは冗長である。状況によっては、各装置をそれ以外の装置と区別する基準を予測することは不可能な場合があり得る。こうした状況において好ましいのは、ＸＭＬ型の一連の別々のインスタンスを生成するために１つのステートメントを使用できることである。
【００１１】
現在のＳＱＬ／ＸＭＬステートメントも、ＸＭＬ構造体とＳＱＬ構造体との間の変換の際にいくつかの階層関係の保持をサポートしない。いくつかのＸＭＬ要素をそれ自身の型内で入れ子にして階層を形成してもよい。たとえば、「従業員」と呼ばれる１つのＸＭＬ要素は、子要素として、第１の従業員が監督する他の従業員を表わす１つまたはそれよりも多い、他の従業員要素を有してもよい。状況によっては、文書内の数個の従業員要素に対して機能するＳＱＬ／ＸＭＬ関数ＥＸＴＲＡＣＴ（抽出）は、これら数個の従業員要素をすべて、順次、当初のＸＭＬ文書内で示された入れ子なしで単純に出力する。その結果、数人の従業員がマネージャ親従業員の被監督子従業員であるかどうかを示す階層情報のない、従業員リストが生まれる。
【００１２】
いくつかのＳＱＬ行は、行からなるテーブル内での階層を暗に示し得る。たとえば、「ｅｍｐ」テーブルは、各従業員について１つの行を含み、第１の従業員の監督者である第２の従業員についてのｅｍｐテーブルのもう１つの行へのポインタを保持する列「ｍｇｒ」を含み得る。このテーブルの行から生成される複数のＸＭＬ要素に対して機能するＳＱＬ／ＸＭＬ関数ＸＭＬＡｇｇは、単純に、１組のルートレベル要素を備えた１つのＸＭＬ文書フラグメントを生成するであろう（たとえば要素名「従業員」の一連のＸＭＬ要素）。この階層は、各従業員要素のｍｇｒ属性によって暗に示されるが、被監督従業員がマネージャ従業員要素の子要素となるように、従業員要素を入れ子にすることがより望ましいであろう。
【００１３】
上記に基づくと、ＳＱＬ対応のＤＢＭＳにおけるＸＭＬデータの操作を向上させる宣言ステートメントが明らかに必要である。特に、ＳＱＬ構造体内で暗に示される階層関係を、これらの構造体がＸＭＬ型のインスタンスに変換される際に保存する宣言ステートメントが必要である。特に、ＸＭＬ型のインスタンス内の階層関係を、このインスタンスがＸＭＬ型の複数のインスタンスに変換される際に保存する宣言ステートメントも必要である。
【課題を解決するための手段】
【００１４】
このセクションに記載の方策を遂行することが可能であろうが、これらは必ずしも以前に考案され遂行された方策ではない。したがって、特にこの明細書において記載しない限り、このセクションに記載の方策は、単にこれらの方策がこの背景セクションにあるからといって本願のクレームの先行技術とみなされるものではない。
【００１５】
本発明は、添付の図面の図において限定としてではなく例示として説明され、図面において同じ数字は同じ構成要素を表わす。
【００１６】
発明の詳細な説明
ＳＱＬ対応のＤＢＭＳにおいてＸＭＬデータを操作するための技術について説明する。以下の説明では、説明のために、数多くの具体的な詳細事項を述べて本発明が十分に理解できるようにしている。しかしながら、本発明はこういった具体的な詳細事項がなくとも実施可能であることは明らかであろう。それ以外の場合においては、本発明を不必要に曖昧にしないようにするために周知の構成および装置はブロック図形式で示される。
【００１７】
機能の概要
新たなＸＭＬ機能が、ＳＱＬ対応のＤＢＭＳにおけるＸＭＬデータの操作のために提供される。このＤＢＭＳにより、ＸＭＬ型のインスタンスを、ＸＭＬ文書、ＸＭＬ要素、数個のＸＭＬ要素を含むＸＭＬ文書フラグメント、およびＸＭＬ要素のＸＭＬ属性といった、ＸＭＬ構造体を表わすことができる。本発明のある局面に従うと、技術はＳＱＬステートメントをＤＢＭＳで受取ることを含む。このＳＱＬステートメントは、ゼロまたはそれ
よりも多いＸＭＬ要素の第１の組を表わすＸＭＬ型の第１のインスタンスに対して機能するシーケンスオペレータを含む。このＳＱＬステートメントの実行中、シーケンスオペレータは、ＸＭＬ型のゼロまたはそれよりも多いインスタンスの順序付けられた集合を生成することによって、評価される。順序付けられた集合の中のＸＭＬ型の異なる要素はそれぞれ、第１の組からの異なるＸＭＬ要素に基づいており、第１の組の中のすべてのＸＭＬ要素について順序付けられた集合の中のＸＭＬ型のインスタンスがある。これらの技術によって、ＸＭＬ型のＳＱＬインスタンスの操作を向上させる宣言ステートメントが可能になる。
【００１８】
本発明の他の局面に従うと、階層シーケンスオペレータを含むＳＱＬステートメントが受取られる。この階層シーケンスオペレータは、１つまたはそれよりも多いＸＭＬ構造体の第１の組を含む少なくとも第１のＸＭＬ構造体を表わすＸＭＬ型の第１のインスタンスに対して機能し、第１のＸＭＬ構造体はＸＭＬツリー階層における祖先ノードである。このＳＱＬステートメントの実行中、階層シーケンスオペレータは、１つまたはそれよりも多いエントリの順序付けられた集合を生成することによって評価される。この順序付けられた集合の中の各エントリは、ＸＭＬ型の特定のインスタンスおよびレベルを示すデータを含む。このＸＭＬ型の特定のインスタンスは、第１の組の特定のＸＭＬ構造体を表わす。このデータは、ＸＭＬツリー内での、この特定のＸＭＬ構造体のレベルを示す。本局面の技術により、ＸＭＬ構造体の階層関係を、これらの構造体がＸＭＬ型の複数のインスタンスとして操作される際に記憶する、宣言ステートメントが可能になる。
【００１９】
本発明の他の局面に従うと、階層集約オペレータを含むＳＱＬステートメントが受取られる。この階層集約オペレータは、ＸＭＬ型の特定のインスタンスと、特定のレベルを示すデータとに対し、機能する。上記ＸＭＬ型の特定のインスタンスは、祖先ＸＭＬ構造体を表わす結果インスタンスに含まれることになるＸＭＬ型の複数のインスタンスのうち１つである。この祖先ＸＭＬ構造体は、関連するＸＭＬツリー階層を有する。上記特定のレベルは、ＸＭＬ型の特定のインスタンスによって表わされる特定のＸＭＬ構造体が配置されることになるＸＭＬツリー階層の中でのレベルを示す。ＳＱＬステートメントの実行中、階層集約オペレータは、ＸＭＬ型の特定のインスタンスを、そのレベルによって示される深さにあるＸＭＬ型の結果インスタンスに挿入することによって、評価される。これらの技術により、ＳＱＬ構造体内で暗に示される階層関係を、これらの構造体からのデータがＸＭＬ型のインスタンスに変換されるかまたはＸＭＬ構造体として出力される際に、保存することができる。
【発明を実施するための最良の形態】
【００２０】
以下において、実施例を、市場で入手可能な拡張可能マークアップ言語／構造化照会言語（ＸＭＬ／ＳＱＬ）データベースサーバの文脈で説明する。このデータベースサーバは、１つまたはそれよりも多いＸＭＬ文書の内容の記憶のためのオブジェクト−リレーショナル構造体を使用し、１つまたはそれよりも多いＸＭＬ文書としてまたは１つまたはそれよりも多いＸＭＬ構造体で構成される文書フラグメントとして、操作または出力されることになるその内容についてのＸＰａｔｈクエリ（照会）に応答する。ＸＰａｔｈクエリは、ＸＭＬ文書内でのデータの場所を特定するためのＸＰａｔｈ表現、および、ＸＰａｔｈ表現によって場所が特定されたデータを生成、組合せまたは比較するゼロまたはそれよりも多いＳＱＬ／ＸＭＬ関数を含む。ＳＱＬ／ＸＭＬ標準関数は、当該技術では周知の、ＥＸＴＲＡＣＴ、ＥＸＴＲＡＣＴＶＡＬＵＥおよびＥＸＩＳＴＳＮＯＤＥを含む。しかしながら、本発明はこの文脈に限定されず、リレーショナルデータベース構造体およびＸＭＬデータを含む何らかの文脈において応用可能である。
【００２１】
構造の概要
本発明の実施例に含まれる構造は、ＸＭＬ構造体およびリレーショナルデータベース構
造体（ＳＱＬ構造体とも呼ばれる）を有するＸＭＬ文書を含む。図１は、一例としてのＸＭＬ文書１１０、および、オブジェクト−リレーショナルデータベースサーバ１３０が管理するオブジェクト−リレーショナルデータベース内にＸＭＬ文書の内容を記憶するオブジェクト−リレーショナル構造体の例を示すブロック図である。
【００２２】
ＸＭＬ文書１１０は、以下では「ＯＲＧ」ＸＭＬ文書と呼ぶ特定のＸＭＬ文書型のインスタンスであり、これは、ある企業内の従業者間の組織関係を記述する。説明のために、一例としてのＯＲＧ文書１１０は、ある組織のマネージャについてのＥＭＰＬＯＹＥＥ型のＸＭＬ要素１１２ａ（「ＥＭＰＬＯＹＥＥ」と名付けられる）を含むと仮定する。各ＥＭＰＬＯＹＥＥ型の要素は、ある従業員番号（「ＥＮＯ」と名付けられる）の属性（図示せず）、ＥＮＡＭＥ、ＥＩＮＦＯという型の２つのＸＭＬ要素、および、ＥＭＰＬＯＹＥＥ型のゼロまたはそれよりも多い他の要素を含む。ＸＭＬ要素１１４ａのようなＥＮＡＭＥ型のＸＭＬ要素は、従業員の名前を示す内容を保持する。ＸＭＬ要素１１４ｂのようなＥＩＮＦＯ型のＸＭＬ要素は、住所および給与といったそれ以外の従業員情報を示す内容を保持する。ＸＭＬ要素１１６ａ、１１６ｂのようなＥＭＰＬＯＹＥＥ型のＸＭＬ要素は、属性の内容ならびにＥＮＡＭＥおよびＥＩＮＦＯ要素によって識別される従業員によって監督される従業員を示す内容を保持する。ＸＭＬ要素１１６ａ、１１６ｂおよび省略符号１１５で示されるそれ以外などの、ＥＭＰＬＯＹＥＥ型の要素は、まとめて子ＥＭＰＬＯＹＥＥ要素１１６と呼ぶ。
【００２３】
一例としてのＸＭＬデータベースサーバ１３０は、ＸＭＬ文書をインポートおよびエクスポートし、１つ以上のＸＭＬ構造体をＸＭＬ型のインスタンスとして表わし（本明細書ではＸＭＬインスタンスとも呼ぶ）、データベース記憶空間１４０における１つまたはそれよりも多いＳＱＬ構造体内にＸＭＬ構造体の内容を記憶する、ＸＭＬオブジェクト−リレーショナルデータベースサーバである。このデータベース記憶空間１４０は、テーブル１４４およびビュー１４８といった１つまたはそれよりも多い、それ以外のＳＱＬ構造体を含む。
【００２４】
例として挙げるこの実施例で、テーブルは、ＸＭＬ  ＯＲＧ文書に直接関連付けられていない。たとえば、各行がそれぞれ、異なるＯＲＧ文書にまたは異なるＥＭＰＬＯＹＥＥ要素に対応するテーブルはない。このような状況が発生するのは、ＯＲＧ型ＸＭＬ文書が規定される前にデータがＥＭＰテーブル１４４に記憶され複数のアプリケーションで使用されている可能性がある場合である。もう１つの状況としては、ＥＭＰが意図的にＸＭＬ型のインスタンスのテーブルよりもコンパクトになるように設計されている場合である。ＥＭＰテーブルはＸＭＬ型のテーブルではなく、ＥＭＰテーブルは、列の名称ＭＧＲを有し従業員のマネージャを表わすデータを記憶する、ＸＭＬ型の列ではない列を含む。
【００２５】
ＸＭＬクエリには、ＸＭＬ型でないテーブル１４４や列ＭＧＲのようなオブジェクトリレーショナル構造体についての意味はない。１つのＸＭＬ型のオブジェクトは、このようなＸＭＬクエリに対して生成されなければならない。ＸＭＬ型のオブジェクトは、ＳＱＬ／ＸＭＬにおける１つまたはそれよりも多いＸＭＬ生成関数を用いることによって、ＸＭＬ型のインスタンスではないＳＱＬ構造体から、ＸＭＬオブジェクト−リレーショナルデータベースサーバにおいて生成してもよい。たとえば、ＸＭＬ生成関数ＸＭＬＥｌｅｍｅｎｔは、１つまたはそれよりも多いオブジェクトからまたはＸＭＬ型でないスカラー列から、ＸＭＬ型のインスタンスを生成する。ＸＭＬ型のオブジェクト（ＸＭＬ型のインスタンス）をＤＢＭＳが用いて、ＸＭＬ構造体のデータストリームを生成することができる。ＸＭＬ生成関数ＸＭＬＡｔｔｒｉｂｕｔｅｓは、スカラー列からＸＭＬ型のオブジェクトの属性を生成する。ＸＭＬ型のオブジェクトは、１つ以上のＳＱＬ／ＸＭＬ関数を用いて組合せてもよい。ＸＭＬ生成関数を含むサブクエリは、ＸＭＬ型でないオブジェクト−リレーショナル構造体のデータに向けられたＸＭＬクエリに含まれていなければならない。
場合によって、ＸＭＬ生成関数を含むサブクエリが、ＸＭＬ型ビュー１４８のようなＸＭＬ型ビューとして記憶されてもよい。
【００２６】
新たなＸＭＬ関数の例
いくつかの実施例に従って、以下のセクションでより詳細に説明される、ＳＱＬ対応のＤＢＭＳにおけるＸＭＬデータの管理を向上させるＸＭＬ関数の３つの例は、ＸＭＬＳｅｑｕｅｎｃｅ、ＨｉｅｒＸＭＬＳｅｑｕｅｎｃｅおよびＨｉｅｒＸＭＬＡｇｇｒｅｇａｔｅと呼ばれる。
【００２７】
ＸＭＬ構造体およびＳＱＬ構造体の内容の例
宣言ＳＱＬステートメントにおいてこれらの関数を使用してＸＭＬデータを操作するこことを説明するために、テーブル１に列挙されるデータがＥＭＰテーブル１４４に存在すると仮定する。
【００２８】
【表１】
0004516566.tif 000002
【００２９】
ＥＭＰテーブルは、ＳＱＬ構造体を用いた交換可能な行の単層ファイルであるが、従業員の階層が暗に示されている。たとえば、テーブル１に列挙された内容は、Ｌｉｎｄａ（ＥＮＯ＝１）が階層のトップであり、Ｃｈａｒｌｅｓ（ＥＮＯ＝２）およびＴｅｒｒｙ（ＥＮＯ＝３）が彼女の直属の部下であることを示している。Ａｌｉｃｅ（ＥＮＯ＝４）およびＭａｒｙ（ＥＮＯ＝５）はＣｈａｒｌｅｓの直属の部下である。Ｒａｙ（ＥＮＯ＝６）はＡｌｉｃｅの直属の部下である。Ｖｉｓｈｎｕ（ＥＮＯ＝７）およびＣｅｔｉｎ（ＥＮＯ＝８）は双方共にＲａｙの直属の部下である。Ｓｔｅｖｅ（ＥＮＯ＝９）はＴｅｒｒｙの直属の部下である。ここで暗に示されている階層は、図２Ａにおいてノードのツリーとして示されている。
【００３０】
図２Ａは、ツリー階層を示すブロック図である。図２Ａにおいて、ノード２０５は、ノード２１０、２２０、２３０、２４０、２５０、２６０、２７０、２８０、２９０を含む。ルートノード２１０は従業員Ｌｉｎｄａを表わす。２人の従業員ＣｈａｒｌｅｓおよびＴｅｒｒｙはそれぞれ、子ノード２２０、２３０によって表わされ、ノード２１０で表わされるＬｉｎｄａの直属の部下である。Ｔｅｒｒｙを表わすノード２３０は、Ｔｅｒｒｙの直属の部下である従業員Ｓｔｅｖｅを表わす１つの子ノード２９０を有する。Ｃｈａｒｌｅｓを表わすノード２２０は、従業員Ａｌｉｃｅ、Ｍａｒｙをそれぞれ表わす２つの子
ノード２４０、２５０を有し、ＡｌｉｃｅおよびＭａｒｙはＣｈａｒｌｅｓの直属の部下である。Ａｌｉｃｅを表わすノード２４０は、Ａｌｉｃｅの直属の部下である従業員Ｒａｙを表わす１つの子ノード２６０を有する。Ｒａｙを表わすノード２６０は、Ｒａｙの直属の部下である従業員Ｖｉｓｈｎｕ、Ｃｅｔｉｎをそれぞれ表わす２つの子ノード２７０、２８０を有する。
【００３１】
同じ情報をＸＭＬ構造体を用いて表現したＸＭＬ  ＯＲＧ文書が、図２Ｂに示される。図２Ｂは、一例としてのＸＭＬ文書の一部２０１におけるＸＭＬ構造体を示すブロック図である。図２Ｂにおいて、ＯＲＧ型ＸＭＬ文書の一部２０１が、ＸＭＬ構造体を用いて示されている。この部分２０１の各ラインは、図２Ｂのラインの左側に列挙されたライン番号２０２によって示される。ライン１における省略符号は、ＸＭＬのバージョンを示すデータならびに妥当な要素および属性について使用されることになる名前空間などの、この文書内のルート要素ＯＲＧに先行するＸＭＬ構造体を示す。ノード２１０でＬｉｎｄａを表わすＸＭＬ構造体は、ライン番号４から２９の構造体を含む。Ｌｉｎｄａの子孫要素を表わすＸＭＬ構造体は、図２Ａの対応するノードに対する２２０〜２９０で示される括弧で示される。ＸＭＬ構造体は、この説明では明確にするために異なるライン上で別々にされているが、ＸＭＬは、ＸＭＬ構造体を区別するためにラインを切断することはない。図２Ａにおけるツリー階層２０４は、図２ＢのＯＲＧ  ＸＭＬのためのデータオブジェクトモデル（ＤＯＭ）に対応する。
【００３２】
なお、ｍｇｒ列は、ＸＭＬ構造体のいずれかに対応していなくてもよく、マネージャと監督される従業員の関係は、入れ子にされたＸＭＬ要素の親子関係で示される。なお、このデータのＸＭＬ表現は、テーブル１に示されるＥＭＰテーブルにおける同じデータの表現と比較すると、むしろ冗長である。
【００３３】
シーケンスオペレータ
シーケンスオペレータは、ＸＭＬ型の子インスタンスの集合を、ＸＭＬ文書またはフラグメントから生成するのに役立つ。説明のために、ＥＬＩＳＴ文書が、ファイルＥＬＩＳＴ．ｘｍｌに記憶され、従業員のリストを含み、テーブル２ａに示されるＸＭＬ型のインスタンスとして表わされるものと仮定する。加えて、ＥＭＰＬＯＹＥＥ  ＸＭＬ要素をＸＭＬ型の別個のインスタンスとして操作することが望ましいと仮定する。
【００３４】
【表２】
0004516566.tif 000003
【００３５】
標準ＳＱＬ／ＸＭＬ関数、ＥＸＴＲＡＣＴは、ＥＭＰＬＯＹＥＥ  ＸＭＬ要素を列挙するＸＭＬ型のインスタンスを生成することができる。たとえば、コマンドＥＸＴＲＡＣＴ（‘ＥＬＩＳＴ．ｘｍｌ’、‘ＥＬＩＳＴ／ＥＭＰＬＯＹＥＥ’）は、ＸＭＬ要素ＥＭＰＬＯＹＥＥをＥＬＩＳＴ．ｘｍｌ文書から抽出し、テーブル２ｂに示されるＸＭＬ構造体を表わすＸＭＬ型のインスタンスを結果として生成する。このインスタンスにおいて、すべての従業員は第１世代の子ＸＭＬ要素である。たとえば、従業員Ｌｉｎｄａは、ライン１−３の要素によって表わされ、従業員Ｃｈａｒｌｅｓはライン４−６の要素によって表わされる。単一のルート要素はないが複数のＸＭＬ要素がルートレベルにあるため、このインスタンスはＸＭＬ文書というよりもむしろフラグメントを表わす。
【００３６】
【表３】
0004516566.tif 000004
【００３７】
各従業員についてＸＭＬ型の別々のインスタンスを生成するには、テーブル２ｂに表わされる出力文書から、ＸＭＬ型のインスタンスのシーケンスを生成することが望ましい。このＸＭＬ型のインスタンスのシーケンスは、テーブルに記憶するためまたはＦＲＯＭ句において一時的に使用するためのＸＭＬ型のインスタンスのソースとして扱われることができる。シーケンス関数を、ＸＭＬ型のインスタンスの集合生成のために用いることが必要である。たとえば、テーブル２ｂの出力文書から生成されたＸＭＬ型のインスタンスの集合は、テーブル３ａに示されている。これらのインスタンスは、出力ＸＭＬ文書の要素の順序に対応する順序で示される。
【００３８】
【表４】
0004516566.tif 000005
【００３９】
本発明のこの局面の実施例に従って、ＸＭＬＳｅｑｕｅｎｃｅオペレータが提供され、このオペレータは、テーブル２ｂに示されているようなＸＭＬ構造体を表わすＸＭＬ型インスタンスに対して機能し、テーブル３ａに示されているようなＸＭＬ型のインスタンスの順序付けられた文書の集合を生成する。
【００４０】
図３は、一実施例に従い、ＸＭＬ型インスタンスの集合を生成するための方法３００の概要を示すフロー図である。ステップが図３に示され、これに続く特定の順序のフロー図があるが、他の実施例では、これらのステップは異なる順序で実施されても、時間的に重複するように実施されてもよい。
【００４１】
ステップ３０２において、ＳＱＬステートメントが、ＸＭＬ構造体を表わすＸＭＬ型オペランドに対して機能するＸＭＬＳｅｑｕｅｎｃｅオペレータと共に、受取られる。たとえば、ＳＱＬステートメントＳ１ａが、以下のように受取られる。
【００４２】
【数１】
0004516566.tif 000006
【００４３】
ステップ３１０において、ＸＭＬＳｅｑｕｅｎｃｅオペレータは、オペランドの子ノードに対応するＸＭＬ型のインスタンスを含む、順序付けられた集合を生成することによって、評価される。たとえば、ＸＭＬＳｅｑｕｅｎｃｅは、テーブル２ｂのＸＭＬ構造体を生成するオペランドＥＸＴＲＡＣＴ（‘ＥＬＩＳＴ．ｘｍｌ’、‘ＥＬＩＳＴ／ＥＭＰＬＯＹＥＥ’）に対して機能する。ＸＭＬＳｅｑｕｅｎｃｅは、テーブル２ｂに示されたオペランドの子ノードに対応するテーブル３ａに示されたＸＭＬ型のインスタンスを有する、順序付けられた集合の生成によって、評価される。ステートメントＳ１におけるオペランドは、ＥＸＴＲＡＣＴ関数からのＸＭＬ型出力のインスタンスである。これ以外の実施例では、オペランドは、ＸＭＬファイルまたはＸＭＬデータを保持する他のデータ構造でもよい。
【００４４】
このように、この方法は、ＳＱＬ対応のＤＢＭＳにおけるＸＭＬデータの操作を向上させる宣言ステートメントにおいて使用するための、ＸＭＬＳｅｑｕｅｎｃｅオペレータを提供する。
【００４５】
上記の例のように、オペランドの子ノードすべてが、同じ型のＸＭＬ要素である必要はない。たとえば、ＸＭＬ要素ＥＭＰＬＯＹＥＥに対して機能するＸＭＬＳｅｑｕｅｎｃｅは、ＸＭＬ型の２つのインスタンスを生成し、一方はＸＭＬ要素ＥＮＡＭＥを表わし、第２のものはＸＭＬ要素ＥＩＮＦＯを表わす。
【００４６】
ＸＭＬＳｅｑｕｅｎｃｅを用いると、何らかの基準を満たすサブ要素のみが、別々のインスタンスとして容易に出力される。たとえば、ステートメントＳ１ａにおけるＸＰａｔｈ表現を変形してステートメントＳ１ｂにし、ＥＮＯが４よりも小さいことを示す述語「［ＥＮＯ＜４］」を含むようすることができる。
【００４７】
【数２】
0004516566.tif 000007
【００４８】
この変形によって、テーブル３ｂに示されるＸＭＬ型のインスタンスの集合が生成される。
【００４９】
【表５】
0004516566.tif 000008
【００５０】
別のアプリケーション例では、ＥＸＴＲＡＣＴＶＡＬＵＥ関数を用いて、ステートメントＳ１ｃに従い、所与の範囲の従業員番号を有する従業員の名前を抽出することができる。
【００５１】
【数３】
0004516566.tif 000009
【００５２】
この変形によってテーブル３ｃに列挙されたテキストの値の集合が生成される。
【００５３】
【表６】
0004516566.tif 000010
【００５４】
階層シーケンスオペレータ
状況によっては、ＸＭＬ構造体における階層情報を廃棄しないシーケンスが望ましいことがある。ＸＭＬＳｅｑｕｅｎｃｅは、この目的のためには、すべての場合において適切という訳ではない。説明のために、ＯＲＧ文書がファイルＯＲＧ．ｘｍｌに記憶されると仮定し、かつ、ＯＲＧ文書における従業員のリストを生成し従業員をＸＭＬ型の別々のインスタンスとして操作するのが望ましいと仮定する。たとえば、ＸＭＬＳｅｑｕｅｎｃｅがＯＲＧ．ｘｍｌに記憶されたＸＭＬ文書に対して直接機能する場合、ルートノードＬｉ
ｎｄａに対応する１つの行のみがその子孫すべてと共に、生成されるであろう。
【００５５】
図４Ａは、一実施例に従う、追加の階層情報を有するＸＭＬ型のＳＱＬ構造体の集合を生成するための方法４００の概要を示すフロー図である。
【００５６】
ステップ４０２において、ＳＱＬステートメントが、ＸＭＬオペランドに対して機能するＨｉｅｒＸＭＬＳｅｑｕｅｎｃｅオペレータと共に受取られる。たとえば、ＳＱＬステートメントＳ２は以下に示されるように受取られる。
【００５７】
【数４】
0004516566.tif 000011
【００５８】
ステップ４１０において、ＨｉｅｒＸＭＬＳｅｑｕｅｎｃｅオペレータは、オペランドの子孫ノードすべてに対応するＸＭＬ型のインスタンスを含み、かつ、ツリー階層における子孫ノード各々のレベルを含む、順序付けられた集合を生成することによって、評価される。たとえば、ＨｉｅｒＸＭＬＳｅｑｕｅｎｃｅは、図２Ｂに示されるオペランド‘ＯＲＧ．ｘｍｌ’に対して機能する。ＨｉｅｒＸＭＬＳｅｑｕｅｎｃｅは、階層内でのレベル、および、図２Ｂに示されるオペランドの子孫ノードに対応するＸＭＬ型のインスタンスを備えた、テーブル４に示す順序付けられた集合を生成することによって、評価される。実施例によっては、別のオペランドが含められて、集合に含められるＸＭＬ型のインスタンスに対応するＥＭＰＬＯＹＥＥといった要素型を示す。
【００５９】
【表７】
0004516566.tif 000012
【００６０】
このように、この方法は、ＸＭＬ構造体における階層関係を、この構造体がＸＭＬ型のインスタンスの集合に変換される際に保存する、宣言ステートメントのためのＨｉｅｒＸＭＬＳｅｑｕｅｎｃｅオペレータを提供することがわかる。
【００６１】
図４Ｂは、図４Ａの方法のステップ４１０の一実施例を示すフロー図である。ステップ４１２において、いくつかの変数が初期化される。現在のレベルを示す変数は、値０で初期化される。ここで示す実施例において、レベルを示すデータは、ルートレベルにおいて値１を有し、ツリーにおいて世代を１つ下る毎に１つずつ増大する。これ以外の実施例では、レベルを１より大きい増分、素数、アルファベットの文字、または予め定められた数字の記憶されたシーケンスといった、他のデータで示すことができる。前のノードを示す変数はゼロ（ｎｕｌｌ）に設定されて、このツリーの中で既に処理されているノードはないことを示す。
【００６２】
ステップ４１４において、このツリー内の次のノードの次のＸＭＬ構造体が、文書の順序で受取られる。たとえば、Ｌｉｎｄａを表わす要素を開始するためのＸＭＬ構造体は、図２Ｂのライン３から、属性「ＥＮＯ＝１」を有するタグ「<ＥＭＰＬＯＹＥＥ…>」を含めて、受取られる。ここで示す実施例では、図２Ｂのライン４からのサブ要素ＥＮＡＭＥ
およびＥＩＮＦＯも受取られる。
【００６３】
ステップ４２０で、次のＸＭＬ構造体が、前のノードの子ノードであるのか前のノードがゼロ（ｎｕｌｌ）であるのかが判断される。たとえば、次のＥＭＰＬＯＹＥＥ要素の開始タグが、前のノードに対応する要素の終了タグの前にあるならば、次の要素は子ノードである。そうであれば、制御はステップ４２２に進む。そうでなければ、制御はステップ４３０に進む。
【００６４】
ステップ４２２で、現在のレベルが増分され、順序付けられた集合の行が生成される。たとえば、現在のレベルは０から１に変更され、インスタンスの集合の最初の要素を表わすテーブル４の最初の行が、サブ要素ＥＮＡＭＥおよびＥＩＮＦＯの内容と共に生成される。制御は次にステップ４５０に進む。
【００６５】
ステップ４５０において、前回のノードを示す変数がリセットされて、現在の次のノードを示す。制御は次にステップ４１４に進み、次の新たなノードがもしあれば受取る。たとえば、ステップ４２２において開始タグおよびノード２１０の要素を処理した後、ノード２１０がステップ４５０の間に前のノードにされる。
【００６６】
ここで示す実施例において、ＯＲＧ．ｘｍｌ文書中の次の４つのＸＭＬ要素はすべて、前のノードの子であるため、ステップ４２０、４２２、４５０が各要素について繰返される。レベルは毎回、値２に、次に３に、次に４に、次に５に増分される。
【００６７】
ステップ４３０において、次のノードが前のノードの兄弟であるかどうか判断される。たとえば、次のＥＭＰＬＯＹＥＥ要素の開始タグが、前のノードに対応する要素の終了タグの後かつそれ以外の終了タグの前に現れれば、次の要素は兄弟ノードである。次の要素が兄弟ノードであれば、制御はステップ４３２に進む。そうでなければ、制御はステップ４４０に進む。
【００６８】
ステップ４３２において、現在のレベルは変更されず、順序付けられた集合のもう１つの要素が生成される。たとえば、Ｃｅｔｉｎを表わす兄弟ノード２８０が、Ｖｉｓｈｎｕを表わすノード２７０の後に現れれば、現在のレベルは５である。このレベルの値は変更されず、テーブル４の６番目の行が、Ｃｅｔｉｎを表わすノードのために、サブ要素ＥＮＡＭＥおよびＥＩＮＦＯの内容とともに、生成される。制御は次にステップ４５０に進み、上記のように、前のノードを示す変数をリセットし、ステップ４１４に戻って追加のＸＭＬ構造体を受取る。
【００６９】
ここに示す実施例では、ライン１９で始まりＭａｒｙのノード２５０を表わす、ＯＲＧ．ｘｍｌ文書中の次のＸＭＬ要素は、子でもなく、Ｃｅｔｉｎの前のノード２８０の兄弟でもないため、制御はステップ４４０に進む。
【００７０】
ステップ４４０で、次のノードが祖先であるのか、前のノードの祖先の兄弟であるのかが、判断される。たとえば、次のＥＭＰＬＯＹＥＥ要素の開始タグに、前のノードに対応する要素の終了タグの後かつ追加の終了タグの後に出会ったならば、次の要素は祖先または祖先の兄弟である。次の要素が祖先または祖先の兄弟であるならば、制御はステップ４３２に進む。そうでなければ、エラーが表示され制御はステップ４９０に進んでエラーを処理する。
【００７１】
ステップ４４２において、現在のレベルが、次のノードのＸＭＬ構造体の開始タグの前に出会った追加の終了タグの数に関係する量だけ、減分される。順序付けられた集合の別の要素が、適切に減分されたレベルおよびＸＭＬ型のインスタンスとともに、生成される
。たとえば、Ｍａｒｙを表わす祖先兄弟ノード２５０に、Ｃｅｔｉｎを表わすノード２８０の後に出会ったならば、２つの追加の従業員およびタグに（図２Ｂのライン１７および１８で）出会い、現在のレベルは、古い値５から２だけ減分されて新たな値３になる。Ｍａｒｙを表わすノードのためにテーブル４において７番目の行が、サブ要素ＥＮＡＭＥおよびＥＩＮＦＯの内容とともに、生成される。制御は次にステップ４５０に進み、上記のように、前のノードを示す変数をリセットし、ステップ４１４に戻って追加のＸＭＬ構造体を受取る。
【００７２】
このようにして続けることによって、テーブル４のＸＭＬ型のインスタンスおよび関連するレベルが、ＸＭＬオペランドＯＲＧ．ｘｍｌから生成される。
【００７３】
階層集約オペレータ
状況によっては、ＸＭＬ型インスタンスの集合が組合されて、祖先ＸＭＬ構造体を表わす単一のインスタンスにされる。標準ＸＭＬＡｇｇ関数を用いて、複数のＸＭＬ型からのＸＭＬ出力を組合せるＸＭＬインスタンスを生成する。この集合から生成されたすべてのＸＭＬインスタンスは、集約ＸＭＬインスタンスの兄弟として現れる。たとえば、テーブル３ａの集合におけるＸＭＬ型は、ＸＭＬＡｇｇを用いて集約し、テーブル２ｂに示されるＸＭＬインスタンスを生成することができる。
【００７４】
状況によっては、集約するＸＭＬ型のインスタンスと関連する階層情報を組込んだ集約ＸＭＬインスタンスが望ましい場合がある。たとえば、テーブル４のレベル情報を用いて図２Ｂに示されるＸＭＬ  ＯＲＧ文書中の入れ子にされたＸＭＬ要素を生成すべきである。
【００７５】
図５Ａは、一実施例に従い、階層情報を有するＸＭＬ型のインスタンスの集合を集約するための方法５００の概要を示すフロー図である。
【００７６】
ステップ５０２において、ＳＱＬステートメントが、集合からのＸＭＬ型のオペランドおよびレベルに対して機能するＨｉｅｒＸＭＬＡｇｇｒｅｇａｔｅオペレータと共に受取られる。説明のために、テーブル４の行は、ＶＥＭＰと呼ばれるＸＭＬ型のビューから入手できるものと仮定する。テーブルＥＭＰからＶＥＭＰを生成するためのクエリは、後のセクションでより詳細に説明する。たとえば、ＳＱＬステートメントＳ３は、以下に示されるように受取られる。
【００７７】
【数５】
0004516566.tif 000013
【００７８】
ステップ５１０において、ＨｉｅｒＸＭＬＡｇｇｒｅｇａｔｅオペレータは、レベルオペランドに依存する、ＸＭＬ構造体の階層のレベルにある祖先ＸＭＬ構造体を表わすＸＭＬ型のインスタンスに、次のＸＭＬ型のオペランドを挿入することによって、評価される。たとえば、ＨｉｅｒＸＭＬＡｇｇｒｅｇａｔｅは、ＬＥＶＥＬの値に基づく階層のレベルにある一時的出力ＸＭＬ文書に、次のＥＭＰＬＯＹＥＥを挿入することによって、ＶＥＭＰからのＸＭＬ型オペランドＥＭＰＬＯＹＥＥおよびＶＥＭＰからのオペランドＬＥＶＥＬに対して機能する。出力ＸＭＬ文書またはフラグメントは、図２Ｂのライン３から２９に対応する。
【００７９】
このように、上記の方法は、ＸＭＬ型のインスタンスに関連する階層情報を、これらの
インスタンスが組合されて１つのＸＭＬ構造体を表わす１つのインスタンスにされるときに、保存する、宣言ステートメントのＨｉｅｒＸＭＬＡｇｇｒｅｇａｔｅオペレータを提供する。
【００８０】
図５Ｂは、図５Ａの方法のステップ５１０の一実施例を示すフロー図である。ステップ５１２において、いくつかの変数が初期化される。前のレベルを示す変数は値０で初期化される。前のノードを示す変数は、既に処理されたツリーのノードがないことを示すゼロ（ｎｕｌｌ）に設定される。
【００８１】
ステップ５１４において、ＸＭＬ型の次のインスタンスおよびツリーにおける関連レベルが、文書の順序で受取られる。たとえば、ＥＮＯ、ＥＮＡＭＥおよびＥＩＮＦＯの値を含み、関連レベル１である、Ｌｉｎｄａを表わすＸＭＬ型のＥＭＰＬＯＹＥＥインスタンスは、テーブル４の行１から受取られる。この関連レベルの値は、現在のレベルを表わす変数に記憶される。
【００８２】
ステップ５２０で、現在のレベルが１レベルだけ増分された前のレベルと等しいかどうか判断される。この条件を満たすレベルのＸＭＬ型の次のインスタンスは、前のノードの子ノードを表わす。そうであれば、制御はステップ５２２に進む。そうでなければ、制御はステップ５３０に進む。たとえば、現在のレベル１は、前のレベル０に１を足したものに等しいため、制御はステップ５２２に進む。
【００８３】
ステップ５２２において、ＸＭＬ型の次のインスタンスが、前の構造体の子として挿入される。たとえば、開始タグが、次のＸＭＬ構造体に対して、前のノードの前のＸＭＬ構造体に対して挿入された終了タグの前に、挿入される。ここで示す実施例では、ＸＭＬ型ＥＭＰＬＯＹＥＥ（属性ＥＮＯの値を含む）に対応するＸＭＬ構造体ＥＭＰＬＯＹＥＥの開始タグは、ＸＭＬ文書またはフラグメントを表わすＸＭＬ型の出力に加えられる。ここで示す実施例では、ＥＮＡＭＥおよびＥＩＮＦＯ要素に対する開始および終了タグならびに値も、出力に挿入される。このように、図２Ｂのライン３および４に対応するラインが、出力に挿入される。制御は次にステップ５５０に進む。
【００８４】
ステップ５５０では、前のノードを示す変数がリセットされて、現在の次のノードを示す。制御は次にステップ５５２に進む。
【００８５】
ステップ５５２では、集約させるべきＸＭＬ型の最後のインスタンスが既に受取られているかどうか判断される。そうでなければ、制御はステップ５１４に戻ってＸＭＬ型の次の新たなインスタンスを受ける。集約させるＸＭＬ型の最後のインスタンスを既に受け取っていれば、制御はステップ５５４に進み、このセクションにおいて後により詳細に説明するように、出力の生成を終了する。
【００８６】
ここで示す実施例では、テーブル４のＸＭＬ型の次の４つのインスタンスはすべて、そのレベルを１だけ増し、値２、次に値３、次に値４、次に値５となり、すべてが前のノードの子ノードを表わすことを示し、このため、各々についてステップ５２０、５２２、５５０、５５２が繰返される。結果として、図２Ｂのライン５−１２に対応するラインが出力に挿入される。
【００８７】
ステップ５３０において、現在のレベルが前のレベルと等しいかどうか判断される。ＸＭＬ型の次のインスタンスであってこの条件を満たすレベルのインスタンスは、前のノードの兄弟ノードを表わす。そうであれば、制御はステップ５３２に進む。そうでなければ、制御はステップ５４０に進む。たとえば、従業員Ｃｅｔｉｎのテーブル４の６番目の行に対して機能する間、現在のレベル５は前のレベル５と等しいため、制御はステップ５３
２に進む。
【００８８】
ステップ５３２において、ＸＭＬ型の次のインスタンスが、前の構造体の兄弟として挿入される。たとえば、前のノードの前のＸＭＬ構造体に対する終了タグが、次のＸＭＬ構造体に対する開始タグを挿入する前に、挿入される。ここに示す実施例では、ＸＭＬ構造体ＥＭＰＬＯＹＥＥの終了タグは、従業員ＣｅｔｉｎのＸＭＬ構造体ＥＭＰＬＯＹＥＥに対する開始タグが出力に追加される前に、挿入される。ここに示す実施例では、ＥＭＰＬＯＹＥＥの開始タグは、属性ＥＮＯについての値を含み、ＥＮＡＭＥおよびＥＩＮＦＯ要素についての開始および終了タグならびに値も、出力ＸＭＬ文書に挿入される。このように、図２Ｂのライン１３−１５に対応するラインが出力に挿入される。制御は次にステップ５５０に進む。
【００８９】
ステップ５４０において、現在のレベルが前のレベルよりも小さいどうか判断される。この条件を満たすレベルのＸＭＬ型の次のインスタンスは、祖先または前のノードの祖先ノードの兄弟を表わす。現在のレベルが小さければ、制御はステップ５４２に進む。そうでなければ、制御はステップ５９０に進む。たとえば、Ｍａｒｙという従業員についてテーブル４の７番目の行に対して機能する間、現在のレベル３は前のレベル５よりも小さいため、制御はステップ５４２に進む。
【００９０】
ステップ５４２において、１つ以上の前のＸＭＬ構造体の終了タグが挿入される。ここに示す実施例では、ＸＭＬ構造体ＥＭＰＬＯＹＥＥの終了タグが挿入され、前のレベルは、現在のレベルが前のレベルよりも小さい限りにおいて減分される。たとえば、従業員Ｍａｒｙについてのテーブル４の７番目の行に対して機能している間、現在のレベルが３のとき、２つの終了タグが挿入され、前のレベルは５から４、４から３と、２度減分される。このように、図２Ｂのライン１６−１７に対応するラインが出力に挿入され、前のレベルは３に設定される。ここに示す実施例では、現在のレベルが前のレベルよりも小さくない場合、制御はステップ５１４に進む。他の実施例では、現在のレベルが前のレベル以上のとき、制御はステップ５２０、５３０または５３２に進み得る。このように、ライン１８−２０に対応するラインが出力に挿入される。
【００９１】
制御は、現在のレベルよりも低い２以上の子孫世代を生成しようと試みるときに、ステップ５９０に進む。このようなレベルの変更は、ＸＭＬ文書において妥当ではない。ステップ５９０において、エラー処理が行なわれる。たとえば、ＸＭＬ構造体生成を終了させ、データベースのユーザに対し警告メッセージが送られる。
【００９２】
このように続けることにより、ライン３から２６のＸＭＬ構造体が、テーブル４のＸＭＬ型オペランドから生成される。ライン２６の挿入後、ステップ５５２において、テーブル４にＸＭＬ型のインスタンスはもうないと判断される。制御はステップ５５４に進む。
【００９３】
ステップ５５４において、１つまたはそれよりも多い、前のＸＭＬ構造体の終了タグが挿入される。ここに示される実施例では、ＸＭＬ構造体ＥＭＰＬＯＹＥＥの終了タグが挿入され、前のレベルは、現在のレベルがゼロ（０）よりも小さい限りにおいて、減分される。たとえば、従業員Ｓｔｅｖｅに対するテーブル４の９番目の行に関する操作の後、現在のレベルは３である。したがって、３つの終了タグが挿入され、前のレベルは３から０へと３度減分される。このように、図２Ｂのライン２７−２９に対応するラインは、出力ＸＭＬ文書に挿入される。
【００９４】
集約オペランドのレベル生成
ＨｉｅｒＸＭＬＡｇｇｒｅｇａｔｅオペレータを使用するには、レベルオペランドが必要である。このレベルオペランドの値は、テーブル１のような階層が暗に示されるＳＱＬ
テーブルから、ＳＱＬ「ＣＯＮＮＣＴ  ＢＹ」句を用いて生成することができる。たとえば、テーブル４に示されるレベルを備えたＳＱＬビューＶＥＭＰは、テーブル１に示されるＥＭＰテーブルから、以下のＳＱＬステートメントＳ４を用いて、生成することができる。
【００９５】
【数６】
0004516566.tif 000014
【００９６】
上記のステートメントにおいて、ＣＯＮＮＣＴ  ＢＹ句によって、擬似列「レベル」が生成されて、生成された階層におけるレベルを示す。
【００９７】
この階層は、ＭＧＲ列の値がゼロ（ｎｕｌｌ）であるＥＭＰの行で始まる。次の行は、ＭＧＲ列の値が前の行のＥＮＯ列の値に等しいテーブルの、次の行である。このプロセスにより、ＸＭＬ文書の順序と等価である、予め順序付けられた深さの第１の階層で１組の行が生成される。たとえば、親の行が、その子うちいずれかの行が生成される前に生成され、１つの兄弟のすべてのリーフノードの行が、次の兄弟およびその子孫のいずれかの行が生成される前に、生成される。兄弟についての行は、下にある行の組において兄弟が現れる階層で生成される。
【００９８】
このように、ステートメントＳ４は、テーブル４に示されるＶＥＭＰビューを生成する。ＶＥＭＰを使用してＨｉｅｒＸＭＬＡｇｇｒｅｇａｔｅオペレータのレベルオペランドの値を得ることができる。さらに、「ＣＲＥＡＴＥＶＩＥＷ  ＶＥＭＰ  ＡＳ」行の後のステートメントＳ４の部分をサブクエリで用いて、ＨｉｅｒＸＭＬＡｇｇｒｅｇａｔｅオペレータにおけるレベルオペランドの値を生成することができる。
【００９９】
ハードウェア概要
図６は、本発明の一実施例を実現し得るコンピュータシステム６００を示すブロック図である。コンピュータシステム６００は、情報をやり取りするためのバス６０２またはそれ以外の通信機構と、バス６０２と結合され情報を処理するためのプロセッサ６０４とを含む。コンピュータシステム６００は、バス６０２に結合され、情報およびプロセッサ６０４によって実行される命令を記憶するための、ランダムアクセスメモリ（ＲＡＭ）またはそれ以外の動的記憶装置のようなメインメモリ６０６も含む。メインメモリ６０６を用いて、プロセッサ６０４が実行すべき命令の実行中に一時変数またはそれ以外の中間情報を記憶してもよい。コンピュータシステム６００はさらに、バス６０２に結合され、静的情報およびプロセッサ６０４に対する命令を記憶するための読出し専用メモリ（ＲＯＭ）６０８またはそれ以外の静的記憶装置を含む。磁気ディスクまたは光ディスクといった記憶装置６１０が与えられ、情報および命令の記憶のためにバス６０２に結合される。
【０１００】
コンピュータシステム６００は、バス６０２を介し、情報をコンピュータのユーザに対して表示するための陰極線管（ＣＲＴ）といったディスプレイ６１２に結合されてもよい。英数字およびそれ以外のキーを含む入力装置６１４が、情報およびコマンド選択をプロセッサ６０４に伝えるためにバス６０２に結合される。別のタイプのユーザ入力装置は、方向情報およびコマンド選択をプロセッサ６０４に伝えるためかつカーソルのディスプレイ６１２上での動きを制御するための、マウス、トラックボール、またはカーソル方向キーといった、カーソルコントロール６１６である。この入力装置は典型的に、この装置が平面における位置を特定できるようにする、第１の軸（たとえばＸ）および第２の軸（たとえばＹ）という２つの軸における２つの自由度を有する。
【０１０１】
本発明は、本明細書において説明した技術を実現するためのコンピュータシステム６００の使用に関する。本発明の一実施例に従うと、これらの技術は、コンピュータシステム６００によって、メインメモリ６０６に含まれる１つまたはそれよりも多い命令の１つまたはそれよりも多いシーケンスを実行するプロセッサ６０４に応答して、実施される。このような命令は、記憶装置６１０といったもう１つのコンピュータで読取可能な媒体からメインメモリ６０６に読込まれてもよい。メインメモリ６０６に含まれる命令のシーケンスを実行することによって、プロセッサ６０４は本明細書で説明する処理ステップを実行する。これに代わる実施例では、配線で接続された回路を、ソフトウェア命令の代わりにまたはソフトウェア命令と共に用いて、本発明を実現してもよい。このように、本発明の実施例はハードウェア回路およびソフトウェアの特定の組合せに限定されない。
【０１０２】
ここで使用している「コンピュータで読取可能な媒体」は命令をプロセッサ６０４に対して実行のために提供することに関係する何らかの媒体を指す。このような媒体は、不揮発性媒体、揮発性媒体および送信媒体を含む、多くの形態をとり得るが、これらに限定されるものではない。不揮発性媒体は、例として、記憶装置６１０のような光または磁気ディスクを含む。揮発性媒体は、メインメモリ６０６のような動的メモリを含む。送信媒体は、バス６０２を含むワイヤを含め、同軸ケーブル、銅線および光ファイバを含む。送信媒体は、たとえば無線および赤外線データ通信中に生成される音波または光波の形態をとることもできる。
【０１０３】
たとえば、コンピュータで読取可能な媒体の一般的な形態は、コンピュータがそこから読取ることができる、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープもしくはそれ以外の磁気媒体、ＣＤ−ＲＯＭ、それ以外の光媒体、せん孔カード、紙テープ、孔のパターンを有するそれ以外の物理媒体、ＲＡＭ、ＰＲＯＭおよびＥＰＲＯＭ、フラッシュＥＰＲＯＭ，それ以外のメモリチップもしくはカートリッジ、以下で説明する搬送波、または、それ以外の何らかの媒体を含む。
【０１０４】
種々の形態の、コンピュータで読取可能な媒体が、１つまたはそれよりも多い命令の１つまたはそれよりも多いシーケンスを実行のためにプロセッサ６０４に送るのに関係してもよい。たとえば、命令は最初、遠隔にあるコンピュータの磁気ディスク上にあってもよい。この遠隔コンピュータは、命令をその動的メモリにロードし、この命令を、モデムを用いて電話線で送ることができる。コンピュータシステム６００のローカルモデムは、電話線上のデータを受取り、赤外線送信機を用いてこのデータを赤外線信号に変換することができる。赤外線検出器は、この赤外線信号で運ばれるデータを受信し、適切な回路がこのデータをバス６０２上に置くことができる。バス６０２は、このデータをメインメモリ６０６に送り、ここから、プロセッサ６０４が命令を検索し実行する。メインメモリ６０６が受信する命令は、任意として、プロセッサ６０４による実行前または実行後のいずれかに、記憶装置６１０に記憶させてもよい。
【０１０５】
コンピュータシステム６００は、バス６０２に結合された通信インターフェイス６１８
も含む。通信インターフェイス６１８は、ローカルネットワーク６２２に接続されたネットワークリンク６２０に結合する双方向データ通信を提供する。たとえば、通信インターフェイス６１８は、データ通信接続を対応するタイプの電話線に提供する、サービス総合ディジタル網（ＩＳＤＮ）カードまたはモデムであってもよい。別の例として、通信インターフェイス６１８は、データ通信接続を互換性のあるＬＡＮに提供する、ローカルエリアネットワーク（ＬＡＮ）カードであってもよい。無線リンクを実現してもよい。このような実現化例いずれにおいても、通信インターフェイス６１８は、種々のタイプの情報を表わすデジタルデータストリームを運ぶ、電気、電磁または光信号の送受信を行なう。
【０１０６】
ネットワークリンク６２０は典型的に、データ通信を１つまたはそれよりも多いネットワークを通して他のデータ装置に提供する。たとえば、ネットワークリンク６２０は、ローカルネットワーク６２２を通して、ホストコンピュータ６２４にまたはインターネットサービスプロバイダ（ＩＳＰ）６２６が操作するデータ機器に、接続を提供してもよい。次にＩＳＰ６２６は、データ通信サービスを、現在一般的に「インターネット」６２８と呼ばれるワールドワイドパケットデータ通信ネットワークを通して提供する。ローカルネットワーク６２２およびインターネット６２８は双方ともに、デジタルデータストリームを搬送する電気、電磁または光信号を用いる。種々のネットワークを通した信号および、デジタルデータをコンピュータシステム６００との間でやりとりするネットワークリンク６２０上にあって通信インターフェイス６１８を通る信号は、情報を運ぶ搬送波の形態の例である。
【０１０７】
コンピュータシステム６００は、プログラムコードを含む、メッセージの送信およびデータの受信を、ネットワーク、ネットワークリンク６２０および通信インターフェイス６１８を通して行なうことができる。インターネットの例では、サーバ６３０は、インターネット６２８、ＩＳＰ６２６、ローカルネットワーク６２２および通信インターフェイス６１８を通して、アプリケーションプログラムの要求されたコードを送信し得る。
【０１０８】
受信したコードは、受信時にプロセッサ６０４が実行し、かつ／または記憶装置６１０に記憶させるか、後で実行するために他の不揮発性記憶装置に記憶させてもよい。このようにして、コンピュータシステム６００は、アプリケーションコードを搬送波の形で得ることができる。
【０１０９】
本明細書において、本発明についてその具体的な実施例と関連させながら説明してきた。しかしながら、これらの実施例には、本発明の広い精神および範囲から逸脱することなく、種々の変形および変更が加えられ得ることは明らかであろう。したがって、本明細書および図面は、限定的な意味においてではなく例示として捉えられるべきである。
【図面の簡単な説明】
【０１１０】
【図１】一実施例に従う、ＸＭＬ文書の内容をオブジェクト−リレーショナルデータベースに記憶する、ＸＭＬ文書、ＸＭＬスキーマおよびオブジェクト−リレーショナル構造体を示すブロック図である。
【図２Ａ】ツリー階層の一例を示すブロック図である。
【図２Ｂ】図２Ａのツリー階層に対応する、一例としてのＸＭＬ文書の一部２０１におけるＸＭＬ構造体を示すブロック図である。
【図３】一実施例に従う、ＸＭＬ型ＳＱＬ構造体の集合を生成するための方法の概要を示すフロー図である。
【図４Ａ】一実施例に従う、追加の階層情報を有するＸＭＬ型ＳＱＬ構造体の集合を生成するための方法の概要を示すフロー図である。
【図４Ｂ】図４Ａの方法の１つのステップの一実施例を示すフロー図である。
【図５Ａ】一実施例に従う、階層情報を有するＸＭＬ型ＳＱＬ構造体の集合を集約させるための方法の概要を示すフロー図である。
【図５Ｂ】図５Ａの方法の１つのステップの一実施例を示すフロー図である。
【図６】本発明の一実施例を実現し得るコンピュータシステムを示すブロック図である。
【図１】
0004516566.tif 000015
【図２Ａ】
0004516566.tif 000016
【図２Ｂ】
0004516566.tif 000017
【図３】
0004516566.tif 000018
【図４Ａ】
0004516566.tif 000019
【図４Ｂ】
0004516566.tif 000020
【図５Ａ】
0004516566.tif 000021
【図５Ｂ】
0004516566.tif 000022
【図６】
0004516566.tif 000023