Partager via


Création de sections CDATA à l'aide de sql:use-cdata (schéma XDR)

Important

Cette rubrique est fournie à titre de référence pour les applications héritées. Cette fonctionnalité ne fera plus l'objet d'aucun travail de développement. Évitez de l'utiliser dans vos nouveaux travaux de développement. Utilisez à la place des schémas XSD annotés pour créer des vues XML. Pour plus d'informations, consultez Introduction aux schémas XSD annotés (SQLXML 4.0). Vous pouvez convertir des schémas XDR annotés existants en schémas XSD. Pour plus d'informations, consultez Conversion de schémas XDR annotés en schémas XSD équivalents (SQLXML 4.0).

En XML, les sections CDATA sont utilisées pour l'échappement des blocs de texte contenant des caractères qui seraient reconnus comme du balisage dans un autre contexte.

Les données Microsoft SQL Server peuvent contenir des caractères considérés comme spéciaux par l'analyseur XML. Par exemple, des caractères tels que <, >, <=, & sont traités comme des caractères de balisage. Si vous souhaitez éviter que les données SQL Server contenant des caractères spéciaux soient traitées comme du balisage, vous pouvez les encapsuler dans une section CDATA. Le texte placé dans la section CDATA est traité comme du texte brut.

L'annotation sql:use-cdata est utilisée pour spécifier si les données retournées par SQL Server doivent être encapsulées dans une section CDATA. Utilisez l'annotation sql:use-cdata pour indiquer si la valeur de la colonne spécifiée par sql:field doit être englobée dans une section CDATA. L'annotation sql:use-cdata peut être spécifiée sur <ElementType> ou <element> ; elle prend une valeur booléenne (0 = FALSE, 1 = TRUE). sql:use-cdata ne peut pas être utilisée avec sql:url-encode ni avec l'un des types d'attributs ID, IDREF, IDREFS, NMTOKEN ou NMTOKENS.

Exemples

Pour créer des exemples fonctionnels à l'aide des exemples suivants, un certain nombre de conditions doivent être réunies. Pour plus d'informations, consultez Configuration requise pour l'exécution des exemples SQLXML.

A. Spécifier sql:use-cdata sur un élément

Dans ce schéma, sql:use-cdata a la valeur 1 (TRUE) pour l'élément <AddressLine1>. En conséquence, les données pour <AddressLine1> sont retournées dans la section CDATA.

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
   xmlns:dt="urn:schemas-microsoft-com:datatypes"
   xmlns:sql="urn:schemas-microsoft-com:xml-sql">

   <ElementType name="AddressID" content="textOnly" />
   <ElementType name="AddressLine1" content="textOnly" />

   <ElementType name="Address" sql:relation="Person.Address">
      <element type="AddressID" />
      <element type="AddressLine1" sql:use-cdata="1"  />
   </ElementType>

</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 sous le nom UseCdataXdr.xml.

  2. Copiez le modèle suivant et collez-le dans un fichier texte. Enregistrez le fichier sous le nom UseCdataXdrT.xml dans le répertoire où vous avez enregistré le fichier UseCdataXdr.xml.

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

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

    mapping-schema="C:\MyDir\UseCdataXdr.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, consultez Utilisation d'ADO pour exécuter des requêtes SQLXML 4.0.

Voici le jeu de résultats obtenu :

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Address>
    <AddressID>1</AddressID> 
    <AddressLine1>
       <![CDATA[ 1970 Napa Ct.]]> 
    </AddressLine1>
  </Address>
</ROOT>