XPath 쿼리를 포함하는 템플릿 실행(SQLXMLOLEDB 공급자)

이 예에서는 다음 SQLXMLOLEDB 공급자별 속성을 사용하는 방법을 보여 줍니다.

  • ClientSideXML

  • Base Path

  • Mapping Schema

이 예제 ADO 응용 프로그램에서 XPath 쿼리(루트)로 구성된 XML 템플릿은 XPath 쿼리 실행(SQLXMLOLEDB 공급자)에서 설명된 XSD 매핑 스키마(MySchema.xml)에 대해 지정됩니다.

Mapping Schema 속성은 XPath 쿼리가 수행되는 XSD 매핑 스키마를 제공합니다. Base Path 속성은 매핑 스키마에 대한 파일 경로를 제공합니다.

ClientSideXML 속성은 True로 설정됩니다. 따라서 XML 문서는 클라이언트에서 생성됩니다.

응용 프로그램에서 XPath 쿼리는 직접 지정됩니다. 따라서 언어 {5d531cb2-e6ed-11d2-b252-00c04f681b71}을 포함해야 합니다.

[!참고]

코드에서 연결 문자열에 Microsoft SQL Server 인스턴스의 이름을 지정해야 합니다. 또한 이 예에서는 SQL Server Native Client(SQLNCLI11)를 데이터 공급자로 사용하도록 지정하고 있으며 이를 위해서는 추가 네트워크 클라이언트 소프트웨어가 설치되어 있어야 합니다. 자세한 내용은 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=SQLNCLI11;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>