Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kueri XPath dapat menyertakan namespace layanan. Jika elemen skema memenuhi syarat namespace layanan (yaitu, jika menyertakan namespace target), kueri XPath terhadap skema harus menentukan namespace layanan ini.
Karena menggunakan karakter kartubebas (*) tidak didukung di SQLXML 4.0, Anda harus menentukan kueri XPath dengan menggunakan awalan namespace. Untuk mengatasi awalan ini, gunakan properti namespace layanan untuk menentukan pengikatan namespace.
Dalam contoh berikut, kueri XPath menentukan namespace dengan menggunakan karakter kartubebas (*) dan fungsi XPath local-name() dan namespace-uri(). Kueri XPath ini mengembalikan semua elemen tempat nama lokal berada Contact dan URI namespace adalah urn:myschema:Contacts.
/*[local-name() = 'Contact' and namespace-uri() = 'urn:myschema:Contacts']
Di SQLXML 4.0, kueri XPath ini harus ditentukan dengan awalan namespace. Contohnya adalah x:Contact, di mana x adalah awalan namespace layanan. Pertimbangkan skema XSD berikut:
<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>
Karena skema ini mendefinisikan namespace layanan target, kueri XPath (seperti "Karyawan") terhadap skema harus menyertakan namespace layanan.
Ini adalah contoh aplikasi Microsoft Visual Basic yang menjalankan kueri XPath (x:Employee) terhadap skema XSD sebelumnya. Untuk mengatasi awalan, pengikatan namespace ditentukan dengan menggunakan properti namespace.
Nota
Dalam kode, Anda harus memberikan nama instans SQL Server dalam string koneksi. Selain itu, contoh ini menentukan penggunaan SQL Server Native Client (SQLNCLI11) untuk penyedia data, yang memerlukan perangkat lunak klien jaringan tambahan untuk diinstal. Untuk informasi selengkapnya, lihat Persyaratan Sistem untuk SQL Server Native Client.
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=SQLNCLI11;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
Untuk menguji aplikasi ini
Simpan sampel skema XSD dalam folder.
Buat proyek yang dapat dieksekusi Visual Basic, dan salin kode ke dalamnya. Ubah jalur direktori yang ditentukan sebagaimana mewajarkan.
Tambahkan referensi proyek berikut:
"Microsoft ActiveX Data Objects 2.8 Library"Jalankan aplikasi.
Ini adalah hasil parsial:
<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"/>
Awalan yang dihasilkan dalam dokumen XML bersifat sewenang-wenang, tetapi dipetakan ke namespace yang sama.