Partager via


Création de sections CDATA à l’aide de sql :use-cdata (SQLXML 4.0)

Dans XML, les sections CDATA sont utilisées pour échapper des blocs de texte qui contiennent des caractères qui seraient autrement reconnus comme des caractères de balisage.

Une base de données dans Microsoft SQL Server peut parfois contenir des caractères traités comme des caractères de balisage par l’analyseur XML ; par exemple, les crochets d’angle (< et >), les symboles inférieurs à ou égal à (<=) et les ampersand (&) sont traités comme des caractères de balisage. Toutefois, vous pouvez encapsuler ce type de caractères spéciaux dans une section CDATA pour les empêcher d’être traités comme des caractères de balisage. Le texte de la section CDATA est traité par l’analyseur XML comme du texte brut.

L’annotation sql:use-cdata est utilisée pour spécifier que les données retournées par SQL Server doivent être encapsulées dans une section CDATA (autrement dit, indique si la valeur d’une colonne spécifiée par sql:field doit être placée dans une section CDATA). L’annotation sql:use-cdata peut être spécifiée uniquement sur les éléments mappés à une colonne de base de données.

L’annotation sql:use-cdata prend une valeur booléenne (0 = false, 1 = true). Les valeurs acceptables sont 0, 1, true et false.

Cette annotation ne peut pas être utilisée avec sql:url-encode ou sur les types d’attributs ID, IDREFS, NMTOKEN et NMTOKENS.

Exemples

Pour créer des exemples fonctionnels à l'aide des exemples suivants, vous devez répondre à certaines conditions requises. Pour plus d’informations, consultez Configuration requise pour exécuter des exemples SQLXML.

Un. Spécification de sql :use-cdata sur un élément

Dans le schéma suivant, sql:use-cdata la valeur 1 est définie sur 1 (True) pour AddressLine1<> dans l’élément <Address>. Par conséquent, les données sont retournées dans une section 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>  
Pour tester un exemple de requête XPath sur le schéma
  1. Copiez le code de schéma ci-dessus et collez-le dans un fichier texte. Enregistrez le fichier en tant que UseCData.xml.

  2. Copiez le modèle suivant et collez-le dans un fichier texte. Enregistrez le fichier en tant que UseCDataT.xml dans le même répertoire que celui où vous avez enregistré 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>  
    

    Le chemin d’accès au répertoire spécifié pour le schéma de mappage (UseCData.xml) est relatif au répertoire dans lequel le modèle est enregistré. Vous pouvez également spécifier un chemin d'accès absolu, par exemple :

    mapping-schema="C:\SqlXmlTest\UseCData.xml"  
    
  3. Créez et utilisez le script de test SQLXML 4.0 (Sqlxml4test.vbs) pour exécuter le modèle.

    Pour plus d'informations, voir Utilisation d'ADO pour exécuter des requêtes SQLXML 4.0.

Il s’agit du jeu de résultats partiel :

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