Выполнение запросов XPath (поставщик SQLXMLOLEDB)

Этот пример показывает использование следующих свойств SQLXMLOLEDB, определяемых поставщиком.

  • ClientSideXML

  • Base Path

  • Mapping Schema

В этом образце клиентского приложения ADO запрос XPath (корневой) задается для схемы сопоставления XSD (MySchema.xml). Схема имеет элемент <Contacts> с атрибутами BusinessEntityID, FirstName и LastName. В схеме присутствует сопоставление по умолчанию: имя элемента сопоставляется с таблицей с тем же именем, а атрибуты простого типа сопоставляются со столбцами с теми же именами.

<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 = 'Contacts'/>
       </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name='Contacts' sql:relation='Person.Person'> 
     <xsd:complexType>
          <xsd:attribute name='BusinessEntityID' type='xsd:integer' />
          <xsd:attribute name='FirstName' type='xsd:string'/> 
          <xsd:attribute name='LastName' type='xsd:string' /> 
     </xsd:complexType>
   </xsd:element>
</xsd:schema>

Свойство Mapping Schema предоставляет схему сопоставления, относительно которой выполняется запрос XPath. Схема сопоставления может являться схемой XSD или XDR. Свойство Base Path содержит путь к файлу схемы сопоставления.

Свойство ClientSideXML имеет значение True. Поэтому XML-документ формируется на клиенте.

Запрос XPath задается непосредственно в приложении. Следовательно, должен быть включен диалект XPath {ec2a4293-e898-11d2-b1b7-00c04f680c56}.

ПримечаниеПримечание

В коде необходимо задать имя экземпляра SQL Server в строке соединения. Кроме того, в этом примере в качестве поставщика данных определено использование собственного клиента SQL Server (SQLNCLI10), для которого необходимо установить дополнительное клиентское сетевое ПО. Дополнительные сведения см. в разделе Требования к системе для собственного клиента SQL Server R2.

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=AdventureWorks2008R2;Integrated Security= SSPI;"

oTestCommand.ActiveConnection = oTestConnection
oTestCommand.Properties("ClientSideXML") = True

oTestCommand.CommandText = "root"
oTestStream.Open
oTestCommand.Dialect = "{ec2a4293-e898-11d2-b1b7-00c04f680c56}"
oTestCommand.Properties("Output Stream").Value = oTestStream
oTestCommand.Properties("Base Path").Value = "c:\Schemas\SQLXML4\XPathDirect\"
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