.NET Framework 2.0で改善されたXSLTVisual Studio Magazine(2/5 ページ)

» 2005年01月24日 11時30分 公開
[Thiru Thangarathinam,FTPOnline]

単純な変換を実装する

 XsltCommandクラスは、System.Xml.Query名前空間に存在する。データストアがIXPathNavigableインタフェースを実装していれば、どんなデータでも、XsltCommandクラスを使ってXMLデータを変換できるのだ。また、変換に用いるXSLTスタイルシートは、xsl:stylesheet宣言の中で、適切な名前空間を指定しなければならない。

xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"

 XsltCommandクラスには、2つの重要なメソッドが含まれている。それはCompileメソッドとExecuteメソッドだ。

 Compileメソッドは、スタイルシートをコンパイルする。このメソッドは、いくつかオーバーロードが定義されている。慣例では、引数として、XmlReaderオブジェクトやXSLTファイルのURI(Uniform Resource Identifier)を渡すだろう。Compileメソッドを用いて読み込んだスタイルシートを使い、XMLデータを特定の形式に変換するには、Executeメソッドを用いる。すなわちコンパイルされたXSLTスタイルシートで変換実行するのがExecuteメソッドだ。

 本稿では、例として、XsltCommandExample.aspxと名付けた単純なWebフォームを作っていく。このWebフォームは、NorthwindデータベースのProductsテーブルからのデータを表示する。ProductsテーブルからはデータをXML形式で取り出し、外部のProductsPaging.xslと名付けたXSLTスタイルシートを適用することで、XMLデータをHTMLに射影する。そしてこのHTMLをクライアントのブラウザに直接返す(リスト1)。

リスト1■変換の実行(C#)。下記に示すXsltCommandクラスを用いてXMLからHTMLへと変換するコードは、WebフォームのLoadイベントに記述する。この例では、データベースからのXMLデータをXPathDocumentオブジェクトに直接読み込む。SQL ServerからXMLデータを取り出すには「for xml」を用いる
void Page_Load(object sender,
System.EventArgs e)
{
// Web.configファイルから
// データベース接続文字列を得る
string connString =
System.Configuration.
ConfigurationSettings.
ConnectionStrings[
"pubConnectionString"].
ConnectionString;
SqlConnection sqlConn = new
SqlConnection(connString);
sqlConn.Open();

// SqlCommandオブジェクトのインスタンスを作り
// クエリを渡す

SqlCommand = new
SqlCommand("Select * from
Products for xml
auto,elements",sqlConn);

// クエリを実行する
XmlReader reader =
sqlCommand.ExecuteXmlReader();
// XmlReaderオブジェクトと関連付ける
XPathDocument xpathDoc = new
XPathDocument(reader);
sqlConn.Close();
XsltCommand command = new
XsltCommand();
// XSLスタイルシートを
// XsltCommandオブジェクト内にコンパイルする
command.Compile(Server.MapPath
("ProductsPaging.xsl"));
command.Execute(xpathDoc, null,
null, Response.Output);
}

 どのようなコードが変換作業をするのか分かったところで、次に、HTML形式で商品情報を表示するXSLTスタイルシートを見てほしい(リスト2、図1を参照)。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ