Aracılığıyla paylaş


sql:use-cdata (SQLXML 4.0) kullanarak CDATA Bölümleri Oluşturma

Şunlar için geçerlidir:SQL ServerAzure SQL Veritabanı

XML'de, başka türlü işaretleme karakterleri olarak tanınacak metin bloklarından kaçmak için CDATA bölümleri kullanılır.

Microsoft SQL Server'daki bir veritabanı bazen XML ayrıştırıcı tarafından işaretleme karakteri olarak ele alınan karakterler içerebilir; Örneğin, açı parantezleri (< ve >), az ya da eşit sembolü (<=) ve ampersand (&) işaretleme karakterleri olarak kabul edilir. Ancak, bu tür özel karakterleri işaretleme karakterleri olarak ele alınmasını önlemek için bir CDATA bölümüne sarabilirsiniz. CDATA bölümündeki metin, XML ayrıştırıcı tarafından düz metin olarak ele alınır.

sql:use-cdata açıklaması, SQL Server tarafından döndürülen verinin bir CDATA bölümüne sarılması gerektiğini belirtmek için kullanılır (yani, sql:field tarafından belirtilen bir sütundan gelen değerin CDATA bölümüne dahil edilip edilmeyeceğini belirtir). sql:use-cdata açıklaması yalnızca veritabanı sütununa eşlenen öğeler üzerinde belirtilebilir.

sql:use-cdata açıklaması bir Boolean değeri alır (0 = yanlış, 1 = doğru). Kabul edilebilir değerler 0, 1, doğru ve yanlıştır.

Bu açıklama sql:url-encode ile veya ID, IDREF, IDREFS, NMTOKEN ve NMTOKEN özellik tiplerinde kullanılamaz.

Ö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:use-cdata bir eleman üzerinde belirtilme

Aşağıdaki şemada, sql:use-cdataAdres> öğesi içindeki Adres Satırı1<>için 1 (Doğru) olarak ayarlanmıştır.< Sonuç olarak, veri bir CDATA bölümünde döner.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  <xsd:element name="Address"   
               sql:relation="Person.Address"   
               sql:key-fields="AddressID" >  
   <xsd:complexType>  
        <xsd:sequence>  
          <xsd:element name="AddressID"  type="xsd:string" />  
          <xsd:element name="AddressLine1" type="xsd:string"   
                       sql:use-cdata="1" />  
        </xsd:sequence>  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
Örnek XPath sorgusunu şema karşısında test etmek için
  1. Yukarıdaki şema kodunu kopyalayıp metin dosyasına yapıştırın. Dosyayı UseCData.xmlolarak kaydet.

  2. Aşağıdaki şablonu kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı aynı dizinde UseCDataT.xml olarak kaydet UseCData.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
        <sql:xpath-query mapping-schema="UseCData.xml">  
            /Address[AddressID < 11]  
        </sql:xpath-query>  
    </ROOT>  
    

    Eşleme şeması (UseCData.xml) için belirtilen dizin yolu, şablonun kaydedildiği dizine görecelidir. Mutlak bir yol da belirtilebilir, örneğin:

    mapping-schema="C:\SqlXmlTest\UseCData.xml"  
    
  3. Ş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. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.

İşte kısmi sonuç kümesi:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">   
  <Address>   
    <AddressID>1</CustomerID>   
    <AddressLine1>   
      <![CDATA[ 1970 Napa Ct.  ]]>   
    </AddressLine1>   
  </Address>  
  <Address>  
    <AddressLine1>   
      <![CDATA[ 9833 Mt. Dias Blv. ]]>   
    </AddressLine1>   
  </Address>  
  ...  
</ROOT>