61 votes

Pourquoi les caractères de "contrôle" sont-ils illégaux en XML?

Il existe une variété de personnages qui ne sont pas légalement encodeable en XML, par exemple, U+0007 ('bell') et U+001B ('escape'). Plus de sujets intéressants sont non-blanc "contrôle" des personnages.

Il est clair à partir de (par exemple) à cette question et d'autres que c'est du XML spécification qui est de la question - mais quelqu'un peut-il m'éclairer quant à pourquoi le XML spec interdit ces personnages?

Il me semble qu'il aurait été nécessaire qu'ils soient encodés en échappe, comme par exemple l'  et  respectivement, mais peut-être il y a une raison pratique que les personnages étaient interdits plutôt que nécessaire pour être sauvé?

Answerers ont suggéré qu'il y a de la motivation à éviter la transmission des caractères de contrôle, mais Unicode comprend beaucoup d'autres -comme les personnages (considérer U+200C "zéro largeur non menuisier"). Je reconnais, il peut y avoir aucune bonne raison de ce comportement, mais je voudrais quand même à mieux le comprendre.

C'est particulièrement frustrant, car lorsque ces valeurs de caractères apparaissent dans d'autres codages de formats de données, j'arrive à la fin de la "double échappement" nouveaux documents XML qui ont besoin de coder.

26voto

annakata Points 42676

Ma compréhension est que cette gamme est interdit sur le fait qu'un langage de balisage ne devrait pas en avoir besoin à l'appui de transmission et de contrôle de flux de caractères et y compris leur permettrait de créer un problème pour tout les éditeurs et les analyseurs de conversion en binaire.

J'ai du mal à trouver quelque chose ex cathedra sur ce de Tim Bray et coll.

edit: certains de discussion des caractères de contrôle et de vague à l'admission, il n'était pas exactement conçu

18voto

bobince Points 270740

Il semble qu’il aurait pu être nécessaire de les encoder dans des échappements, par exemple sous la forme & # x0007; et & # x001B;

Vous pouvez faire exactement cela dans XML 1.1, sauf pour \ 0.

2voto

foxxtrot Points 6491

XML a été spécialement conçu pour Unicode (en particulier UTF-8 et UTF-16) et ISO / CEI 10646, dont les deux (je ne suis pas très optimiste à propos de l'ISO 10646) contiennent les caractères de transmission / contrôle de flux laissés par ASCII. les jours de terminaux basés sur les caractères. Bien que ces caractères aient encore des utilisations, ils n'appartiennent pas à un format tel que XML.

En ce qui concerne ces nouveaux encodages qui utilisent ces codes pour autre chose, il semble que la spécification XML doive être adaptée.

1voto

MSalters Points 74024

Pourquoi est-ce que vous leur échappez? Cela semble être un bon endroit pour & bell; et & échapper ;. (Indéfini, traité par rappel de l'analyseur vers votre code)

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