Condividi tramite


Esecuzione dei template che contengono query XPath (per il provider SQLXMLOLEDB)

In questo esempio viene illustrato come usare le proprietà specifiche del provider SQLXMLOLEDB seguenti:

  • ClientSideXML

  • Percorso di base

  • Mapping Schema

In questa applicazione ADO di esempio viene specificato un modello XML costituito da una query XPath (radice) rispetto allo schema di mapping XSD (MySchema.xml) descritto in Esecuzione di query XPath (provider SQLXMLOLEDB).

La proprietà Schema mapping fornisce lo schema di mapping XSD su cui viene eseguita la query XPath. La proprietà Base Path fornisce il percorso del file allo schema di mapping.

La proprietà ClientSideXML è impostata su True. Pertanto, il documento XML viene generato nel client.

Nell'applicazione viene specificata direttamente una query XPath. Pertanto, è necessario includere il dialetto {5d531cb2-e6ed-11d2-b252-00c04f681b71} .

Annotazioni

Nel codice è necessario specificare il nome dell'istanza di Microsoft SQL Server nella stringa di connessione. In questo esempio viene inoltre specificato l'uso di SQL Server Native Client (SQLNCLI11) per il provider di dati che richiede l'installazione di software client di rete aggiuntivo. Per altre informazioni, vedere Requisiti di sistema per 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  

Questo è lo schema:

<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>