Création de sections CDATA à l'aide de sql:use-cdata (SQLXML 4.0)
S’applique à : SQL ServerAzure SQL Database
En XML, les sections CDATA sont utilisées pour l'échappement des blocs de texte qui contiennent des caractères qui seraient reconnus comme caractères de balisage dans un autre contexte.
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 afin de les empêcher d'être traités comme des caractères de balisage. Le texte dans 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 entre 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 le code sql :url ou sur les types d’attributs ID, IDREFS, 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.
A. Spécification de sql:use-cdata sur un élément
Dans le schéma suivant, sql :use-cdata a la valeur 1 (True) pour AddressLine1> <dans l’élément <Address.> En conséquence, 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
Copiez le code de schéma ci-dessus et collez-le dans un fichier texte. Enregistrez le fichier sous le nom UseCData.xml.
Copiez le modèle suivant et collez-le dans un fichier texte. Enregistrez le fichier sous le nom UseCDataT.xml dans le répertoire où vous avez enregistré le fichier 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 où le modèle est enregistré. Vous pouvez également spécifier un chemin d'accès absolu, par exemple :
mapping-schema="C:\SqlXmlTest\UseCData.xml"
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.
Voici le 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>