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ı
XSD şemasına karşı bir şablonda XPath sorguları belirleyerek veritabanından veri almak için açıklamalı bir şemaya karşı sorgular belirleyebilirsiniz.
sql:xpath-query> öğesi,< annotated şema tarafından tanımlanan XML görünümüne karşı XPath sorgusu belirtmenize olanak tanır. XPath sorgusunun yürütüleceği açıklamalı şema, sql:xpath-query> öğesinin mapping-schema özniteliği< kullanılarak tanımlanır.
Şablonlar, bir veya daha fazla sorgu içeren geçerli XML belgeleridir. FOR XML ve XPath sorguları bir belge parçası döndürür. Şablonlar, belge parçaları için konteyner görevi görür; böylece şablonlar, tek bir üst düzey öğe belirtme imkanı sunar.
Bu konudaki örnekler, veritabanından veri almak için açıklamalı bir şema karşı XPath sorgusu belirtmek için şablonlar kullanır.
Örneğin, şu açıklamalı şemayı ele alalım:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Person.Contact" >
<xsd:complexType>
<xsd:attribute name="ContactID" type="xsd:string" />
<xsd:attribute name="FirstName" type="xsd:string" />
<xsd:attribute name="LastName" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
İllüstrasyon amacıyla, bu XSD şeması Schema2.xmladlı dosyada saklanır. Böylece aşağıdaki şablon dosyasında belirtilen açıklamalı şemaya karşı bir XPath sorgusu yapabilirsiniz (Schema2T.xml):
<sql:xpath-query
xmlns:sql="urn:schemas-microsoft-com:xmlsql"
>
Person.Contact[@ContactID="1"]
</sql:xpath-query>
Daha sonra SQLXML 4.0 Test Script (Sqlxml4test.vbs) oluşturup sorguyu bir şablon dosyasının parçası olarak çalıştırabilirsiniz. Daha fazla bilgi için Annotated XDR Schemas (SQLXML 4.0'da kullanımdan kaldırılmıştır) sayfasına bakınız.
Hat içi eşleme şemalarının kullanımı
Açıklamalı bir şema doğrudan bir şablona dahil edilebilir ve ardından bir XPath sorgusu şablonda satır içi şemaya karşı belirtilebilir. Şablon ayrıca bir updategram olabilir.
Bir şablon, birden fazla satır içi şema içerebilir. Bir şablona dahil edilen bir satır içi şema kullanmak için, xsd:schema> öğesinde benzersiz bir değerle<id niteliğini belirtin ve ardından #idvalue ile satır içi şemaya referans verin. id özniteliği, XDR şemalarında kullanılan sql:id ({urn:schemas-microsoft-com:xml-sql}id) ile davranış olarak aynıdır.
Örneğin, aşağıdaki şablon iki satır-açıklamalı şema belirtir:
<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:ms='urn:schemas-microsoft-com:mapping-schema'
id='InLineSchema1' sql:is-mapping-schema='1'>
<xsd:element name='Employees' ms:relation='HumanResources.Employee'>
<xsd:complexType>
<xsd:attribute name='LoginID'
type='xsd:string'/>
<xsd:attribute name='Title'
type='xsd:string'/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:ms='urn:schemas-microsoft-com:mapping-schema'
id='InLineSchema2' sql:is-mapping-schema='1'>
<xsd:element name='Contacts' ms:relation='Person.Contact'>
<xsd:complexType>
<xsd:attribute name='ContactID'
type='xsd:string' />
<xsd:attribute name='FirstName'
type='xsd:string' />
<xsd:attribute name='LastName'
type='xsd:string' />
</xsd:complexType>
</xsd:element>
</xsd:schema>
<sql:xpath-query xmlns:sql='urn:schemas-microsoft-com:xml-sql'
mapping-schema='#InLineSchema1'>
/Employees[@LoginID='adventure-works\guy1']
</sql:xpath-query>
<sql:xpath-query xmlns:sql='urn:schemas-microsoft-com:xml-sql'
mapping-schema='#InLineSchema2'>
/Contacts[@ContactID='1']
</sql:xpath-query>
</ROOT>
Şablon ayrıca iki XPath sorgusu da belirtir. Her bir xpath-sorgu> elemanı,< eşleme şemasını benzersiz şekilde tanımlar; eşleme-şeması özniteliğini belirtir.
Şablonda bir satır içi şema belirttiğinizde, sql:is-mapping-schema annotasyonu da xsd:schema> öğesinde belirtilmelidir<. sql:is-mapping-şeması bir Boolean değeri alır (0=yanlış, 1=doğru). sql:is-mapping-schema="1" içeren bir satır içi şema, hatlı açıklamalı şema olarak kabul edilir ve XML belgesinde geri dönmez.
sql:is-mapping-şema açıklaması, urn:schemas-microsoft-com:xml-sql şablon isim alanına aittir.
Bu örneği test etmek için, şablonu (InlineSchemaTemplate.xml) yerel bir dizine kaydedin ve ardından SQLXML 4.0 Test Script (Sqlxml4test.vbs) oluşturup şablonu çalıştırın. Daha fazla bilgi için bkz. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.
Mapping-schema özniteliğini <bir şablondaki sql:xpath-query> öğesinde (XPath sorgusu olduğunda) veya <updategram'daki updg:sync> öğesinde belirtmenin yanı sıra, şunları yapabilirsiniz:
Şablondaki ROOT> öğesinde (küresel bildirme) eşleme şeması özniteliğini< belirtin. Bu eşleme şeması, açık eşleme şeması açıklaması olmayan tüm XPath ve updategram düğümleri tarafından kullanılacak varsayılan şema haline gelir.
ADO Command nesnesini kullanarak eşleme şeması özniteliğini belirtin.
xpath-query> veya updg:sync öğesinde belirtilen mapping-şema özniteliği< en yüksek önceliğe sahiptir; ADO Command nesnesi en düşük önceliğe sahiptir.><
Bir şablonda XPath sorgusu belirtirseniz ve XPath sorgusunun yürütüleceği bir eşleme şeması belirtmiyorsanız, XPath sorgusu dbobject türü sorgu olarak kabul edilir. Örneğin, şu şablonu ele alalım:
<sql:xpath-query
xmlns:sql="urn:schemas-microsoft-com:xmlsql">
Production.ProductPhoto[@ProductPhotoID='100']/@LargePhoto
</sql:xpath-query>
Şablon bir XPath sorgusu belirtir ancak bir eşleme şeması belirtmez. Bu nedenle, bu sorgu, Production.ProductPhoto tablo adı, @ProductPhotoID='100' ise 100 ID değerine sahip bir ürün fotoğrafı bulan bir predikattır. @LargePhoto değerin alınacağı sütundur.