連載 SQL
ServerでXMLを操作する
第2回:リレーショナルDBから取り出した
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> |
今回は、クライアントサイド・スクリプトを利用して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 |
ここではデータベースと接続するための情報を記述していますが、ODBCのデータソースを作成しても構いません。
(3)データの取り出し
データの取り出しは、前回の記事でURLに記述したSELECT文をスクリプトに記述することで実行します。記述は下記のとおりです。
var objRec = objCon.Execute(" |
オブジェクト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" + '"' |
次にDOMオブジェクトを作成します。このときデータの取り扱いが、“同期”になるようにasyncを設定しておきます。
var objXML = new ActiveXObject("Microsoft.XMLDOM") |
最後に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のどちらを使うべきか |
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|