Delen via


CDATA-secties aanmaken met sql:use-cdata (SQLXML 4.0)

Van toepassing op:SQL ServerAzure SQL Database

In XML worden CDATA-secties gebruikt om tekstblokken te ontvluchten die tekens bevatten die anders als markuptekens zouden worden herkend.

Een database in Microsoft SQL Server kan soms tekens bevatten die door de XML-parser als opmaaktekens worden behandeld; bijvoorbeeld, haakjes (< en >), het minder-of-gelijk-aan-symbool (<=), en het ampersand (&) worden behandeld als markuptekens. Je kunt dit type speciale tekens echter in een CDATA-sectie plaatsen om te voorkomen dat ze als markuptekens worden behandeld. De tekst binnen de CDATA-sectie wordt door de XML-parser behandeld als platte tekst.

De sql:use-cdata-annotatie wordt gebruikt om aan te geven dat de door SQL Server teruggegeven data in een CDATA-sectie moet worden verpakt (dat wil zeggen, het geeft aan of de waarde uit een kolom die door sql:field is gespecificeerd, in een CDATA-sectie moet worden opgenomen). De sql:use-cdata-annotatie kan alleen worden gespecificeerd op elementen die aan een databasekolom worden gekoppeld.

De sql:use-cdata-annotatie neemt een Booleaanse waarde aan (0 = onwaar, 1 = waar). De acceptabele waarden zijn 0, 1, waar en onwaar.

Deze annotatie kan niet worden gebruikt met sql:url-encode of op de attributen ID, IDREFS, IDREFS, NMTOKEN en NMTOKENS.

Voorbeelden

Om werkmonsters te maken met de volgende voorbeelden, moet je aan bepaalde eisen voldoen. Voor meer informatie, zie Vereisten voor het uitvoeren van SQLXML-voorbeelden.

Eén. Specificeren van sql:use-cdata op een element

In het volgende schema is sql:use-cdata ingesteld op 1 (True) voor de <AddressLine1> binnen het <Address-element> . Als gevolg hiervan worden de gegevens teruggegeven in een CDATA-sectie.

<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>  
Om een voorbeeld van een XPath-query te testen tegen het schema
  1. Kopieer de bovenstaande schemacode en plak deze in een tekstbestand. Sla het bestand op als UseCData.xml.

  2. Kopieer het volgende sjabloon en plak het in een tekstbestand. Sla het bestand op als UseCDataT.xml in dezelfde map waar je UseCData.xmlhebt opgeslagen.

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

    Het directorypad dat voor het mappingschema (UseCData.xml) is gespecificeerd is relatief tot de map waar het sjabloon wordt opgeslagen. Een absoluut pad kan ook worden gespecificeerd, bijvoorbeeld:

    mapping-schema="C:\SqlXmlTest\UseCData.xml"  
    
  3. Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het sjabloon uit te voeren.

    Zie ADO gebruiken om SQLXML 4.0-query's uit te voeren voor meer informatie.

Dit is de gedeeltelijke resultaatset:

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