CDATA significa Dados de caracteres e significa que os dados entre essas seqüências incluem dados que podem ser interpretados como marcação XML, mas não devem ser.
As principais diferenças entre CDATA e comentários são:
Isso significa que são dados esses quatro trechos de XML de um documento bem formado:
<!ENTITY MyParamEntity "Has been expanded">
<!--
Within this comment I can use ]]>
and other reserved characters like <
&, ', and ", but %MyParamEntity; will not be expanded
(if I retrieve the text of this node it will contain
%MyParamEntity; and not "Has been expanded")
and I can't place two dashes next to each other.
-->
<![CDATA[
Within this Character Data block I can
use double dashes as much as I want (along with <, &, ', and ")
*and* %MyParamEntity; will be expanded to the text
"Has been expanded" ... however, I can't use
the CEND sequence. If I need to use CEND I must escape one of the
brackets or the greater-than sign using concatenated CDATA sections.
]]>
<description>An example of escaped CENDs</description>
<!-- This text contains a CEND ]]> -->
<!-- In this first case we put the ]] at the end of the first CDATA block
and the > in the second CDATA block -->
<data><![CDATA[This text contains a CEND ]]]]><![CDATA[>]]></data>
<!-- In this second case we put a ] at the end of the first CDATA block
and the ]> in the second CDATA block -->
<alternative><![CDATA[This text contains a CEND ]]]><![CDATA[]>]]></alternative>
]]
e>
- veja esta resposta para os comos e os porquês.if (a[b[c]]>10) { }
.Uma seção CDATA é " uma seção do conteúdo do elemento que está marcada para o analisador interpretar como apenas dados de caracteres, não marcação " .
Sintaticamente, ele se comporta de maneira semelhante a um comentário:
... mas ainda faz parte do documento:
Tente salvar o seguinte como um
.xhtml
arquivo ( não.html
) e abra-o usando o FireFox ( não o Internet Explorer ) para ver a diferença entre o comentário e a seção CDATA; o comentário não aparecerá quando você olhar o documento em um navegador, enquanto a seção CDATA:Algo a ser observado nas seções CDATA é que elas não possuem codificação, portanto não há como incluir a string
]]>
nelas. Qualquer dado de caractere que contenha]]>
terá que, até onde eu saiba, ser um nó de texto. Da mesma forma, da perspectiva da manipulação do DOM, você não pode criar uma seção CDATA que inclua]]>
:Esse código de manipulação do DOM lançará uma exceção (no Firefox) ou resultará em um documento XML mal estruturado: http://jsfiddle.net/9NNHA/
fonte
Um grande caso de uso: seu xml inclui um programa, como dados (por exemplo, um tutorial de página da web para Java). Nessa situação, seus dados incluem uma grande quantidade de caracteres que incluem '&' e '<', mas esses caracteres não devem ser xml.
Comparar:
com
Especialmente se você estiver copiando / colando esse código de um arquivo (ou incluindo-o em um pré-processador), é bom ter apenas os caracteres desejados no seu arquivo xml, sem confundi-los com tags / atributos XML. Como o @paary mencionou, outros usos comuns incluem quando você incorpora URLs que contêm e comercial. Por fim, mesmo que os dados contenham apenas alguns caracteres especiais, mas sejam muito longos (o texto de um capítulo, por exemplo), é bom não ter que codificar essas poucas entidades à medida que você edita seu arquivo xml. .
(Suspeito que todas as comparações com comentários sejam meio enganosas / inúteis.)
fonte
Uma vez eu tive que usar CDATA quando meu elemento xml precisava armazenar código HTML. Algo como
Portanto, CDATA significa que ele ignorará qualquer caractere que poderia ser interpretado como tag XML como <e> etc.
fonte
Os dados nele contidos não serão analisados como XML e, como tal, não precisam ser XML válidos ou podem conter elementos que podem parecer XML, mas não são.
fonte
Da Wikipedia:
Assim: o texto dentro do CDATA é visto pelo analisador, mas apenas como caracteres, não como nós XML.
fonte
Como outro exemplo de seu uso:
Se você possui um feed RSS (documento xml) e deseja incluir alguma codificação HTML básica na exibição da descrição, pode usar o CData para codificá-lo:
O RSS Reader extrai a descrição e renderiza o HTML no CDATA.
Nota - nem todas as tags HTML funcionam - acho que depende do leitor de RSS que você está usando.
E como uma explicação do motivo pelo qual este exemplo usa CData (e não as tags pubData e dc: creator apropriadas): isto é para exibição do site usando um widget RSS para o qual não temos controle de formatação real.
Isso nos permite especificar a altura e a posição da imagem incluída, formatar os nomes dos autores e a data corretamente e assim por diante, sem a necessidade de um novo widget. Isso também significa que posso criar um script e não precisar adicioná-los manualmente.
fonte
CDATA significa Dados de caracteres. Você pode usar isso para escapar de alguns caracteres que, de outra forma, serão tratados como XML regular. Os dados dentro disso não serão analisados. Por exemplo, se você deseja transmitir uma URL que contém
&
, pode usar o CDATA para fazer isso. Caso contrário, você receberá um erro, pois será analisado como XML regular.fonte
É usado para conter dados que, de outra forma, poderiam ser vistos como xml porque contêm determinados caracteres.
Dessa forma, os dados internos serão exibidos, mas não interpretados.
fonte
Ele escapa uma string que não pode ser passada para XML como de costume:
Exemplo:
A cadeia contém "&".
Você não pode:
Portanto, você deve usar CDATA:
fonte
Geralmente usado para incorporar dados personalizados, como imagens ou dados de som em um documento XML.
fonte
Os Cdata são dados que você pode querer passar para um analisador xml e ainda não é interpretado como um xml.
Diga por exemplo: - Você possui um xml que contém um objeto de pergunta / resposta. Esses campos abertos podem ter dados que não se enquadram estritamente no tipo de dados básico ou nos tipos de dados personalizados definidos por xml. Like - Esta é uma tag correta para o comentário xml? - Você pode ter um requisito para passá-lo como está sem ser interpretado pelo analisador xml como outro elemento filho. Aqui o Cdata vem em seu socorro. Ao declarar como Cdata, você está dizendo ao analisador que não trate os dados agrupados como um xml (embora possa parecer um)
fonte
Observe que a
CDATA
construção é necessária apenas se você colocar texto diretamente no arquivo de texto XML.Ou seja, você só precisa usar
CDATA
se digitar manualmente ou criar programaticamente o texto XML diretamente.Qualquer texto digitado usando uma API do processador DOM ou SimpleXML será automaticamente escapado para impedir a violação das regras de conteúdo XML.
fonte