Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Neste exemplo, uma consulta SQL é executada contra a base de dados AdventureWorks. A transformação XSL é aplicada ao resultado da consulta para gerar uma tabela de duas colunas com os nomes próprios e apelidos dos colaboradores.
A propriedade XslPath do objeto SqlXmlCommand é usada para especificar o ficheiro XSL e o seu caminho de diretório.
Observação
No código, deve fornecer o nome da instância do Microsoft SQL Server na cadeia de ligação.
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;
}
}
Esta é a folha de estilo XSL que pode usar para testar a aplicação:
<?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>
Para testar este exemplo, deve ter o Microsoft .NET Framework instalado no seu computador.
Para testar a aplicação
Guarde a folha de estilo XSL num ficheiro (MyXSL.xsl).
Guarde o código C# (DocSample.cs) fornecido neste exemplo na mesma pasta onde a folha de estilo está armazenada.
Compila o código. Para compilar o código no prompt de comandos, use:
csc /reference:Microsoft.Data.SqlXML.dll DocSample.csIsto cria um executável (DocSample.exe).
No prompt de comandos, execute DocSample.exe.
Aplicação de uma Transformação XSL no .NET Framework
Em vez de aplicar uma transformação XSL no nível intermédio, como descrito anteriormente, pode aplicar uma transformação XSL do lado do cliente (no .NET Framework). O código C# revisto a seguir mostra como a transformação XSL é aplicada no .NET Framework.
Observação
No código, deve fornecer o nome da instância do SQL Server na cadeia de conexão.
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;
}
}