Выполнение шаблонов, содержащих запросы XPath (поставщик SQLXMLOLEDB)

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

  • ClientSideXML

  • Base Path

  • Mapping Schema

В этом образце приложения ADO XML-шаблон, состоящий из запроса XPath, указывается для схемы сопоставления XSD (MySchema.xml), приведенной в разделе Выполнение запросов XPath (поставщик SQLXMLOLEDB).

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

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

Запрос XPath задается непосредственно в приложении. Следовательно, должен быть включен диалект {5d531cb2-e6ed-11d2-b252-00c04f681b71}.

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

В коде необходимо задать имя экземпляра Microsoft 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") = "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.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>