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.