.NET Enterprise ServersのXML度を探る
SQL Server 2000 |
SQL Server 2000(以下SQL Server)は、前バージョンと比較して大幅にXML機能が強化されており、データベースに対してXML文書形式のデータ入出力いずれもが可能になっている。それぞれの機能を見ていくことにしよう。
■FOR XML句
検索命令のSELECT文の最後に「FOR XML」と記述することで、検索結果をXML文書の形式で得ることができる。FOR XMLを用いると、以下のようなSELECT文になる。
SELECT 列名 FROM テーブル名 WHERE 条件 FOR XML AUTO |
FOR XML句には、直後に指定するキーワードで設定される3種類のモードを持つ。例に示した「AUTO」モードを設定すると、テーブルから1行分のデータが取り出されたうえで、列名を要素名としたXML文書が取り出される。「RAW」モードでは、要素名が“row”で、属性名が列名、属性の値が列の値となった行が生成される。下記に、簡単にそれぞれの出力形式を示した。
<row 列名="値" 列名="値" /> …… RAWモードで出力したXML文書の形式 |
3つ目の「EXPLICIT」モードは、SQL文によってXML文書の構造を明示的に定義して出力する方法だ。
FOR XML句は、検索時に検索結果をXML文書化するかどうかを設定できる一方で、出力されてくるXML文書に、RAWモードやAUTOモードに代表されるように、あまり複雑な構造を持たせるのには向いていない。単純なデータをアドホックにXML文書化するような用途に向いているだろう。
FOR XML句を使ったクエリ (クリックすると拡大します) SELECT文の最後にFOR XMLを付加することで、結果がXML文書として出力されてくる |
XMLビューのイメージ XMLビューを通してデータベースを参照すると、XML文書として見える |
|||
|
■XMLビュー
XMLビューは、データベース内のデータを、仮想のXML文書にマッピングする働きをする。
XMLビューを通してデータベースを見ると、データベースは行と列からなるテーブルの集合体ではなく、XMLビューごとに1つのXML文書として見える(XMLビューは複数定義が可能)。利用者はこの仮想的に存在するXML文書の一部を取り出したりすることが可能だ。
XMLビューではデータベースの内容がXML文書として見える(逆にいうと、テーブル形式としては見えなくなる)ため、XMLビューを通してデータを取り出すには、SELECT文ではなくXPathを指定することになる。XPathとは、XML文書に書かれた要素をツリー構造に見立てたとき、どの深さのどの位置にあるどのノードか、といったことを指定するための構文だ。
XMLビューを利用するには、あらかじめデータベース内のテーブルと列が、XML文書の要素と属性、値にどのようにマップされるのかを定義しておく。これがビューの定義になる。定義に利用されるのが、XMLのスキーマ言語であるXDRに、注釈を付加したもの。
|
XDRはスキーマ言語としてXML文書の構造を記述する機能を備えているが(スキーマの記述そのものもXML文書として記述する)、注釈によって文書構造のどこにデータベースの何が対応するか、といった情報を追加することで、データのXML文書へのマップを実現している。
今後マイクロソフトから、ビジュアルにデータベースのスキーマとXMLのスキーマをマップするアプリケーションの提供が予定されているため、定型的にデータをXML文書化する場合には、FOR XML句を用いるよりも、XMLビューを利用する方法がいいかもしれない。
■URLクエリ
SQL Serverの機能の中で、IISとSQL Serverを組み合わせることで、URLの中にSQL文を組み込める。例えば、次のようなURLでアクセスすると、テーブルCustomerの内容がすべて取り出せる。
http://IIS/northwind?sql=SELECT+*+FROM+Customers |
検索結果は自動的にHTML形式となり、Webブラウザで表示できる。CGIなどをまったく用いなくとも、URLだけで簡単にデータベースへ問い合わせができ、結果が表示できる便利な機能だ。このSQL文に、以下のようにFOR XML句を追加するだけで、結果をHTMLではなく、XMLで取得できる。
http://IIS/northwind?sql=SELECT+*+FROM+Customers+FOR+XML+AUTO |
URLクエリの結果画面 (見やすくするため、画面は加工されています) URLの中にSELECT文を組み込むと、その結果をWebブラウザで受け取ることができる。SELECT文の末尾にFOR XML句を入れると、結果はXML文書で帰ってくる |
FOR XML句を含んだSQL文を「XMLテンプレート」としてあらかじめ登録しておき、URLでそれを呼び出すこともできる。XMLテンプレートの中で、スタイルシートなどを設定できるため、Internet Explorer 5.0など、XMLのスタイルシートに対応しているWebブラウザならば、受け取った単調なタグと値の羅列のXML文を、HTMLのテーブル機能などで、きれいに整形して見せることができる。
URLクエリの一番の特徴は、URLで問い合わせてHTTPで結果が得られるという点、つまり、インターネットのどこからでもWebブラウザだけでSQL Serverにアクセスできる点だ。クライアントはWebブラウザである必要はないから、直接サーバ同士を結んでデータ交換をするようなBtoBなどに応用できるだろう。
■OpenXML
OpenXMLは、XML文書をSQL文の中で操作するためのキーワードだ。当然のことながら、ふつうXML文書はSQL文を用いて直接操作することはできない。しかしOpenXMLでは、XML文書をストアドプロシージャで処理させたものを、OpenXMLキーワード付きのSQL文で操作することで、XML文書内の任意のノードに対して、データベース内のテーブルにアクセスするように操作できる。
ただし、元のXML文書に対して追加や変更ができるわけではないため、この場合想定される操作は、XML文中にある特定の条件に合致するノードを検索したり、検索したノードをそのままINSERT文でデータベースへ追加するといったことが挙げられる。全件検索した上で、テーブルに追加すれば、XML文書をノードに分解してテーブルに追加できる。
■そのほかのXML関連機能
SQL Serverには、データ型に「テキスト型」を利用することで、テキスト文書をそのまま追加、検索できる。これは特にXML文書のための機能ではないが、XML文書はテキスト文書以外のなにものでもないため、テキスト型を利用すればSQL ServerにXML文書をまるごと格納できる。しかも、こうして格納したテキストデータは全文検索の対象になるため、内容の検索は容易だ。
今後追加予定の機能には、XMLアップデートとXMLバルクロードがある。XMLアップデートは、XML文書によるデータベースの操作。XMLバルクロードは、文字通り巨大なXML文書をデータベースにロードする機能だ。
「Exchange、Commerceなど、そのほかのサーバ」 |
Index | |
.NET Enterprise ServersとXMLの関係 | |
各サーバのXML機能概要 | |
BizTalk
Server 2000 BizTalkオーケストレーション・サービス BizTalkメッセージング・サービス |
|
SQL Server
2000 FOR XML句 XMLビュー URLクエリ OpenXML |
|
Exchange、Commerce、そのほかのサーバ Exchange 2000 Server Commerce Server 2000 Host Integration Server 2000 Internet Security & Acceleration Server 2000 Application Center 2000 Windows 2000 今後どんなXML機能が追加されるか? |
|
- 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」の詳細も紹介する
|
|