Compartir a través de


Ejecutar plantillas que contienen consultas XPath (Proveedor SQLXMLOLEDB)

En este ejemplo se muestra cómo usar las siguientes propiedades específicas del proveedor SQLXMLOLEDB:

  • ClientSideXML

  • Ruta de acceso base

  • Esquema de asignación

En esta aplicación de ADO de ejemplo, se especifica una plantilla XML que consta de una consulta XPath (raíz) en el esquema de asignación XSD (MySchema.xml) que se describe en Ejecución de consultas XPath (proveedor SQLXMLOLEDB).

La propiedad Mapping Schema proporciona el esquema de asignación XSD con el que se ejecuta la consulta XPath. La propiedad Ruta de acceso base proporciona la ruta de acceso del archivo al esquema de asignación.

La propiedad ClientSideXML se establece en True. Por lo tanto, el documento XML se genera en el cliente.

En la aplicación, se especifica directamente una consulta XPath. Por lo tanto, el dialecto {5d531cb2-e6ed-11d2-b252-00c04f681b71} debe incluirse.

Nota:

En el código, debe proporcionar el nombre de la instancia de Microsoft SQL Server en la cadena de conexión. Además, en este ejemplo se especifica el uso de SQL Server Native Client (SQLNCLI11) para el proveedor de datos que requiere que se instale software cliente de red adicional. Para obtener más información, vea Requisitos del sistema para 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  

Este es el esquema:

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