Criando seções CDATA usando sql:use-cdata (SQLXML 4.0)
Aplica-se a: SQL Server Banco de Dados SQL do Azure
Em XML, as seções CDATA são usadas para sair de blocos de texto que contenham caracteres que seriam reconhecidos como caracteres de marcação.
Às vezes, um banco de dados no Microsoft SQL Server pode conter caracteres que são tratados como caracteres de marcação pelo analisador XML; Por exemplo, colchetes angulares (< e >), o símbolo menor ou igual a (<=) e o E comercial (&) são tratados como caracteres de marcação. No entanto, é possível quebrar esse tipo de caracteres especiais em uma seção CDATA para impedi-los de serem tratados como caracteres de marcação. O texto na seção CDATA é tratado pelo analisador XML como texto sem-formatação.
A anotação sql:use-cdata é usada para especificar que os dados retornados pelo SQL Server devem ser encapsulados em uma seção CDATA (ou seja, indica se o valor de uma coluna especificada por sql:field deve ser colocado em uma seção CDATA). A anotação sql:use-cdata pode ser especificada somente em elementos que são mapeados para uma coluna de banco de dados.
A anotação sql:use-cdata usa um valor booleano (0 = false, 1 = true). Os valores aceitáveis são 0, 1, true e false.
Essa anotação não pode ser usada com sql:url-encode ou nos tipos de atributo ID, IDREF, IDREFS, NMTOKEN e NMTOKENS.
Exemplos
Para criar exemplos de funcionamento usando os exemplos a seguir, é necessário atender a determinados requisitos. Para obter mais informações, consulte Requisitos para executar exemplos de SQLXML.
R. Especificando sql:use-cdata em um elemento
No esquema a seguir, sql:use-cdata é definido como 1 (True) para o< AddressLine1> dentro do< elemento Address.> Como resultado, os dados são retornados em uma seção 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 testar uma consulta XPath de exemplo com relação ao esquema
Copie o código de esquema acima e cole-o em um arquivo de texto. Salve o arquivo como UseCData.xml.
Copie o modelo a seguir e cole-o em um arquivo de texto. Salve o arquivo como UseCDataT.xml no mesmo diretório em que você salvou 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>
O caminho de diretório especificado para o esquema de mapeamento (UseCData.xml) é relativo ao diretório onde o modelo está salvo. Também é possível especificar um caminho absoluto, por exemplo:
mapping-schema="C:\SqlXmlTest\UseCData.xml"
Crie e use o script de teste SQLXML 4.0 (Sqlxml4test.vbs) para executar o modelo.
Para obter mais informações, consulte Usar o ADO para executar consultas SQLXML 4.0.
Este é o conjunto de resultados parcial:
<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>