Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом примере приложения ADO выполняется SQL-запрос, а преобразование XSL применяется к результату. Задание свойства ClientSideXML значение True применяет обработку набора строк на стороне клиента. Диалект команды имеет значение {5d531cb2-e6ed-11d2-b252-00c04f681b71}, так как SQL-запрос указан в шаблоне, и этот диалект необходимо указать при выполнении шаблона. Свойство xsl указывает XSL-файл, используемый для применения преобразования. Значение свойства Base Path используется для поиска XSL-файла. Если указать путь в значении свойства xsl, путь относится к пути, указанному в свойстве Base Path.
В этом примере показано, как использовать следующие свойства поставщика SQLXMLOLEDB:
ClientSideXML
xsl
В этом примере клиентского приложения ADO на сервере выполняется XML-шаблон, состоящий из SQL-запроса.
Так как свойство ClientSideXML имеет значение True, инструкция SELECT без предложения FOR XML отправляется на сервер. Сервер выполняет запрос и возвращает набор строк клиенту. Затем клиент применяет преобразование FOR XML к набору строк и создает XML-документ.
Свойство xsl указывается в приложении; Таким образом, преобразование XSL применяется к XML-документу, созданному на клиенте, и результатом является таблица с двумя столбцами.
Чтобы выполнить команду шаблона, необходимо указать диалект шаблона XML : {5d531cb2-e6ed-11d2-b252-00c04f681b71} .
Замечание
В коде необходимо указать имя экземпляра Microsoft SQL Server в строке подключения. Кроме того, в этом примере указывается использование собственного клиента SQL Server для поставщика данных, для которого требуется установить дополнительное клиентское программное обеспечение сети. Дополнительные сведения см. в разделе "Требования к системе" для собственного клиента SQL Server.
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
Следующий шаблон XSL. Результат применения этого шаблона XSL — это таблица с двумя столбцами.
<?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>