Açık bir eşleme XSD öğeleri ve öznitelikleri için tabloları ve sütunları (SQLXML 4.0)
Bir XSD şeması, XML bir ilişkisel veritabanı görünümünü sağlamak için kullanırken, tablolar ve sütunlar veri tabanının, öğeler ve öznitelikler, şema eşlenmelidir.XML belgesi içindeki öğeler için veritabanı tablo/görünüm satırları eşler.Öznitelik veya öğe için veritabanındaki sütun değerlerini eşleyin.
XPath sorguları karşı ek açıklama eklenen XSD şeması belirtildiğinde, öğeler ve öznitelikler, şema için veriyi tablolar ve sütunlar için eşleme alınır.Tek bir değer, veritabanından elde etmek için , XSD şemasında belirtilen eşleme ilişkisi hem de alan belirtimi olması gerekir.Öğe/öznitelik adı, bu eşlemeleri, tablo/görünüm veya sütun adı adıyla aynı değilse, sql:relation ve sql:field ek açıklamalar, bir XML belgesine ve Tablo (Görünüm) veya bir veritabanı sütununda bir öğe veya öznitelik arasındaki eşlemeyi belirtmek için kullanılır.
SQL ilişkisi
The sql:relation annotation is added to map an XML node in the XSD schema to a database tablo. Bir tablonun (Görünüm) değeri olarak belirtilen sql:relation Ek açıklama.
Ne zaman sql:relation Bu ek açıklama kapsamına tüm öznitelikleri ve bu nedenle açıklamaları yazarken kısayol sağlayarak, bu öğenin karmaşık tür tanımında'de açıklanan alt öğeler geçerli bir öğede belirtildi.
The sql:relation annotation is also useful when identifiers that are valid in Microsoft SQL Server are not valid in XML.Örneğin, "Sipariş Ayrıntıları", geçerli bir tablo adı olur. SQL Server Ancak XML değil. Bu gibi durumlarda sql:relation Ek açıklama, eşleme, örneğin belirtmek için kullanılabilir:
<xsd:element name="OD" sql:relation="[Order Details]">
SQL alan
The sql-field annotation maps an element or öznitelik to a database sütun. The sql:field annotation is added to map an XML node in the schema to a database sütun. Belirtemezsiniz sql:field üzerinde boş bir içerik öğesi.
Örnekler
Aşağıdaki örnekler kullanarak çalışma örnekleri oluşturmak için , belirli gereksinimleri karşılaması gerekir.Daha fazla bilgi için bkz:SQLXML örnekleri çalıştırma gereksinimleri.
C.Ek açıklamaları sql:relation ve sql:alan belirtme
Bu örnekte, XSD şeması oluşan bir <İlgili kişi> öğesi karmaşık tür <FName> ve <LName> alt öğeler ve Ilgili kişi kimliği öznitelik.
The sql:relation annotation maps the <Contact> element to the Person.Contact tablo in the AdventureWorks database. The sql:field annotation maps the <FName> element to the FirstName sütun and the <LName> element to the LastName sütun.
Hiçbir ek açıklama için belirtilen Ilgili kişi kimliği öznitelik.Bu sütuna aynı ada sahip bir özniteliğin varsayılan eşlemesindeki olur.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Contact" sql:relation="Person.Contact" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FName"
sql:field="FirstName"
type="xsd:string" />
<xsd:element name="LName"
sql:field="LastName"
type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="ContactID"
type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Şemaya örnek bir XPath sorgusu sınamak için
Yukarıdaki şema kodunu kopyalayıp, bir metin dosyasına yapıştırın.Dosyayı MySchema annotated.xml kaydedin.
Aşağıdaki şu şablonu kopyalayıp, bir metin dosyasına yapıştırın.Dosyayı MySchema annotatedT.xml MySchema annotated.xml kaydettiğiniz aynı dizine kaydedin.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchema-annotated.xml"> /Contact </sql:xpath-query> </ROOT>
Eşleştirme şemasını (MySchema annotated.xml) dizini belirtilen şablon kaydedildiği göreli dizinidir.Mutlak bir yol da, örneğin belirtilebilir:
mapping-schema="C:\SqlXmlTest\MySchema-annotated.xml"
Oluşturun ve SQLXML 4.0 sınama komut dosyası (Sqlxml4test.vbs) şablonu yürütmek için kullanın.
Daha fazla bilgi için bkz: ADO SQLXML sorgu yürütmek işlemi için kullanma.
Kısmi bir sonuç kümesi aşağıdadır:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contact ContactID="1">
<FName>Gustavo</FName>
<LName>Achong</LName>
</Contact>
.....
</ROOT>