Udostępnij przez


Wykonywanie kwerend XPath za pomocą obszarów nazw (Dostawca SQLXMLOLEDB)

Kwerendy XPath może zawierać obszarów nazw.W przypadku elementów schematu obszaru nazw kwalifikacje (to znaczy, jeśli zawierają one miejsce docelowe obszar nazw), kwerendy XPath względem schematu, należy określić ten obszar nazw.

Ponieważ korzysta z symbolem wieloznacznym ** nie jest obsługiwana w wersji 4.0 SQLXML, należy określić kwerendę XPath przy użyciu prefiksu obszaru nazw.Aby rozwiązać tego prefiksu, należy użyć namespaces właściwość w celu określenia wiązania obszaru nazw.

W poniższym przykładzie kwerendy XPath określa obszary nazw za pomocą znaków wieloznacznych ** oraz local-name() i namespace-uri() Funkcje XPath. Tę kwerendę XPath zwraca wszystkie elementy, w których jest nazwa lokalna Contact i jest identyfikator URI obszaru nazw urn:myschema:Contacts.

/*[local-name() = 'Contact' and namespace-uri() = 'urn:myschema:Contacts']

W wersji 4.0 SQLXML należy określić tę kwerendę XPath prefiksu obszaru nazw.Na przykład x:Contact, gdzie x jest prefiks obszaru nazw. Należy wziąć pod uwagę następujące schematu XSD:

<schema xmlns="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
            xmlns:con="urn:myschema:Contacts"
            targetNamespace="urn:myschema:Contacts">
<complexType name="ContactType">
  <attribute name="CID" sql:field="ContactID" type="ID"/>
  <attribute name="FName" sql:field="FirstName" type="string"/>
  <attribute name="LName" sql:field="LastName"/> 
</complexType>
<element name="Contact" type="con:ContactType" sql:relation="Person.Contact"/>
</schema>

Ponieważ ten schemat definiuje miejsce docelowe obszar nazw, kwerendy XPath (na przykład "pracownika") względem schematu musi zawierać się w obszarze nazw.

This is a sample Microsoft Aplikacja Visual Basic, która wykonuje kwerendę XPath (x: pracownik) względem poprzedniego schematu XSD. W celu rozwiązania prefiks, wiązania obszaru nazw jest określona przy użyciu namespaces Właściwość.

Uwaga

W kodzie musisz podać nazwę wystąpienie programu SQL Server w ciąg połączenia. Ponadto w tym przykładzie określa używanie SQL Server Macierzysta klient (SQLNCLI10) dla dostawca danych, który wymaga oprogramowanie klient sieciowego dodatkowe mają być zainstalowane. Aby uzyskać więcej informacji zobaczWymagania systemowe dla programu SQL Server 2008 Native klient.

Option Explicit
Private Sub Form_Load()
    Dim con As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim stm As New ADODB.Stream
    con.Open "provider=SQLXMLOLEDB.4.0;Data Provider=SQLNCLI10;Data Source=SqlServerName;Initial Catalog=AdventureWorks;Integrated Security=SSPI;"
    Set cmd.ActiveConnection = con
    stm.Open
    cmd.Properties("Output Stream").Value = stm
    cmd.Properties("Output Encoding") = "utf-8"
    cmd.Properties("Mapping schema") = "C:\DirectoryPath\con-ex.xml"
    cmd.Properties("namespaces") = "xmlns:x='urn:myschema:Contacts'"
    '  Debug.Print "Set Command Dialect to DBGUID_XPATH"
    cmd.Dialect = "{ec2a4293-e898-11d2-b1b7-00c04f680c56}"
    cmd.CommandText = "x:Contact"
    cmd.Execute , , adExecuteStream 
    stm.Position = 0
    Debug.Print stm.ReadText(adReadAll)
End Sub

Aby przetestować tę aplikację

  1. Zapisywanie schematu XSD próbkę w folderze.

  2. Tworzenie projektu do pliku wykonywalnego języka Visual Basic, a następnie skopiuj kod do niego.Zmień ścieżka w określonym katalogu.

  3. Należy dodać następujące odwołanie projektu:

    "Microsoft ActiveX Data Objects 2.8 Library"
    
  4. Uruchomić aplikację.

Jest to wynik częściowy:

<y0:Employee xmlns:y0="urn:myschema:Contacts" 
             LName="Achong" CID="1" FName="Gustavo"/>
<y0:Employee xmlns:y0="urn:myschema:Employees" 
             LName="Abel" CID="2" FName="Catherine"/>

Prefiksy, które są generowane w dokumencie XML są dowolne, ale będą mapować do tego samego obszaru nazw.

Aby uzyskać informacje na temat określania docelowego obszaru nazw w schematy XDR zobacz Określanie sql:miejsce docelowe z docelowego obszaru nazw przy użyciu-obszaru nazw (schematu XDR).