执行包含 XPath 查询的模板(SQLXMLOLEDB 访问接口)
本示例显示如何使用以下特定于 SQLXMLOLEDB 访问接口的属性:
ClientSideXML
Base Path
Mapping Schema
在该示例 ADO 应用程序中,根据在 执行 XPath 查询(SQLXMLOLEDB 访问接口)中介绍的 XSD 映射架构 (MySchema.xml) 指定了一个由 XPath 查询(根)组成的 XML 模板。
Mapping Schema 属性提供了执行 XPath 查询所依据的 XSD 映射架构。Base Path 属性提供指向映射架构的文件路径。
ClientSideXML 属性设置为 True。因此,在客户端上生成 XML 文档。
在应用程序中,可直接指定 XPath 查询。因此,必须包括方言 {5d531cb2-e6ed-11d2-b252-00c04f681b71}。
![]() |
---|
在该代码中,必须在连接字符串中提供 Microsoft SQL Server 实例的名称。而且,该示例指定对于需要安装其他网络客户端软件的数据访问接口使用 SQL Server Native Client (SQLNCLI10)。有关详细信息,请参阅 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=SQLNCLI10;data source=SqlServerName;initial catalog=AdventureWorks;Integrated Security=SSPI;"
oTestCommand.ActiveConnection = oTestConnection
oTestCommand.Properties("ClientSideXML") = "False"
oTestCommand.CommandText = "<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'> " & _
" <sql:xpath-query mapping-schema='mySchema.xml' > " & _
" root " & _
" </sql:xpath-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\TemplateWithXPath\"
oTestCommand.Properties("Mapping Schema").Value = "mySchema.xml"
oTestCommand.Properties("Output Encoding") = "utf-8"
oTestCommand.Execute , , adExecuteStream
oTestStream.Position = 0
oTestStream.Charset = "utf-8"
Debug.Print oTestStream.ReadText(adReadAll)
End Sub
Sub Form_Load()
Main
End Sub
架构如下:
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:sql='urn:schemas-microsoft-com:mapping-schema'>
<xsd:element name= 'root' sql:is-constant='1'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = 'Contact'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='Contact' sql:relation='Person.Contact'>
<xsd:complexType>
<xsd:attribute name='ContactID' type='xsd:integer' />
<xsd:attribute name='FirstName' type='xsd:string'/>
<xsd:attribute name='LastName' type='xsd:string' />
</xsd:complexType>
</xsd:element>
</xsd:schema>