Condividi tramite


Creazione di sezioni CDATA con sql:use-cdata (SQLXML 4.0)

In XML, le sezioni CDATA vengono utilizzate per i blocchi di escape di testo contenenti caratteri che altrimenti verrebbero riconosciuti come caratteri di markup.

Un database in Microsoft SQL Server può talvolta contenere caratteri trattati come caratteri di markup dal parser XML; ad esempio, parentesi angolari (< e >), il simbolo minore o uguale a (<=) e la e commerciale (&) vengono considerati come caratteri di markup. Tuttavia, è possibile eseguire il wrapping di questo tipo di caratteri speciali in una sezione CDATA per impedire che vengano considerati come caratteri di markup. Il testo all'interno della sezione CDATA viene considerato dal parser XML come testo normale.

L'annotazione sql:use-cdata viene usata per specificare che i dati restituiti da SQL Server devono essere racchiusi in una sezione CDATA, ovvero indica se il valore di una colonna specificata da sql:field deve essere racchiuso in una sezione CDATA. L'annotazione sql:use-cdata può essere specificata solo su elementi che eseguono il mapping a una colonna di database.

L'annotazione sql:use-cdata accetta un valore booleano (0 = false, 1 = true). I valori possibili sono 0, 1, true e false.

Questa annotazione non può essere usata con o sui sql:url-encode tipi di attributo ID, IDREF, IDREFS, NMTOKEN e NMTOKENS.

Esempi

Per creare esempi reali utilizzando gli esempi seguenti, è necessario soddisfare alcuni requisiti. Per altre informazioni, vedere Requisiti per l'esecuzione di esempi SQLXML.

Un. Specifica di sql:use-cdata in un elemento

Nello schema sql:use-cdata seguente è impostato su 1 (True) per <AddressLine1> all'interno dell'elemento <Address> . Di conseguenza, i dati vengono restituiti in una sezione CDATA.

<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>  
Per testare una query Xpath di esempio sullo schema
  1. Copiare il codice dello schema precedente e incollarlo in un file di testo. Salvare il file come UseCData.xml.

  2. Copiare il modello seguente e incollarlo in un file di testo. Salvare il file come UseCDataT.xml nella stessa directory in cui è stato salvato 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>  
    

    Il percorso della directory specificato per lo schema di mapping (UseCData.xml) è relativo alla directory in cui viene salvato il modello. È possibile specificare anche un percorso assoluto, ad esempio:

    mapping-schema="C:\SqlXmlTest\UseCData.xml"  
    
  3. Creare e utilizzare lo script di test SQLXML 4.0 (Sqlxml4test.vbs) per eseguire il modello.

    Per altre informazioni, vedere Uso di ADO per eseguire query SQLXML 4.0.

Questo è il set di risultati parziale:

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