Quels caractères doivent être échappés dans les documents XML ou où pourrais-je trouver une telle liste?
Si vous utilisez une classe ou une bibliothèque appropriée, ils effectueront l'échappement pour vous. De nombreux problèmes XML sont causés par la concaténation de chaînes.
Il n'y en a que cinq:
" "
' '
< <
> >
& &
Les caractères d'échappement dépendent de l'endroit où le caractère spécial est utilisé.
Les exemples peuvent être validés à service de validation de balisage du W3C .
Le moyen le plus sûr est d'échapper aux cinq caractères du texte. Toutefois, les trois caractères "
, '
et >
ne doivent pas être échappés dans le texte:
<?xml version="1.0"?>
<valid>"'></valid>
Le moyen le plus sûr est d'échapper aux cinq caractères des attributs. Toutefois, le caractère >
ne doit pas nécessairement être échappé des attributs:
<?xml version="1.0"?>
<valid attribute=">"/>
Le caractère '
n'a pas besoin d'être échappé dans les attributs si les guillemets sont "
:
<?xml version="1.0"?>
<valid attribute="'"/>
De même, le "
ne doit pas être échappé dans les attributs si les guillemets sont '
:
<?xml version="1.0"?>
<valid attribute='"'/>
Les 5 caractères spéciaux ne doivent pas être échappés dans les commentaires:
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
Les 5 caractères spéciaux ne doivent pas être échappés dans les sections CDATA :
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
Les 5 caractères spéciaux ne doivent pas être échappés des instructions de traitement XML:
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
HTML a son propre ensemble de codes d'échappement qui couvre beaucoup plus de caractères.
Cela aidera peut-être:
Liste des références d'entités de caractères XML et HTML :
Dans les documents SGML, HTML et XML, les constructions logiques appelées données de caractère et valeurs d'attribut consistent en des séquences de caractères dans lesquelles chaque caractère peut se manifester directement (se représenter) ou peut être représenté par une série de caractères appelée référence de caractère, dont il existe deux types: une référence de caractère numérique et une référence d’entité de caractère. Cet article répertorie les références d'entité de caractère valides dans les documents HTML et XML.
Cet article répertorie les cinq entités XML prédéfinies suivantes:
quot "
amp &
apos '
lt <
gt >
Selon les spécifications du World Wide Web Consortium (W3C), il y a 5 caractères qui ne doivent pas apparaître sous leur forme littérale dans un document XML , sauf lorsqu'ils sont utilisés comme délimiteurs de balisage ou dans un commentaire, instruction de traitement, ou une section CDATA. Dans tous les autres cas, ces caractères doivent être remplacés à l'aide de l'entité correspondante ou de la référence numérique conformément au tableau suivant:
Original CharacterXML entity replacementXML numeric replacement
< < <
> > >
" " "
& & &
' ' '
Notez que les entités susmentionnées peuvent également être utilisées en HTML, à l'exception de apos; , introduit avec XHTML 1.0 et non déclaré en HTML 4. Pour cette raison, et pour assurer la rétro-compatibilité, la spécification XHTML recommande l'utilisation de # 39; .
Les caractères d'échappement sont différents pour les balises et les attributs.
Pour les tags:
< <
> > (only for compatibility, read below)
& &
Pour les attributs:
" "
' '
http://www.w3.org/TR/2008/REC-xml-20081126/#syntax
Le caractère et commercial () et le crochet angulaire gauche (<) ne doivent pas apparaître sous leur forme littérale, sauf lorsqu'ils sont utilisés comme délimiteurs de balisage, ou dans un commentaire, une instruction de traitement ou une section CDATA. S'ils sont utilisés ailleurs, ils doivent être échappés en utilisant soit des références de caractères numériques, soit les chaînes "amp" et "lt;" respectivement. Le crochet (>) peut être représenté avec la chaîne "gt;" et doit être échappé pour des raisons de compatibilité avec "gt;" ou une référence de caractère s’il apparaît dans la chaîne "]]>" dans le contenu, lorsque cette chaîne ne marque pas la fin d'une section CDATA.
Pour permettre aux valeurs d'attributs de contenir à la fois des guillemets simples et doubles, le caractère apostrophe ou guillemet simple (') peut être représenté par "apos;" et le caractère de guillemet double (") par" quot; ".
Nouvelle réponse simplifiée à une ancienne question fréquemment posée ...
toujours (90% important à retenir)
Valeurs d'attribut (9% important à retenir)
attr="
_ _'
_ guillemets simples _'
_ sont ok entre guillemets doubles ._"
_attr='
_ _"
_ Les guillemets doubles _"
_ sont corrects entre guillemets simples ._'
_"
_ comme _"
_ et _'
_ comme _'
_ sinon.Commentaires , CDATA , et Instructions de traitement (0,9% important à retenir)
<!--
_ Dans commentaires _-->
_ rien ne doit être échappé mais aucune chaîne _--
_ n'est autorisée.<![CDATA[
_ Dans CDATA _]]>
_ rien ne doit être échappé, mais aucune chaîne _]]>
_ n'est autorisée.<?PITarget
_ Dans PIs _?>
_ rien ne doit être échappé, mais aucune chaîne _?>
_ n'est autorisée.Esoterica (0,1% important à retenir)
]]>
_ comme _]]>
_ sauf si _]]>
_ termine une section CDATA.en plus des cinq caractères connus [<,>, &, ", '], je voudrais également échapper au caractère de tabulation verticale (0x0B). Il est valide UTF-8, mais non valide XML 1.0, et même de nombreuses bibliothèques (y compris libxml2) le manque et génère en mode silencieux un XML invalide.
Version abrégée de: http://en.wikipedia.org/wiki/XML#Escaping
Il y a cinq entités prédéfinies:
< represents "<"
> represents ">"
& represents "&"
' represents '
" represents "
"Tous les caractères Unicode autorisés peuvent être représentés avec une référence de caractère numérique." Par exemple:
中
La plupart des caractères de contrôle et autres plages unicode sont spécifiquement exclus, ce qui signifie (je pense) qu'ils ne peuvent pas se produire en mode échappé ni en direct:
Ça dépend du contexte. Pour le contenu, il s'agit de <et &, et de]]> (bien que chaîne de 3 au lieu d'un caractère). Pour les valeurs d'attributs, il s'agit de <et & et "et '. Pour CDATA, c'est]]>.