Partilhar via


Criação de Secções CDATA Usando sql:use-cdata (SQLXML 4.0)

Aplica-se a:SQL ServerBanco de Dados SQL do Azure

Em XML, as secções CDATA são usadas para escapar blocos de texto que contêm caracteres que, de outra forma, seriam reconhecidos como caracteres de marcação.

Uma base de dados no Microsoft SQL Server pode, por vezes, conter caracteres que são tratados como caracteres de marcação pelo parser XML; por exemplo, os colchetes angulares (< e >), o símbolo menor ou igual a (<=), e o e o e ampersand (&) são tratados como caracteres de marcação. No entanto, pode envolver este tipo de caracteres especiais numa secção CDATA para evitar que sejam tratados como caracteres de marcação. O texto dentro da secção CDATA é tratado pelo parser XML como texto simples.

A anotação sql:use-cdata é usada para especificar que os dados devolvidos pelo SQL Server devem ser encapsulados numa secção CDATA (ou seja, indica se o valor de uma coluna especificada por sql:field deve ser incluído numa secção CDATA). A anotação sql:use-cdata só pode ser especificada em elementos que correspondam a uma coluna de base de dados.

A anotação sql:use-cdata assume um valor booleano (0 = falso, 1 = verdadeiro). Os valores aceitáveis são 0, 1, verdadeiro e falso.

Esta anotação não pode ser usada com sql:url-encode nem nos tipos de atributos ID, IDREF, IDREFS, NMTOKEN e NMTOKENS.

Examples

Para criar exemplos funcionais usando os seguintes exemplos, deve cumprir certos requisitos. Para mais informações, consulte Requisitos para Executar Exemplos de SQLXML.

A. Especificar sql:use-cdata num elemento

No esquema seguinte, sql:use-cdata é definido para 1 (True) para o <AddressLine1> dentro do <elemento Address> . Como resultado, os dados são devolvidos numa secçã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 contra o esquema
  1. Copie o código do esquema acima e cole num ficheiro de texto. Guarde o ficheiro como UseCData.xml.

  2. Copie o modelo seguinte e cole-o num ficheiro de texto. Guarda o ficheiro como UseCDataT.xml no mesmo diretório onde guardaste 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 do diretório especificado para o esquema de mapeamento (UseCData.xml) é relativo ao diretório onde o modelo é guardado. Um caminho absoluto também pode ser especificado, por exemplo:

    mapping-schema="C:\SqlXmlTest\UseCData.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 SQLXML 4.0.

Este é o conjunto parcial de resultados:

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