連載 SQL ServerでXMLを操作する
第2回:リレーショナルDBから取り出した
XML文書に、スタイルシートを適用する

SQL Server 2000に格納したデータをXML文書として取り出す方法として、今回はWebブラウザ上で動作するスクリプトを使ってみる。さらに、取り出したXML文書に対してXSLTスタイルシートを適用することで、XML文書を加工する方法も解説しよう。

富士ソフトABC株式会社
技術センター
2002/5/1


3. クライアントサイド・スクリプトでSQL Serverを操作する

 前回「リレーショナルDBからXML文書を取り出す」では、SQL Server 2000に格納されているデータをURLクエリで取り出し、Webブラウザで表示しました。今回は、スクリプトを使って取り出したデータにスタイルを適用し、Webブラウザ上に分かりやすく表示してみましょう。データの取り出しもURLクエリではなく、スクリプトを使用してみます。

サーバサイド・スクリプトとクライアントサイド・スクリプト

 SQL Server 2000からスクリプトを使ってXML文書を取り出し、Webブラウザに表示してみましょう。スクリプトはWebブラウザ上で動かすことにします。

 スクリプトと一言でいっても、さまざまな種類があり、いろいろな環境と目的に合わせたスクリプトが存在しています。例えば、マイクロソフトのInternet Information Services(IIS)で使用できるスクリプトは、VBScriptとJScript(JavaScriptのマイクロソフト版)です。IISでは、HTMLファイルをそのままWebブラウザに送信する以外に、Active Server Pages(ASP)ファイルをIIS上で実行し、その結果をWebブラウザにHTMLファイルとして送信する、といったことができます。こうしたスクリプトを一般にサーバサイド・スクリプトと呼びます。

 一方、スクリプトをHTMLファイル内に記述して、Webブラウザ上で実行させることもできます。この場合、JavaScript(もしくはJScript)が最も一般的に使われています。こうしたスクリプトを一般にクライアントサイド・スクリプトと呼びます。

 クライアントサイド・スクリプトは下記のように、<head></head>タグの中の<script></script>タグの中にスクリプトを記述します。

<html>
  <head>
    <script language="JScript"><!--
      … ここにスクリプトを記述 …
    --></script>
  </head>
  …

</html>

 今回は、クライアントサイド・スクリプトを利用してSQL Server 2000からデータをXML文書形式で取り出してみましょう。この例では、スクリプトをJScriptで記述しています。

スクリプトでデータを取り出す

 SQL Server 2000からデータを取り出すクライアントサイド・スクリプトを説明します。処理の手順は次のようになります。 これらをJScriptで記述して、Webブラウザ上で実行します。

ADOオブジェクトの作成
データベースのオープン
データの取り出し
取り出したデータのXML化
XMLデータの表示

(1)ADOオブジェクトの作成

 作成するオブジェクトは、ADOデータベースのコネクションのオブジェクトです。下記のように記述します。

var objCon = new ActiveXObject("ADODB.Connection");

(2)データベースのオープン

 作成したオブジェクトを使って、データベースをオープンします。記述は下記のとおりです。xxxの部分は、それぞれの環境に合わせて記述してください。

objCon.Open("uid=xxx;pwd=xxx;driver
={SQL Server};server=xxx;database=Person");

 ここではデータベースと接続するための情報を記述していますが、ODBCのデータソースを作成しても構いません。

(3)データの取り出し

 データの取り出しは、前回の記事でURLに記述したSELECT文をスクリプトに記述することで実行します。記述は下記のとおりです。

var objRec = objCon.Execute("
SELECT * From Person FOR XML AUTO ,ELEMENTS")

 オブジェクトobjRecには、SELECT文を実行した結果のレコードセットが格納されます。データベースに対して実行したSELECT文が、正常に終了してデータが取り出されているかをalert()を使って確認してみます。正常にデータが取り出されていれば、オブジェクトの0番目にデータが格納されています。では下記のように記述して実行してみます。

alert(objRec(0));

 データが取り出されていれば画面1のように表示されます。

画面1 スクリプトによってSQL Server 2000から取り出したデータ。JScriptのalert機能で表示しているため、ダイアログボックス上に表示されている。タグ付けはされているが、XML宣言などがないため、このままではXML文書とは呼べない

取り出したデータのXML文書化

(4)XML宣言とルート要素を加える

  取り出したデータはそのままではただのテキストデータでしかないので、XMLとして利用するためにはXML文書化する必要があります。記述は下記のとおりです。

 まずはデータにXML宣言とルート要素を加えます。

var strXML = "<?xml version=" + '"' + "1.0" + '"'
    + " encoding=" + '"' + "Shift_JIS" + '"' + "?>";
strXML = strXML + "<root>" + objRec(0) + "</root>";

 次にDOMオブジェクトを作成します。このときデータの取り扱いが、“同期”になるようにasyncを設定しておきます。

var objXML = new ActiveXObject("Microsoft.XMLDOM")
objXML.async = false;

 最後にDOMオブジェクトにデータを読み込みます。

objXML.loadXML(strXML);

 これでデータベースから取り出したデータがXML文書になりました。ここからは通常のXML文書として処理できます。

(5)XML文書の表示

 XML文書となったデータを表示してみます。先ほどと同じくalert()を使って確認します。今度は、DOMオブジェクトのデータなので下記のように記述します。

alert(objXML.xml);

 これまでの処理が正しく実行されていれば、画面2のように表示されます。

画面2 スクリプトによってSQL Server 2000から取り出したデータ。今度はXML宣言などが加わり、XML文書化されていることが分かるだろう。

 ここまで作成したSQL Serverからデータを取り出すクライアントサイド・スクリプトのサンプルファイルは、DataGet.htmlとしてダウンロードできます。

3/7

Index
SQL ServerでXMLを操作する
  SQL Server 2000でXML機能を使えるようにする
・SQL Server 2000のXML対応機能とは?
・この記事で使用するデータ
・SQL Server 2000の設定
  リレーショナルデータをXML文書として取り出す
・リレーショナルデータとXML文書のマッピング
・SQL ServerのデータをXML文書として取り出す
・FOR XML句でデータを取り出す
・ELEMENTSオプションの指定
・RAWモードの指定
・EXPLICITモードの指定
クライアントサイド・スクリプトでSQL Serverを操作する
・サーバサイド・スクリプトとクライアントサイド・スクリプト

・スクリプトでデータを取り出す
・取り出したデータのXML文書化
  XSLTでXML文書をHTMLに変換
・XSLTスタイルシートの作成
・クライアントサイド・スクリプトからXSLTを呼び出す
・スクリプトをサーバサイド・スクリプトに作り替える
  XPathを使って、SQL Serverでクエリを実行する
・データベースをXML文書に見せかける
・ダイレクトにXPathを指定する方法
・テンプレートを使用する方法
・スキーマを使用する方法
  XML文書形式のデータをSQL Serverに格納する方法
・XML文書とテーブル構造の関係
・SQL文の構築(Insert文を構築する)
・サンプルプログラム
  ストアドプロシージャを利用したデータの追加
・OPENXMLの仕組み
・ストアドプロシージャの作成と呼び出し
・挿入されたデータを確認する
・Insert文とOPENXMLのどちらを使うべきか


XML & SOA フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日月間