次の方法で共有


XPath クエリを含むテンプレートの実行 (SQLXMLOLEDB プロバイダ)

この例では、次の SQLXMLOLEDB プロバイダ固有のプロパティについて、使用法を示します。

  • ClientSideXML
  • Base Path
  • Mapping Schema

このサンプル ADO アプリケーションでは、XPath クエリ (root) を含む XML テンプレートを、「XPath クエリの実行 (SQLXMLOLEDB プロバイダ)」で説明されている XSD マッピング スキーマ (MySchema.xml) に対して指定します。

Mapping Schema プロパティでは、Xpath クエリを実行する対象の XSD マッピング スキーマを指定します。Base Path プロパティでは、マッピング スキーマへのファイル パスを指定します。

ClientSideXML プロパティは True に設定します。つまり、XML ドキュメントはクライアントで生成されます。

このアプリケーションでは、XPath クエリを直接指定します。したがって、言語 {5d531cb2-e6ed-11d2-b252-00c04f681b71} を含める必要があります。

ms171774.note(ja-jp,SQL.90).gifメモ :
コードでは、接続文字列に Microsoft SQL Server インスタンス名を含める必要があります。また、この例ではデータ プロバイダとして SQL Native Client (SQLNCLI) を使用するよう指定していますが、これには追加ネットワーク クライアントがインストールされていることが必要です。詳細については、「SQL 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=SQLNCLI;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>