1046 votes

Où puis-je obtenir une liste des caractères d'échappement des documents XML ?

Où puis-je obtenir une liste des caractères d'échappement des documents XML ?

7 votes

Exemple : <company>AT&amp;T</company>

0 votes

Ver Escaping XML simplifié ci-dessous pour un guide concis et facile à mémoriser que j'ai distillé à partir de sources primaires ( Langage de balisage extensible (XML) 1.0 du W3C (cinquième édition) ).

1 votes

Littéralement aucune des réponses ici n'est correcte. Vous devez également échapper à de nombreux caractères de contrôle en XML 1.1.

1520voto

Welbog Points 32952

Il n'y en a que cinq :

"   &quot;
'   &apos;
<   &lt;
>   &gt;
&   &amp;

Ils sont faciles à retenir. Le HTML a son propre jeu de codes d'échappement qui couvrent beaucoup plus de personnages.

0 votes

Mais pour le HTML, nous n'aurions qu'à échapper aux cinq ci-dessus aussi, non ?

41 votes

@Pacerier, je vous supplie de ne pas écrire votre propre code d'échappement XML/HTML. Utilise une fonction de la bibliothèque ou tu vas forcément rater un cas particulier.

5 votes

De même, pour les sauts de ligne, vous devez utiliser et pour la tabulation, si vous avez besoin de ces caractères dans un attribut.

96voto

Andrew Hare Points 159332

Peut-être que cela vous aidera :

Liste des références d'entités de caractères XML et HTML :

Dans les documents SGML, HTML et XML, les constructions logiques connues sous le nom de et valeurs d'attributs consistent en séquences de caractères, dans lesquelles chaque caractère peut se manifester directement (se représenter lui-même), ou peut être représenté par une série de caractères appelée référence de caractères, dont il en existe deux types : une référence numérique référence de caractère et un caractère référence d'entité. Cet article énumère les références d'entités de caractères qui sont valides dans les documents HTML et XML.

Cet article énumère les cinq entités XML prédéfinies suivantes :

quot  "
amp   &
apos  '
lt    <
gt    >

81voto

Albz Points 675

Selon les spécifications du World Wide Web Consortium (w3C), il existe 5 caractères qui ne doivent pas apparaître sous leur forme littérale dans un document XML sauf lorsqu'il est utilisé comme délimiteur de balisage ou dans un commentaire, une instruction de traitement ou une section CDATA. Dans tous les autres cas, ces caractères doivent être remplacés soit par l'entité correspondante, soit par la référence numérique selon le tableau suivant :

<strong>Original Character</strong><strong>XML entity replacement</strong><strong>XML numeric replacement</strong>
<                               &lt;                                     &#60;                                    
>                               &gt;                                    &#62;                                    
"                                &quot;                                &#34;                                    
&                               &amp;                                &#38;                                    
'                                &apos;                                &#39;                                    

Notez que les entités susmentionnées peuvent être utilisées également en HTML, à l'exception de ' qui a été introduit avec XHTML 1.0 et n'est pas déclaré dans HTML 4. Pour cette raison, et pour assurer la rétro-compatibilité, la spécification XHTML recommande l'utilisation de ' à la place.

15 votes

Le XML prédéfinit ces cinq entités, mais il ne spécifie absolument PAS que vous ne pouvez utiliser aucun de ces cinq caractères dans leur forme littérale. < et & doivent être échappés partout (sauf CDATA). " et ' ne doivent être échappés que dans les valeurs d'attributs, et seulement si le caractère de citation correspondant est le même. Et > ne doit jamais être échappé.

3 votes

Comme écrit ci-dessus, < > " & ' ne doivent pas être échappés lorsqu'ils sont utilisés comme délimiteurs de balisage ou à l'intérieur d'un commentaire, d'une instruction de traitement ou d'une section CDATA. Autrement dit, lorsque vous utilisez < > comme balise XML, vous ne l'échappez pas. C'est la même chose pour un commentaire (échapperiez-vous un & dans une ligne commentée d'un fichier XML ? Vous n'avez pas besoin de le faire, et votre XML est toujours valide si vous ne le faites pas). Ceci est clairement spécifié dans la norme recommandations officielles pour XML par le W3C .

7 votes

@ShaunMcCance > doit être échappé s'il suit ]] à l'intérieur du contenu, à moins qu'il ne soit destiné à faire partie du ]]> délimiteur qui indique la fin d'une section CDATA.

54voto

Peter Bartels Points 437

L'échappement des caractères est différent pour les balises et les attributs.

Pour les tags :

 < &lt;
 > &gt;
 & &amp;

Pour les attributs :

" &quot;
' &apos;

http://www.w3.org/TR/2008/REC-xml-20081126/#syntax

Le caractère esperluette (&) et la parenthèse gauche (<) ne doivent pas apparaître sous leur forme littérale, sauf lorsqu'ils sont utilisés comme délimiteurs de balisage, ou à l'intérieur d'un commentaire, d'une instruction de traitement ou d'une section CDATA. S'ils sont nécessaires ailleurs, ils doivent être échappés en utilisant des références numériques ou les chaînes " & " et " < " respectivement. Le crochet droit (>) peut être représenté par la chaîne " > " et doit, par souci de compatibilité, être échappé à l'aide de " > " ou d'une référence de caractère lorsqu'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, l'apostrophe ou le caractère guillemet simple (') peut être représenté par " ' ", et le caractère guillemet double (") par " " ".

1 votes

Cela implique que pour les attributs, seuls les guillemets doivent être échappés, en plus des trois autres caractères.

27voto

Charon ME Points 149

En plus des cinq caractères connus [<, >, &, ", '], j'échapperais également le caractère de tabulation verticale (0x0B). Il s'agit d'un caractère UTF-8 valide, mais pas d'un caractère XML 1.0 valide, et même de nombreuses bibliothèques (y compris libxml2) le manquent et produisent silencieusement un XML invalide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X