Embora a sintaxe
XML seja fácil de assimilar, existem alguns detalhes que, quando desconhecidos, podem confundir quem lê o documento XML. Um deles é o uso de um elemento especial chamado
CDATA. Este elemento é usado para situações que poderiam requerer o uso extensivo de entidades.
Uma outra característica é o uso de elementos que contém um prefixo, com dois pontos como separador. Trata-se de um contexto (ou namespace), ou seja, é uma maneira de identificar um contexto específico para aquele elemento.
Por fim, outro aspecto importante da linguagem é a validação e padronização de documentos, por meio de linguagens como Document Type Definition - DTD e XML Schema. Tudo isso vou apresentar neste artigo.
PCDATA x CDATA
Na linguagem XML, todo o conteúdo do documento (exceto comentários) é interpretável, isto é, até mesmo o texto contido entre as tags de abertura e fechamento de um elemento está sujeito à interpretação, não sendo considerado um texto simples. Isso é necessário porque dentro do texto pode haver outros elementos ou entidades, que deverão ser interpretados e transformados. Este texto, portanto, é chamado de
Parsed Character Data (PCDATA), isto é, um texto que está sujeito à interpretação.
No entanto, não é raro que um documento XML deva armazenar o conteúdo de um script, consulta SQL ou mesmo um trecho de um documento HTML. É sabido que linguagens como JavaScript, Shell Script, SQL, HTML, entre muitas outras podem conter várias ocorrências de caracteres reservados para a linguagem XML, como o sinal de menor (<) e o "e comercial" (&). Imagine quantas entidades poderiam ter que ser usadas nestes documentos.
O uso extensivo de entidades, além de demandar mais processamento do interpretador, pode tornar a leitura do documento mais difícil, especialmente para alguém que queira analisar um código dentro do documento. Por isso, existe um elemento especial na linguagem XML, chamado
Character Data (CDATA), isto é, um elemento cujo conteúdo não está sujeito à interpretação.
A diferença do elemento CDATA para o comentário é que o conteúdo de um elemento CDATA é de relevância para a aplicação e terá algum tratamento. Comentários, por outro lado, não tem essa relevância e são usados apenas para clarificar o que significa o conteúdo daquele documento. Em outras palavras, o conteúdo de um comentário não será usado pelas aplicações (ou pelo menos, não deve ser).
É importante saber também que elementos CDATA não podem ser aninhados, isto é, não é possível criar um elemento CDATA dentro de outro CDATA. Elementos CDATA começam com "<![CDATA[" e terminam com "]]>". Todo o conteúdo que estiver entre estes caracteres será tratado como texto simples. Veja abaixo um exemplo de uso deste elemento:
<script linguagem="JavaScript">
<![CDATA[
function(numero, mensagem) {
if (numero < 3 && mensagem != "") {
alert(mensagem);
}
}
]]>
</script>
É claro que o uso do elemento CDATA não se restringe a scripts e marcações. Para qualquer situação em que o uso de entidades se tornaria repetitivo, é bom considerar o uso deste elemento.