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.
Berlaku untuk: SQL Server
Azure SQL Database
Kueri XPath dapat menyertakan namespace layanan. Jika elemen skema memenuhi syarat namespace layanan (gunakan namespace target), kueri XPath terhadap skema harus menentukan namespace layanan.
Karena karakter kartubebas (*) tidak didukung di Microsoft SQLXML 4.0, Anda harus menentukan kueri XPath dengan menggunakan awalan namespace. Untuk mengatasi awalan, gunakan properti namespace 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 di mana nama lokal adalah Karyawan dan URI namespace adalah urn:myschema:Contacts:
/*[local-name() = 'Contact' and namespace-uri() = 'urn:myschema:Contacts']
Di SQLXML 4.0, tentukan kueri XPath ini dengan awalan namespace. Contohnya adalah x:Contact, di mana x adalah awalan namespace. 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 ini harus menyertakan namespace layanan.
Aplikasi sampel C# berikut menjalankan kueri XPath terhadap skema XSD sebelumnya (MySchema.xml). Untuk mengatasi awalan, tentukan pengikatan namespace dengan menggunakan properti Namespace dari objek SqlXmlCommand.
Catatan
Dalam kode, Anda harus memberikan nama instans SQL Server di string koneksi.
using System;
using Microsoft.Data.SqlXml;
using System.IO;
class Test
{
static string ConnString = "Provider=SQLOLEDB;Server=(local);database=AdventureWorks;Integrated Security=SSPI";
public static int testXPath()
{
//Stream strm;
SqlXmlCommand cmd = new SqlXmlCommand(ConnString);
cmd.CommandText = "x:Contact[@CID='1']";
cmd.CommandType = SqlXmlCommandType.XPath;
cmd.RootTag = "ROOT";
cmd.Namespaces = "xmlns:x='urn:myschema:Contacts'";
cmd.SchemaPath = "MySchema.xml";
using (Stream strm = cmd.ExecuteStream()){
using (StreamReader sr = new StreamReader(strm)){
Console.WriteLine(sr.ReadToEnd());
}
}
return 0;
}
public static int Main(String[] args)
{
testXPath();
return 0;
}
}
Untuk menguji contoh ini, Anda harus menginstal Microsoft .NET Framework di komputer Anda.
Untuk menguji aplikasi
Simpan skema XSD (MySchema.xml) yang disediakan dalam contoh ini dalam folder.
Simpan kode C# (DocSample.cs) yang disediakan dalam contoh ini di folder yang sama tempat skema disimpan. (Jika Anda menyimpan file di folder yang berbeda, Anda harus mengedit kode dan menentukan jalur direktori yang sesuai untuk skema pemetaan.)
Kompilasi kode. Untuk mengkompilasi kode di prompt perintah, gunakan:
csc /reference:Microsoft.Data.SqlXML.dll DocSample.csIni membuat executable (DocSample.exe).
Pada prompt perintah, jalankan DocSample.exe.