Que caracteres devem ser evitados em documentos XML, ou onde posso encontrar tal lista?
Se você usar uma classe ou biblioteca apropriada, eles farão a fuga por você. Muitos problemas de XML são causados por concatenação de strings.
São apenas cinco:
" "
' '
< <
> >
& &
A fuga de caracteres depende de onde o carácter especial é utilizado.
Os exemplos podem ser validados em W3C Markup Validation Service.
A maneira segura é escapar dos cinco caracteres em texto, no entanto, os três caracteres "
, '`` e ``>
não precisam ser escapados em texto:
<?xml version="1.0"?>
<valid>"'></valid>
A maneira segura é escapar dos cinco caracteres em atributos, no entanto, o >
caractere não precisa ser escapado em atributos:
<?xml version="1.0"?>
<valid attribute=">"/>
O caractere não precisa escapar em atributos se as aspas forem
:
<?xml version="1.0"?>
<valid attribute="'"/>
Da mesma forma, o não precisa escapar em atributos se as citações forem
:
<?xml version="1.0"?>
<valid attribute='"'/>
Todos os 5 caracteres especiais **não podem*** escapar nos comentários:
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
Todos os 5 caracteres especiais **não podem*** escapar nas seções CDATA:
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
Todos os 5 caracteres especiais **não podem*** escapar nas instruções de processamento de XML:
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
HTML tem seu próprio conjunto de códigos de fuga que cobrem muito mais caracteres.
Talvez isto ajude:
Lista de referências de entidades de caracteres XML e HTML:
Em documentos SGML, HTML e XML, o construções lógicas conhecidas como personagem dados e valores de atributos consistem em sequências de caracteres, em que cada o caráter pode se manifestar diretamente (representando a si próprio), ou pode ser representado por uma série de personagens chamada de referência de carácter, da qual existem dois tipos: um numérico referência de carácter e um carácter referência da entidade. Este artigo lista as referências de entidades de carácter que são válidos em documentos HTML e XML.
Esse artigo lista as cinco entidades XML pré-definidas a seguir:
quot "
amp &
apos '
lt <
gt >
além dos cinco caracteres comumente conhecidos [<, >, &, ", ', '] eu também escaparia ao caractere da aba vertical (0x0B). Ele é válido UTF-8, mas não XML 1.0 válido, e mesmo muitas bibliotecas (incluindo a libxml2) o perdem e silenciosamente emitem XML inválido.