Compartir a través de


Ejecutar plantillas que contienen consultas XPath (Proveedor SQLXMLOLEDB)

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

  • ClientSideXML

  • Base Path

  • Mapping Schema

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

La propiedad Mapping Schema proporciona el esquema de asignación XSD en el que se ejecuta la consulta XPath. La propiedad Base Path proporciona la ruta de acceso al esquema de asignación.

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

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

[!NOTA]

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

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