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ı
Bir XPath sorgusu bir XSD şemasına karşı belirtildiğinde, çoğu durumda sonucu doğru iç içe geçirme elde etmek için anahtar bilgisi gereklidir. sql:key-fields açıklamasının belirtilmesi, uygun hiyerarşinin oluşturulmasını sağlamanın bir yoludur.
Uyarı
Doğru iç içe geçirmeyi sağlamak için, tablolara eşlenen öğeler için sql:key-fields belirtmeniz önerilir. Üretilen XML, temel sonuç setinin sıralanmasına duyarlıdır. sql:key-fields belirtilmemişse, oluşturulan XML doğru şekilde oluşturulmayabilir.
sql:key-fields değeri, ilişkideki satırları benzersiz şekilde tanımlayan sütun(lar)ı tanımlar. Bir satırı benzersiz şekilde tanımlamak için birden fazla sütun gerekiyorsa, sütun değerleri boşluklarla sınırlandırılır.
Bir eleman, öğe ile bir alt öğe arasında tanımlanmış ancak ana öğede belirtilen tablonun birincil anahtarını sağlamayan bir sql:ilişkisi<> içerdiğinde sql:key-fields açıklamasını kullanmalısınız.
Örnekler
Aşağıdaki örneklerle çalışma örnekleri oluşturmak için belirli gereksinimleri karşılamanız gerekir. Daha fazla bilgi için Gereksinimler için SQLXML Örnekleri Çalışması için Gereksinimlere bakınız.
A. sql:relationship> yeterli bilgi sağlamadığında <uygun iç içleşme oluşturulması
Bu örnek, sql:key-fields'ın nerede belirtilmesi gerektiğini gösterir.
Aşağıdaki şemayı ele alalım. Şema, Sipariş> ve Müşteri öğeleri arasında< bir hiyerarşi belirtir; burada <Sipariş> öğesi ana unsur, Müşteri<> öğesi ise bir çocuk olarak belirlenir.><
sql:relationship> etiketi,< ebeveyn-çocuk ilişkisini belirtmek için kullanılır. Sales.SalesOrderHeader tablosunda CustomerID'sini, Sales.Customer tablosunda CustomerID alt anahtarına atıfta bulunan ana anahtar olarak tanımlar. sql:relationship'te<> sağlanan bilgiler, ana tablodaki (Sales.SalesOrderHeader) satırları benzersiz şekilde tanımlamak için yeterli değildir. Bu nedenle, sql:key-fields açıklaması olmadan oluşturulan hiyerarşi doğru değildir.
Order> üzerinde sql:key-fields belirtildiğinde<, annotasyon ebeveyn (Sales.SalesOrderHeader tablosu) içindeki satırları benzersiz şekilde tanımlar ve alt elemanlar ana karakterin altında görünür.
Şema şöyle:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="OrdCust"
parent="Sales.SalesOrderHeader"
parent-key="CustomerID"
child="Sales.Customer"
child-key="CustomerID" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="Order" sql:relation="Sales.SalesOrderHeader"
sql:key-fields="SalesOrderID">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Customer" sql:relation="Sales.Customer"
sql:relationship="OrdCust" >
<xsd:complexType>
<xsd:attribute name="CustID" sql:field="CustomerID" />
<xsd:attribute name="SoldBy" sql:field="SalesPersonID" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="SalesOrderID" type="xsd:integer" />
<xsd:attribute name= "CustomerID" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Bu şemanın çalışma örneğini oluşturmak için
Yukarıdaki şema kodunu kopyalayıp metin dosyasına yapıştırın. Dosyayı KeyFields1.xmlolarak kaydet.
Aşağıdaki şablonu kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı aynı dizinde KeyFields1T.xml olarak kaydet KeyFields1.xml. Şablondaki XPath sorgu, CustomerID değeri 3'ten küçük olan tüm <Sipariş> öğelerini döndürür.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="KeyFields1.xml"> /Order[@CustomerID < 3] </sql:xpath-query> </ROOT>Eşleme şeması (KeyFields1.xml) için belirtilen dizin yolu, şablonun kaydedildiği dizine görecelidir. Mutlak bir yol da belirtilebilir, örneğin:
mapping-schema="C:\MyDir\KeyFields1.xml"Şablonu çalıştırmak için SQLXML 4.0 Test Script'i (Sqlxml4test.vbs) oluşturun ve kullanın.
Daha fazla bilgi için bkz. Using ADO to execute SQLXML Queries.
İşte kısmi sonuç kümesi:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Order SalesOrderID="43860" CustomerID="1">
<Customer CustID="1" SoldBy="280"/>
</Order>
<Order SalesOrderID="44501" CustomerID="1">
<Customer CustID="1" SoldBy="280"/>
</Order>
<Order SalesOrderID="45283" CustomerID="1">
<Customer CustID="1" SoldBy="280"/>
</Order>
.....
</ROOT>
B. Sonuçta doğru iç içe oluşturma için sql:key-fields belirtmek
Aşağıdaki şemada, sql:relationship> kullanılarak< belirtilen hiyerarşi yoktur. Şema hâlâ çalışanları HumanResources.Employee tablosunda benzersiz şekilde tanımlamak için sql:key-fields açıklamasının belirtilmesini gerektirir.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="HumanResources.Employee" sql:key-fields="EmployeeID" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Title">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="EmployeeID" type="xsd:integer" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Bu şemanın çalışma örneğini oluşturmak için
Yukarıdaki şema kodunu kopyalayıp metin dosyasına yapıştırın. Dosyayı KeyFields2.xmlolarak kaydet.
Aşağıdaki şablonu kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı aynı dizinde KeyFields2T.xml olarak kaydet KeyFields2.xml. Şablondaki XPath sorgusu tüm <HumanResources.Employee> öğelerini döndürür:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="KeyFields2.xml"> /HumanResources.Employee </sql:xpath-query> </ROOT>Eşleme şeması (KeyFields2.xml) için belirtilen dizin yolu, şablonun kaydedildiği dizine görecelidir. Mutlak bir yol da belirtilebilir, örneğin:
mapping-schema="C:\MyDir\KeyFields2.xml"Şablonu çalıştırmak için SQLXML 4.0 Test Script'i (Sqlxml4test.vbs) oluşturun ve kullanın.
Daha fazla bilgi için bkz. Using ADO to execute SQLXML Queries.
Sonuç şu şekildedir:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<HumanResources.Employee>
<Title EmployeeID="1">Production Technician - WC60</Title>
</HumanResources.Employee>
<HumanResources.Employee>
<Title EmployeeID="2">Marketing Assistant</Title>
</HumanResources.Employee>
<HumanResources.Employee>
<Title EmployeeID="3">Engineering Manager</Title>
</HumanResources.Employee>
...
</ROOT>