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)。
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.