Udostępnij przez


Stosowanie transformacja XSL (Dostawca SQLXMLOLEDB)

W przykładowej aplikacji obiektów ADO jest wykonywana kwerenda SQL, a XSL Transformation jest stosowany do wyników.Ustawianie ClientSideXML Właściwość na wartość true wymusza przetwarzanie zestawu zestaw wierszy po stronie klient. Dialekt polecenia ma wartość {5d531cb2-e6ed-11 d 2-b252-00c04f681b71}, ponieważ kwerenda SQL jest określona w szablonie i dialekt ten musi zostać określona podczas wykonywania szablonu.The xsl właściwość specifies the XSL file to use to apply the transformacja. Wartość Base Path Właściwość jest używana do wyszukiwania pliku XSL. Jeśli zostanie określona ścieżka w wartości xsl Właściwość, ścieżka jest względna w stosunku do ścieżki, która jest określona w Base Path Właściwość.

W tym przykładzie pokazano, jak użyć następujących właściwości SQLXMLOLEDB specyficzne dla dostawca:

  • ClientSideXML

  • xsl

W tej przykładowej aplikacji obiektów ADO klient szablonu XML, który składa się z kwerendę SQL jest wykonywany na serwerze.

Ponieważ ClientSideXML Właściwość jest ustawiona na wartość true, instrukcja SELECT bez klauzula FOR XML jest wysyłany do serwera. Serwer wykonuje kwerendę i zwraca klientowi zestawu zestaw wierszy.Klient następnie stosuje transformacja FOR XML do zestawu zestaw wierszy i umożliwia tworzenie dokumentu XML.

The xsl właściwość is specified in the application; therefore, the XSL transformacja is applied to the XML document that is generated on the klient, and the result is a two-kolumna tabela.

Aby wykonać polecenie szablonu, dialekt szablon XML — {5d531cb2-e6ed-11 d 2-b252-00c04f681b71} — musi być określona.

Uwaga

W kodzie musisz podać nazwę wystąpienie programu Microsoft SQL Server w ciąg połączenia. Ponadto w tym przykładzie określa używanie SQL Server Klient macierzystego dostawca danych, które wymaga oprogramowania klienckiego dodatkowych sieci na zainstalowanie. Aby uzyskać więcej informacji zobaczWymagania systemowe dla programu SQL Server 2008 Native klient.

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=SQLNCLI10;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

Szablon XSL poniżej.Wynikiem zastosowania tego szablonu XSL jest tabelą dwóch kolumn.

<?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>