Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
XPath sorguları isim alanlarını içerebilir. Eğer şema öğeleri isim alanı nitelikliyse (hedef isim alanı kullanılır), şemaya karşı yapılan XPath sorguları isim alanını belirtmelidir.
Microsoft SQLXML 4.0'da joker karakter (*) desteklenmediği için, XPath sorgusunu bir isim alanı öneki kullanarak belirtmeniz gerekir. Öneki çözmek için, namespaces özelliğini kullanarak namespace bağlamasını belirtir.
Aşağıdaki örnekte, XPath sorgu, joker karakter (*) ile local-name() ve namespace-uri() XPath fonksiyonlarını kullanarak isim alanlarını belirtir. Bu XPath sorgusu, yerel adın Employee olduğu ve isim alanı URI'si urn:myschema:Contacts: olan tüm öğeleri geri döner:
/*[local-name() = 'Contact' and namespace-uri() = 'urn:myschema:Contacts']
SQLXML 4.0'da, bu XPath sorgusunu bir namespace önekiyle belirtin. Bir örnek x:Contact'tır; burada x isim alanı önekidir. Aşağıdaki XSD şemasını ele alalım:
<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>
Bu şema hedef isim alanını tanımladığı için, bu şemaya karşı bir XPath sorgusu ("Çalışan") isim alanını da içermelidir.
Aşağıdaki C# örnek uygulaması, önceki XSD şemasına (MySchema.xml) karşı bir XPath sorgusu çalıştırır. Ön eki çözmek için, SqlXmlCommand nesnesinin Namespaces özelliğini kullanarak namespace bağlamasını belirtin.
Uyarı
Kodda, bağlantı dizesinde SQL Server örneğinin adını belirtmeniz gerekir.
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;
}
}
Bu örneği test etmek için Microsoft .NET Framework'ün bilgisayarınızda yüklü olması gerekir.
Uygulamayı test etmek için
Bu örnekte verilen XSD şemasını (MySchema.xml) bir klasörde kaydedin.
Bu örnekte verilen C# kodunu (DocSample.cs) şemanın saklandığı klasöre kaydedin. (Dosyaları farklı bir klasörde saklarsanız, kodu düzenlemeniz ve eşleme şeması için uygun dizin yolunu belirtmeniz gerekir.)
Kodu derleyin. Kodu komut isteğinde derlemek için şunları kullanın:
csc /reference:Microsoft.Data.SqlXML.dll DocSample.csBu, bir yürütülebilir (DocSample.exe) oluşturur.
Komut dizisinde, DocSample.exeçalıştırın.