XSL 변환 적용(SQLXML 관리 클래스)
적용 대상: SQL Server Azure 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가 설치되어 있어야 합니다.
애플리케이션을 테스트하려면
XSL 스타일시트를 파일에 저장합니다(MyXSL.xsl).
이 예제에 제공된 C# 코드(DocSample.cs)를 스타일시트가 저장된 폴더에 저장합니다.
코드를 컴파일합니다. 명령 프롬프트에서 코드를 컴파일하려면 다음을 사용합니다.
csc /reference:Microsoft.Data.SqlXML.dll DocSample.cs
그러면 실행 파일(DocSample.exe)이 만들어집니다.
명령 프롬프트에서 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;
}
}