ASP.NET 2.0 での XSLT の使用
著者:Eve Cole
更新時間:2009-06-30 16:48:40
asp.net 2.0 では、XML のアプリケーションが大幅に強化され、XSLT 処理に関しても新しい機能が提供されます。この記事では、asp.net 2.0 での XSLT の使用について簡単に説明します。もちろん、この記事は、読者が XSLT の基本的な知識を持っていることを前提としています。
asp.net 2.0 では、XSLT に次の変更と新機能があります。
·XslCompiledTransform - 実際には .NET 1.0 の XslTransform ですが、より優れたパフォーマンス サポートを提供し、.net 1.0 での以前のアプリケーションのスムーズな移行もサポートします。
·XsltArgumentList - パラメータまたはオブジェクトを XSLT に渡すことができます
XsltCompileException - loa() メソッドを介して XSL ドキュメントをロード中にエラーが発生した場合に生成される例外。
XsltException - XSL ドキュメントの解析中にエラーが発生した場合に生成される例外。
まず簡単な例を見てみましょう。この例では、NORTHWIND データベースからデータを取得し、XML 形式で表示し、XSLT 形式に変換します。
<?xml バージョン="1.0" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:outputメソッド="html" /> <頭> <TITLE>簡単なXSLT変換</TITLE> </頭> <ボディ> <H2>単純なXSLT変換</H2> <中央> <xsl:for-each select="//カテゴリ"> <xsl:value-of select="ProductSubcategoryID" /> </xsl:要素> <xsl:value-of select="名前" /> </xsl:要素> <xsl:attribute name="align">center</xsl:attribute> <xsl:value-of select="ModifiedDate" /> </xsl:要素> </xsl:要素> </xsl:for-each> </中央> </テーブル> </BODY> </HTML> </xsl:テンプレート> </xsl:スタイルシート>
表示される ASPX コードは次のとおりです。
<%@ ページ言語="C#" %> <%@ インポート名前空間="System.Data.SqlClient" %> <%@ インポート名前空間="System.Xml" %> <%@ インポート名前空間="System.Xml.Xsl" %> <%@ インポート名前空間="System.Xml.XPath" %> <%@ インポート名前空間="System.Web.Configuration" %> <スクリプト runat="サーバー"> void Page_Load(オブジェクト送信者、System.EventArgs e) { 文字列 connString = WebConfigurationManager.ConnectionStrings ["adventureWorks"].ConnectionString; using (SqlConnection 接続 = new SqlConnection(connString)) { 接続.Open(); SqlCommand コマンド = 新しい SqlCommand ("Production.ProductSubcategory からカテゴリとして * を選択 " + " XML 自動、要素の場合"、接続); XmlReader リーダー = command.ExecuteXmlReader(); XPathDocument xpathDoc = 新しい XPathDocument(reader); string xslPath = Server.MapPath("Category.xsl"); XslCompiledTransform 変換 = new XslCompiledTransform(); 変換.Load(xslPath); 変換.Transform(xpathDoc, null, Response.Output); } } </スクリプト> |
最初に xmlreader を使用してデータベースから抽出されたデータ (xml auto の形式) を読み取り、次に xsl ファイルをロードし、次に xslcompiledtransform クラスを使用して変換することに注意してください。この際、パフォーマンスを向上させるために xpathdocument が使用されます。ここでは、.net 1.1 の xslttransform の代わりに xslcompiledtransform が使用されていることに注意してください。実行結果は次のとおりです。
XSLT にパラメータまたはオブジェクトを渡すこともできます。たとえば、上記の例の背景色を変更する場合は、次のように XSLT を記述する方法を見てみましょう。
<?xml バージョン="1.0" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:outputメソッド="html" /> <xsl:param name="BackGroundColor" select="Blue" /> <頭> <TITLE>XSLTスタイルシートへのパラメータの受け渡し</TITLE> </頭> <ボディ> <H2> XSLTスタイルシートへのパラメータの受け渡し</H2> <中央> <xsl:for-each select="//カテゴリ"> <xsl:value-of select="$BackGroundColor" /> </xsl:属性> <xsl:value-of select="ProductSubcategoryID" /> </xsl:要素> <xsl:value-of select="名前" /> </xsl:要素> <xsl:attribute name="align">center</xsl:attribute> <xsl:value-of select="ModifiedDate" /> </xsl:要素> </xsl:要素> </xsl:for-each> </中央> </テーブル> </BODY> </HTML> </xsl:テンプレート> </xsl:スタイルシート>
注意すべき点は次のとおりです。
<xsl:value-of select="$BackGroundColor" /> |
背景色はこの形式でパラメータとして指定され、XSLT の先頭で、次のように の形式で背景色に青の値が設定されます。次に、 の背景色を bgcolor=blue に設定して、出力データの各行を青に変える効果を実現します。
|
|