リレーショナルデータベースからXMLを生成する

時には、他の人が作成した例を参考にすることで、プロジェクトを迅速に開始できることがあります。しかし、その一方で、より良い、より効率的な解決策を見逃してしまう可能性があります。最近の記事では、 クラウド上のXML, 私たちは、それを使用しました DatabaseSpy ローカルのMySQLデータベースと、クラウド上のAmazon Relational Database Serviceに接続します。以下に示すように、SQLのSELECT文でConcat()関数を使用し、XML形式の出力データを、XML形式でないデータから生成しました。

私たちのSELECT文は、MySQLのXMLサポートに関するドキュメントに記載されている例を参考に作成しました。 この発言が解決しようとしている問題について、もう少し詳しく見ていきましょう。 DatabaseSpyの結果テーブル(上記のように表示されるもの)をコピーして、XMLSpyの編集ウィンドウに貼り付けることはできますが、結果テーブルだけでは、適切に構成されたXMLドキュメントは作成されません。 規定に従って適切に構成されていること W3Cによる定義, XMLドキュメントは、必ずルート要素を含んでいる必要があります。 他のすべての要素と論理構造は、必ずルート要素の中に配置される必要があります。 ルート要素は、XMLコンテンツ全体を包み込む役割を果たすものであり、これは、元の結果における各行をという要素で囲むのと同様です。 リレーショナルデータからXMLを作成するためのより良い方法 ルート要素を追加するために、結果を手動で編集する必要はありませんし、すでに複雑なSQLクエリを修正してルート要素を追加する必要もありません。 DatabaseSpyを使用すると、都市データなどが含まれるデータベースのテーブルから、適切に構造化されたXMLドキュメントを簡単にエクスポートできます。 データベースのExportダイアログでは、出力形式としてXML構造を選択し、データベースの階層構造から「cities」テーブルを選択し、出力先としてXMLSpyを指定することができます。 エクスポートダイアログの最下部にある「プレビュー」セクションでは、テーブルの内容をプレビューで確認できます。

「エクスポート」ボタンをクリックすると、DatabaseSpyは、テーブルの列名に基づいてXML要素名を付与してリレーショナルデータを整形し、その結果を直接XMLSpyに送信します。以下のスクリーンショットは、XMLSpyで開いたファイルの一部を示しています。画面下部の「メッセージ」ウィンドウは、ファイルが正しく構成されていることを確認しています。

DatabaseSpyは、ルート要素を提供し、データベーステーブルの列のデータ型を説明するコメントを追加しました。また、煩雑なConcat()関数を使用するSQL文を構築する必要はありませんでした。この記事は、以前に説明したConcat()関数の出力を完了するために必要な、シンプルなルート要素に関する要件に対応するために開始されました。しかし、実際のプロジェクトでリレーショナルデータベースからXMLへの変換が必要な場合、要件ははるかに複雑になる可能性があります。

Altova XMLSpy XMLSpyは、XML技術とリレーショナルデータを扱うために、主要なデータベースに直接接続できます。データベースの構造から簡単にXMLスキーマを作成したり、XMLスキーマからデータベーススキーマを作成したりできます。また、データベースに直接格納されたXMLデータに対して、XQueryやXPathの高度なエディタやデバッガを提供し、Microsoft SQL Server、IBM DB2、OracleデータベースにおけるXML機能に特化したサポートも提供しています。情報交換のためのXMLベースの標準をより多くの業界が採用・発展するにつれて、レガシーデータベースに格納されているデータをXMLに変換する必要性が高まっています。Altova MapForce データベースに接続し、リレーショナルデータをXMLスキーマと互換性のある形式にマッピングおよび変換することができます。

マッピング機能を使用すると、一度限りのデータ変換を実行できます。また、マッピングを保存しておき、後で再度開いて別の変換を実行することも可能です。さらに、必要に応じて、MapForceにマッピングに基づいてロイヤリティフリーのソースコードを生成させ、それを自プロジェクトに組み込むこともできます。

もし、Altovaのツールがリレーショナルデータベースから、どれほど高品質なXMLを生成できるか実際に試してみたい場合は、無料トライアル版Altova MissionKitからダウンロードしてください。