Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In dieser ADO-Beispielanwendung wird eine SQL-Abfrage ausgeführt, und eine XSL-Transformation wird auf das Ergebnis angewendet. Durch Festlegen der ClientSideXML-Eigenschaft auf "True" wird die Verarbeitung des Rowsets auf clientseitiger Seite erzwungen. Der Befehlsdialekt wird auf {5d531cb2-e6ed-11d2-b252-00c04f681b71} festgelegt, da die SQL-Abfrage in einer Vorlage angegeben wird und dieser Dialekt beim Ausführen einer Vorlage angegeben werden muss. Die xsl-Eigenschaft gibt die XSL-Datei an, die zum Anwenden der Transformation verwendet werden soll. Der Wert der Base Path-Eigenschaft wird verwendet, um nach der XSL-Datei zu suchen. Wenn Sie einen Pfad im Wert der xsl-Eigenschaft angeben, ist der Pfad relativ zum Pfad, der in der Base Path-Eigenschaft angegeben ist.
In diesem Beispiel wird gezeigt, wie Die folgenden anbieterspezifischen SQLXMLOLEDB-Eigenschaften verwendet werden:
ClientSideXML
xsl
In dieser clientseitigen ADO-Beispielanwendung wird eine XML-Vorlage, die aus einer SQL-Abfrage besteht, auf dem Server ausgeführt.
Da die ClientSideXML-Eigenschaft auf "True" festgelegt ist, wird die SELECT-Anweisung ohne die FOR XML-Klausel an den Server gesendet. Der Server führt die Abfrage aus und gibt ein Rowset an den Client zurück. Der Client wendet dann die FOR XML-Transformation auf das Rowset an und erzeugt das XML-Dokument.
Die xsl-Eigenschaft wird in der Anwendung angegeben; Daher wird die XSL-Transformation auf das XML-Dokument angewendet, das auf dem Client generiert wird, und das Ergebnis ist eine zweispaltige Tabelle.
Zum Ausführen des Vorlagenbefehls muss der DIALEKT der XML-Vorlage - {5d531cb2-e6ed-11d2-b252-00c04f681b71} - angegeben werden.
Hinweis
Im Code müssen Sie den Namen der Instanz von Microsoft SQL Server in der Verbindungszeichenfolge angeben. Außerdem gibt dieses Beispiel die Verwendung des sql Server Native Client für den Datenanbieter an, der zusätzliche Netzwerkclientsoftware installiert werden muss. Weitere Informationen finden Sie unter Systemanforderungen für SQL Server Native Client.
Option Explicit
Sub main()
Dim oTestStream As New ADODB.Stream
Dim oTestConnection As New ADODB.Connection
Dim oTestCommand As New ADODB.Command
oTestConnection.Open "provider=SQLXMLOLEDB.4.0;data provider=SQLNCLI11;data source=SqlServerName;initial catalog=AdventureWorks;Integrated Security=SSPI;"
Set oTestCommand.ActiveConnection = oTestConnection
oTestCommand.Properties("ClientSideXML") = True
oTestCommand.CommandText = _
"<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql' >" & _
" <sql:query> " & _
" SELECT TOP 25 FirstName, LastName FROM Person.Contact FOR XML AUTO " & _
" </sql:query> " & _
" </ROOT> "
oTestStream.Open
' You need the dialect if you are executing a template.
oTestCommand.Dialect = "{5d531cb2-e6ed-11d2-b252-00c04f681b71}"
oTestCommand.Properties("Output Stream").Value = oTestStream
oTestCommand.Properties("Base Path").Value = "c:\Schemas\SQLXML4\ExecuteTemplateWithXSL\"
oTestCommand.Properties("xsl").Value = "myxsl.xsl"
oTestCommand.Execute , , adExecuteStream
oTestStream.Position = 0
oTestStream.Charset = "utf-8"
Debug.Print oTestStream.ReadText(adReadAll)
End Sub
Sub Form_Load()
main
End Sub
Die XSL-Vorlage folgt. Das Ergebnis der Anwendung dieser XSL-Vorlage ist eine zweispaltige Tabelle.
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<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>