Crear secciones CDATA mediante sql:use-cdata (esquema de XDR)
Importante |
---|
Este tema se incluye como referencia para las aplicaciones heredadas. No se llevará a cabo ningún trabajo de desarrollo de esta característica en el futuro. Evite utilizarla en nuevos trabajos de desarrollo. En su lugar, use esquemas XSD anotados para crear vistas XML. Para obtener más información, vea Introducción a los esquemas XSD anotados (SQLXML 4.0). Puede convertir los esquemas XDR anotados existentes en esquemas XSD. Para obtener más información, vea Convertir esquemas XDR anotados en esquemas XSD equivalentes (SQLXML 4.0). |
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 lenguaje de marcado.
Los datos de Microsoft SQL Server pueden contener caracteres que el analizador XML considere especiales; por ejemplo, caracteres como <, >, <=, & se consideran caracteres de marcado. Si desea evitar que una serie de datos de SQL Server que contengan caracteres especiales se consideren caracteres de marcado, puede incluirlos en una sección CDATA. El texto incluido en la sección CDATA se considera como texto sin formato.
La anotación sql:use-cdata se utiliza para especificar si los datos devueltos por SQL Server deben incluirse en una sección CDATA. Use la anotación sql:use-cdata para indicar si el valor de la columna especificada por sql:field debe incluirse en una sección CDATA. La anotación sql:use-cdata puede especificarse en <ElementType> o <element>, y toma un valor booleano (0 = FALSE, 1 = TRUE). sql:use-cdata no puede utilizarse con sql:url-encode ni en ninguno de los tipos de atributo ID, IDREF, IDREFS, NMTOKEN o NMTOKENS.
Ejemplos
Para crear ejemplos funcionales mediante los ejemplos siguientes, debe cumplir determinados requisitos. Para obtener más información, vea Requisitos para ejecutar los ejemplos de SQLXML.
A. Especificar sql:use-cdata en un elemento
En este esquema, sql:use-cdata está establecido en 1 (TRUE) para el elemento <AddressLine1>. Como resultado, los datos de <AddressLine1> se devuelven en la sección 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>
Para probar una consulta XPath de ejemplo en el esquema
Copie el código de esquema anterior y péguelo en un archivo de texto. Guarde el archivo como UseCdataXdr.xml.
Copie la plantilla siguiente y péguela en un archivo de texto. Guarde el archivo como UseCdataXdrT.xml en el mismo directorio donde guardó 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>
La ruta de acceso al directorio especificada para el esquema de asignación (UseCdataXdr.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:\MyDir\UseCdataXdr.xml"
Cree y use el script de prueba SQLXML 4.0 (Sqlxml4test.vbs) para ejecutar la plantilla.
Para obtener más información, vea Utilizar ADO para ejecutar consultas SQLXML 4.0.
El conjunto de resultados es:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Address>
<AddressID>1</AddressID>
<AddressLine1>
<![CDATA[ 1970 Napa Ct.]]>
</AddressLine1>
</Address>
</ROOT>