Aracılığıyla paylaş


XSL Dönüşümünü Uygulamak (SQLXML Yönetilen Sınıflar)

Şunlar için geçerlidir:SQL ServerAzure SQL Veritabanı

Bu örnekte, AdventureWorks veritabanına karşı bir SQL sorgusu yürütülür. XSL dönüşümü, sorgu sonucuna uygulanarak çalışanların adı ve soyadlarının iki sütunlu tablosu oluşturulur.

SqlXmlCommand nesnesinin XslPath özelliği, XSL dosyasını ve dizin yolunu belirtmek için kullanılır.

Uyarı

Kodda, bağlantı dizisinde Microsoft SQL Server örneğinin adını belirtmeniz gerekir.

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;  
      }  
   }  

Bu, uygulamayı test etmek için kullanabileceğiniz XSL stil sayfasıdır:

<?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>  

Bu örneği test etmek için Microsoft .NET Framework'ün bilgisayarınızda yüklü olması gerekir.

Uygulamayı test etmek için

  1. XSL stil sayfasını bir dosyada (MyXSL.xsl) kaydedin.

  2. Bu örnekte verilen C# kodunu (DocSample.cs) stil sayfasının saklandığı klasöre kaydedin.

  3. Kodu derleyin. Kodu komut isteğinde derlemek için şunları kullanın:

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

    Bu, bir yürütülebilir (DocSample.exe) oluşturur.

  4. Komut dizisinde, DocSample.exeçalıştırın.

.NET Framework'te XSL Dönüşümü Uygulanması

Daha önce anlatıldığı gibi orta seviyede bir XSL dönüşümü uygulamak yerine, istemci tarafında (.NET Framework'te) bir XSL dönüşümü uygulayabilirsiniz. Aşağıdaki revize edilmiş C# kodu, .NET Framework'te XSL dönüşümünün nasıl uygulandığını göstermektedir.

Uyarı

Kodda, bağlantı dizesinde SQL Server örneğinin adını belirtmeniz gerekir.

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;  
      }  
   }