Compartir vía


Crear secciones CDATA mediante sql:use-cdata (SQLXML 4.0)

Se aplica a: SQL Server Azure SQL Database

En XML, las secciones CDATA se usan para establecer secuencias de escape en bloques de texto que contienen caracteres que, de lo contrario, se reconocerían como caracteres de marcado.

Una base de datos de Microsoft SQL Server a veces puede contener caracteres que se tratan como caracteres de marcado por el analizador XML; Por ejemplo, los corchetes angulares (< y >), el símbolo menor que o igual a (<=) y la y comercial (&) se tratan como caracteres de marcado. Sin embargo, puede ajustar este tipo de caracteres especiales en una sección CDATA para evitar que se traten como caracteres de marcado. El analizador XML trata el texto de la sección CDATA como texto simple.

La anotación sql:use-cdata se usa para especificar que los datos devueltos por SQL Server deben encapsularse en una sección CDATA (es decir, indica si el valor de una columna especificada por sql:field debe incluirse en una sección CDATA). La anotación sql:use-cdata solo se puede especificar en elementos que se asignan a una columna de base de datos.

La anotación sql:use-cdata toma un valor booleano (0 = false, 1 = true). Los valores permitidos son 0, 1, true y false.

Esta anotación no se puede usar con sql:url-encode o en los tipos de atributo ID, IDREF, IDREFS, NMTOKEN y NMTOKENS.

Ejemplos

Para crear muestras funcionales mediante los ejemplos siguientes, debe cumplir determinados requisitos. Para obtener más información, vea Requisitos para ejecutar ejemplos de SQLXML.

A Especificar sql:use-cdata en un elemento

En el esquema siguiente, sql:use-cdata se establece en 1 (True) para AddressLine1>< dentro del< elemento Address.> Como resultado, los datos se devuelven en una sección 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>  
Para probar una consulta XPath de ejemplo en el esquema
  1. Copie el código de esquema anterior y péguelo en un archivo de texto. Guarde el archivo como UseCData.xml.

  2. Copie la plantilla siguiente y péguela en un archivo de texto. Guarde el archivo como UseCDataT.xml en el mismo directorio donde guardó 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>  
    

    La ruta de acceso al directorio especificada para el esquema de asignación (UseCData.xml) es relativa al directorio donde se guarda la plantilla. También puede especificarse una ruta de acceso absoluta como, por ejemplo:

    mapping-schema="C:\SqlXmlTest\UseCData.xml"  
    
  3. Cree y use el script de prueba SQLXML 4.0 (Sqlxml4test.vbs) para ejecutar la plantilla.

    Para obtener más información, consulte Uso de ADO para ejecutar consultas SQLXML 4.0.

Éste es el conjunto de resultados parciales:

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