XML CDATA
Todo texto num documento XML será particionado pelo parser (particionador).
Somente o texto dentro de uma seção CDATA será ignorado pelo parser.
Dados Particionados
Os parsers XML normalmente particionam todo o texto em um documento XML.
Quando um elemento XML é particionado, o texto entre as tags XML é também particionado:
<mensagem>Este texto também é particionado</mensagem>
|
O parser faz isso porque os elementos XML podem conter outros elementos, como neste exemplo, onde o elemento <nome> contém dois outros elementos (primeiro e último):
<nome><primeiro>Jeca</primeiro><último>Tatu</último></nome>
|
e o parser o irá separar em sub-elementos assim:
<nome>
<primeiro>Jeca</primeiro>
<último>Tatu</último>
</nome>
|
Caracteres de Saída [Escape]
Caracteres ilegais na XML devem ser substituidos por referências de entidade.
Se você coloca um caractere como "<" dentro de um elemento XML element, ele irá gerar um erro porque o parser o interpreta como o início de um novo elemento. Você não pode escrever algo como isso:
<mensagem>se salário < 1000 eantão</mensagem>
|
Para evitar isso, você deve substituir o caractere "<" por uma referência de entidade, assim:
<mensagem>se salário < 1000 então</mensagem>
|
Há 5 referências de entidade pré-definidas na XML:
< |
< |
menor do que |
> |
> |
maior do que |
& |
& |
e comercial |
' |
' |
apóstrofe |
" |
" |
aspas |
A referências de entidades sempre começam com o caractere "&" e terminam com o caractere ";".Observação: Somente os caracteres "<" e "&" são estritamente ilegais na XML. Apóstrofes, aspas e sinais de maior do que são legais, mas é um bom hábito substitui-los.
CDATA
Tudo que estiver dentro de uma seção CDATA será ignorado pelo parser.
Se o seu texto contém muitos caracteres "<" ou "&" - como código de programa geralmente tem - o elemento XML pode ser definido como uma seção CDATA.
Uma seção CDATA começa com "<![CDATA[" e termina com "]]>":
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1
}
else
{
return 0
}
}
]]>
</script>
|
No exemplo prévio, tudo dentro da seção CDATA é ignorado pelo parser.
Observações sobre seções CDATA:
Uma seção CDATA não pode conter a seqüência (string) "]]>", portanto, seções CDATA aninhadas não são permitidas.
Também certifique-se de que não haja espaços ou quebras de linha dentro da string "]]>".
|