Criando seções CDATA usando sql:use-cdata (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 caracteres de marcação.
Um banco de dados no Microsoft SQL Server às vezes pode conter caracteres tratados como caracteres de marcação pelo analisador XML; por exemplo, colchetes angulares (< e >), o símbolo de 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 sql:use-cdata
anotação é usada para especificar que os dados retornados por 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
só pode ser especificada em elementos que mapeiam para uma coluna de banco de dados.
A anotação sql:use-cdata
usa um valor Booliano (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.
a. 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 Usando 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>