Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Azure SQL Database
W tym przykładzie zapytanie SQL jest wykonywane na bazie danych AdventureWorks. Transformacja XSL jest stosowana do wyniku zapytania, aby wygenerować dwukolumnową tabelę imienia i nazwiska pracowników.
Właściwość XslPath obiektu SqlXmlCommand służy do określenia pliku XSL oraz ścieżki katalogowej.
Uwaga / Notatka
W kodzie musisz podać nazwę instancji Microsoft SQL Server w ciągu połączeń.
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;
}
}
Oto arkusz stylów XSL, którego możesz użyć do testowania aplikacji:
<?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>
Aby przetestować ten przykład, musisz mieć zainstalowany Microsoft .NET Framework na swoim komputerze.
Aby przetestować aplikację
Zapisz arkusz stylów XSL w pliku (MyXSL.xsl).
Zapisz kod C# (DocSample.cs), który jest udostępniony w tym przykładzie, w tym samym folderze, w którym przechowywany jest arkusz stylów.
Skompiluj kod. Aby skompilować kod w wierszu poleceń, użyj następująco:
csc /reference:Microsoft.Data.SqlXML.dll DocSample.csTworzy to plik wykonywalny (DocSample.exe).
W wierszu poleceń wykonaj DocSample.exe.
Zastosowanie transformacji XSL w frameworku .NET
Zamiast stosować transformację XSL w środkowym tierze, jak opisano wcześniej, możesz zastosować transformację XSL po stronie klienta (w .NET Framework). Poniższy zaktualizowany kod C# pokazuje, jak transformacja XSL jest stosowana w .NET Framework.
Uwaga / Notatka
W kodzie musisz podać nazwę instancji SQL Server w ciągu połączeń.
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;
}
}