共用方式為


套用 XSL 轉換 (SQLXML Managed 類別)

適用於:SQL Server Azure SQL 資料庫

在此範例中,會針對 AdventureWorks 資料庫執行 SQL 查詢。 XSL 轉換會套用至查詢結果,以產生員工名字和姓氏的兩欄數據表。

SqlXmlCommand 物件的 XslPath 屬性是用來指定 XSL 檔案及其目錄路徑。

注意

在程式代碼中,您必須在 連接字串 中提供 Microsoft SQL Server 實例的名稱。

using System;  
using Microsoft.Data.SqlXml;  
using System.IO;  
class Test  
{  
      static string ConnString = "Provider=SQLOLEDB;Server=(local);database=AdventureWorks;Integrated Security=SSPI";  
      public static int testXSL()  
      {  
         //Stream strm;  
         SqlXmlCommand cmd = new SqlXmlCommand(ConnString);  
         cmd.CommandText = "SELECT TOP 20 FirstName, LastName FROM Person.Contact FOR XML AUTO";  
         cmd.XslPath = "MyXSL.xsl";  
         cmd.RootTag = "root";  
         using (Stream strm = cmd.ExecuteStream()){  
            using (StreamReader sr = new StreamReader(strm)){  
               Console.WriteLine(sr.ReadToEnd());  
            }  
        }  
         return 0;  
      }  
      public static int Main(String[] args)  
      {  
         testXSL();     
         return 0;  
      }  
   }  

這是可用來測試應用程式的 XSL 樣式表單:

<?xml version='1.0' encoding='UTF-8'?>  
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">   
    <xsl:output method="html"/>  
    <xsl:template match = '*'>  
        <xsl:apply-templates />  
    </xsl:template>  
    <xsl:template match = 'Person.Contact'>  
       <TR>  
         <TD><xsl:value-of select = '@FirstName' /></TD>  
         <TD><B><xsl:value-of select = '@LastName' /></B></TD>  
       </TR>  
    </xsl:template>  
    <xsl:template match = '/'>  
      <HTML>  
        <HEAD>  
           <STYLE>th { background-color: #CCCCCC }</STYLE>  
        </HEAD>  
        <BODY>  
         <TABLE border='1' style='width:300;'>  
           <TR><TH colspan='2'>Contacts</TH></TR>  
           <TR><TH >First name</TH><TH>Last name</TH></TR>  
           <xsl:apply-templates select = 'root' />  
         </TABLE>  
        </BODY>  
      </HTML>  
    </xsl:template>  
</xsl:stylesheet>  

若要測試此範例,您必須在計算機上安裝 Microsoft .NET Framework。

若要測試應用程式

  1. 將 XSL 樣式表單儲存在檔案中(MyXSL.xsl)。

  2. 將本範例中提供的 C# 程式代碼 (DocSample.cs) 儲存在儲存樣式表單的相同資料夾中。

  3. 編譯程序代碼。 若要在命令提示字元編譯程序代碼,請使用:

    csc /reference:Microsoft.Data.SqlXML.dll DocSample.cs  
    

    這會建立可執行檔 (DocSample.exe)。

  4. 在命令提示字元中,執行DocSample.exe。

在 .NET Framework 中套用 XSL 轉換

如先前所述,您可以在用戶端(在 .NET Framework 中)套用 XSL 轉換,而不是在中介層套用 XSL 轉換。 下列修訂后的 C# 程式代碼示範如何在 .NET Framework 中套用 XSL 轉換。

注意

在程式代碼中,您必須在 連接字串 中提供 SQL Server 實例的名稱。

using System;  
using System.Xml;  
using Microsoft.Data.SqlXml;  
using System.IO;  
using System.Xml.XPath;  
using System.Xml.Xsl;  
  
class Test  
{  
      static string ConnString = "Provider=SQLOLEDB;Server=(local);database=AdventureWorks;Integrated Security=SSPI";  
      public static int testXSL()  
      {  
         //Stream strm;  
         SqlXmlCommand cmd = new SqlXmlCommand(ConnString);  
         cmd.CommandText = "SELECT TOP 20 FirstName, LastName FROM Person.Contact FOR XML AUTO";  
         cmd.RootTag = "root";  
         using (Stream strm = cmd.ExecuteStream()){  
            XmlReader reader = new XmlReader(strm);  
            XPathDocument xd = new XPathDocument(reader, XmlSpace.Preserve);  
            XslCompiledTransform xslt = new XslCompiledTransform();  
            xslt.Load("MyXSL.xsl");  
            XmlWriter writer = XmlWriter.Create("xslt_output.html");  
            xslt.Transform(xd, writer);  
            reader.Close();  
            writer.Close();  
         }  
         return 0;  
      }  
      public static int Main(String[] args)  
      {  
         testXSL();     
         return 0;  
      }  
   }