ASP.NET 2.0 引入 System.Xml.Xsl.XslCompiledTransform 取代舊版 XslTransform,提供編譯快取、效能大幅提升,並支援 XsltArgumentList 傳遞參數與擴充物件。
AddParam(name, namespace, value) 傳遞參數,AddExtensionObject 註冊自訂函式// XSLT 檔案 (categories.xslt)
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="https://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:param name="title" select="'預設標題'"/>
<xsl:template match="/">
<html><body><h2><xsl:value-of select="$title"/></h2>
<table border="1"><xsl:for-each select="//Categories">
<tr><td><xsl:value-of select="CategoryID"/></td>
<td><xsl:value-of select="CategoryName"/></td></tr>
</xsl:for-each></table></body></html>
</xsl:template>
</xsl:stylesheet>
// C# 程式碼
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(Server.MapPath("categories.xslt"));
XsltArgumentList args = new XsltArgumentList();
args.AddParam("title", "", "Northwind 產品類別");
using (XmlReader reader = XmlReader.Create(Server.MapPath("categories.xml")))
using (StringWriter sw = new StringWriter())
{
xslt.Transform(reader, args, sw);
Response.Write(sw.ToString());
}
編譯後的 XslCompiledTransform 物件可靜態快取重用,避免每次請求重新編譯 XSLT。