Skapa CDATA-sektioner med sql:use-cdata (SQLXML 4.0)

gäller för:SQL ServerAzure SQL Database

I XML används CDATA-sektioner för att ta bort textblock som innehåller tecken som annars skulle kännas igen som markeringstecken.

En databas i Microsoft SQL Server kan ibland innehålla tecken som behandlas som markeringstecken av XML-parsern; till exempel behandlas vinkelparenteser (< och >), den mindre-eller-lika-symbolen (<=), och ampersanden (&) som markeringstecken. Du kan dock paketera denna typ av specialtecken i en CDATA-sektion för att förhindra att de behandlas som markuptecken. Texten i CDATA-sektionen behandlas av XML-parsern som ren text.

sql:use-cdata-annotationen används för att specificera att data som returneras av SQL Server ska paketeras i en CDATA-sektion (det vill säga den anger om värdet från en kolumn som anges av sql:field ska vara inneslutet i en CDATA-sektion). sql:use-cdata-anmärkningen kan endast specificeras på element som mappas till en databaskolumn.

sql:use-cdata-annoteringen tar ett boolesk värde (0 = falskt, 1 = sant). De acceptabla värdena är 0, 1, sant och falskt.

Denna annotering kan inte användas med sql:url-encode eller på attributtyperna ID, IDREFS, IDREFS, NMTOKEN och NMTOKENS.

Examples

För att skapa arbetsprover med hjälp av följande exempel måste du uppfylla vissa krav. För mer information, se Krav för att köra SQLXML-exempel.

A. Specificering av sql:use-cdata på ett element

I följande schema sätts sql:use-cdata till 1 (True) för <AddressLine1> inom Address-elementet<>. Som ett resultat returneras data i en CDATA-sektion.

<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>  
För att testa en exempel-XPath-fråga mot schemat
  1. Kopiera schemakoden ovan och klistra in den i en textfil. Spara filen som UseCData.xml.

  2. Kopiera följande mall och klistra in den i en textfil. Spara filen som UseCDataT.xml i samma katalog där du sparade 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>  
    

    Den katalogväg som anges för mappningsschemat (UseCData.xml) är relativ till katalogen där mallen sparas. En absolut väg kan också specificeras, till exempel:

    mapping-schema="C:\SqlXmlTest\UseCData.xml"  
    
  3. Skapa och använd SQLXML 4.0 Test Script (Sqlxml4test.vbs) för att köra mallen.

    Mer information finns i Använda ADO för att köra SQLXML 4.0-frågor.

Detta är den partiella resultatmängden:

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