Megosztás a következőn keresztül:


CDATA szekciók létrehozása sql:use-cdata (SQLXML 4.0) használatával

A következőkre vonatkozik:SQL ServerAzure SQL Database

Az XML-ben a CDATA szakaszokat arra használják, hogy kiszabaduljanak olyan szövegblokkoktól, amelyek olyan karaktereket tartalmaznak, amelyeket egyébként jelölőkarakterként ismernének fel.

A Microsoft SQL Server adatbázisában néha olyan karakterek is lehetnek, amelyeket az XML parser jelölőkarakterként kezel; például szögzárójeleket (< és >), a kevesebb vagy egyenlő szimbólumot (<=), valamint az ampersand (&) jelölő karakterként kezelik. Azonban az ilyen típusú speciális karaktereket be lehet csomagolni egy CDATA szekcióban, hogy ne kezeljék őket jelölő karakterként. A CDATA szekcióban lévő szöveget az XML elemző tiszta szövegként kezeli.

A sql:use-cdata annotációt arra használják, hogy az SQL Server által visszaküldött adatokat egy CDATA szekcióba csomagolják (azaz azt jelzi, hogy a sql:field által meghatározott oszlop értéke a CDATA szekcióba kell-e csatolva). A sql:use-cdata annotáció csak olyan elemekre adható meg, amelyek egy adatbázis-oszlophoz köthetők.

A sql:use-cdata annotáció egy Boole-értéket vesz fel (0 = hamis, 1 = igaz). Az elfogadható értékek 0, 1, igaz és hamis.

Ez az annotáció nem használható sql:url-encode-val , sem az ID, IDREF, IDREFS, NMTOKEN és NMTOKEN attribútumtípusokon.

Példák

A következő példák alapján működő minták létrehozásához bizonyos követelményeknek kell megfelelned. További információért lásd: Az SQLXML futtatási követelmények példái.

A. A sql:use-cdata meghatározása egy elemen

A következő sémában a sql:use-cdata 1-re (True) van beállítva a <AddressLine1> számára a Address> elemen< belül. Ennek eredményeként az adatokat egy CDATA szekcióban adják vissza.

<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>  
Egy minta-XPath lekérdezés tesztelése a sémához
  1. Másold le a fenti sémakódot, és illesztsd be egy szövegfájlba. Mentse el a fájlt UseCData.xml.

  2. Másold le a következő sablont, és illesztsd be egy szövegfájlba. Mentsd a fájlt UseCDataT.xml-ként ugyanabba a könyvtárba, ahol UseCData.xmlmentetted.

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

    A leképezési sémához (UseCData.xml) megadott könyvtári út viszonyítja azt a könyvtárat, ahol a sablon mentő. Abszolút út is meghatározható, például:

    mapping-schema="C:\SqlXmlTest\UseCData.xml"  
    
  3. Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) a sablon végrehajtásához.

    További információ: SqlXML 4.0-lekérdezések végrehajtása az ADO használatával.

Ez a részleges eredményhalmaz:

<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>