Compartilhar via


Criando seções CDATA usando sql:use-cdata (Esquema XDR)

Observação importanteImportante

Este tópico está incluso como referência para aplicativos herdados. Não será feito nenhum trabalho de desenvolvimento futuro nesse recurso. Evite usá-lo em novos trabalhos de desenvolvimento. Em vez disso, use esquemas XSD anotados para criar exibições XML. Para obter mais informações, consulte Introdução a esquemas XSD anotados (SQLXML 4.0). Você pode converter esquemas XDR anotados existentes em esquemas XSD. Para obter mais informações, consulte Convertendo esquemas XDR anotados a esquemas XSD equivalentes (SQLXML 4.0).

Em XML, as seções CDATA são usadas para sair de blocos de texto que contenham caracteres que seriam reconhecidos como marcação.

Os dados do Microsoft SQL Server podem conter caracteres considerados especiais pelo analisador XML; por exemplo, caracteres como, por exemplo, <, >, <=, & são tratados como caracteres de marcação. Caso queira evitar que dados do SQL Server que contenham caracteres especiais sejam tratados como marcação, você pode colocá-los em uma seção CDATA. O texto colocado na seção CDATA é tratado como texto sem formatação.

A anotação sql:use-cdata é usada para especificar se os dados retornados pelo SQL Server sejam colocados em uma seção CDATA. Use a anotação sql:use-cdata para indicar se o valor da coluna especificada por sql:field deve ser colocado em uma seção CDATA. A anotaçãosql:use-cdata pode ser especificada em <ElementType> ou <element>, e usa um valor booleano (0 = FALSE, 1 = TRUE). sql:use-cdata não pode ser usado com sql:url-encode ou qualquer outro tipo de atributo ID, IDREF, IDREFS, NMTOKEN ou 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 do SQLXML.

A. Especifique sql:use-cdata em um elemento

Neste esquema, sql:use-cdata é definido como 1 (TRUE) para o elemento <AddressLine1>. Como resultado, os dados de <AddressLine1> são retornados na seção 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 testar uma consulta XPath de exemplo com relação ao esquema

  1. Copie o código de esquema acima e cole-o em um arquivo de texto. Salve o arquivo como UseCdataXdr.xml.

  2. Copie o modelo a seguir e cole-o em um arquivo de texto. Salve o arquivo como UseCdataXdrT.xml no mesmo diretório em que você salvou 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>
    

    O caminho de diretório especificado para o esquema de mapeamento (UseCdataXdr.xml) é relativo ao diretório onde o modelo está salvo. Também é possível especificar um caminho absoluto, por exemplo:

    mapping-schema="C:\MyDir\UseCdataXdr.xml"
    
  3. Crie e use o script de teste SQLXML 4.0 (Sqlxml4test.vbs) para executar o modelo.

    Para obter mais informações, consulte Usando o ADO para executar consultas do SQLXML 4.0.

Este é o conjunto de resultados:

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

Consulte também

Referência