다음을 통해 공유


XSL 변환 적용(SQLXML 관리 클래스)

적용 대상: SQL ServerAzure SQL Database

이 예제에서는 AdventureWorks 데이터베이스에 대해 SQL 쿼리가 실행됩니다. XSL 변환은 쿼리 결과에 적용되어 직원의 이름과 성의 2열 테이블을 생성합니다.

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 변환 적용

앞에서 설명한 대로 중간 계층에서 XSL 변환을 적용하는 대신 클라이언트 쪽(.NET Framework)에 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;  
      }  
   }