Le codage de l'élément XML nom commence par un numéro?
Je suis à la recherche à la sortie d'un outil, le dumping d'une table de base de données au format XML. L'une des colonnes est nommé 64kbit , l'outil de code en tant que tel, et j'ai besoin de répliquer que:
<_x0036_4kbit>0</_x0036_4kbit>
Est-ce une sorte de norme d'encodage ? Où puis-je en apprendre plus à ce sujet ?
Vous devez vous connecter pour publier un commentaire.
Bien, il ne semble pas être trop standard, mais XML interdit explicitement les numéros (et quelques autres choses) comme premier caractère d'un nom d'élément:
Cet encodage ici, juste un peu s'échappe le premier caractère si il ne convient pas que les exigences. Il utilise la valeur hexadécimale du caractère.
_x0036_
correspond évidemment à hexadeximal0x36
qui est54
en décimal et représente le chiffre6
.Le mot officiel est que la restriction imposée sur Xml les conventions de nommage sont héritées de Xml parent-ensemble de SGML, avec une seule exception: En Xml, comme une option supplémentaire, les noms peuvent commencer par un caractère de soulignement '_' caractère.
SGML a été développé par IBM dans les années 1960, par un groupe d'esprits qui étaient de la pensée "des années 1960 de style'.
En conséquence, le cerveau-tempête qui conduisent à la création de SGML était susceptible d'avoir été distrait par la notion écrasante que l'espace-navires, à voyager dans le temps et agrémenté de touches faite de papier alu pour protéger contre 'eux des étrangers et de leurs fou-hardy tentatives de la pensée-de la provocation et de l'esprit de contrôle ont été justifiée processus de pensée.
Donc. La question reste encore. Pourquoi ne pas SGML autoriser les numéros? En outre, pourquoi y aurait-il aucune sorte de restriction imposée sur l'utilisation de tous les caractères autres que les caractères de contrôle; <, >, & et le vide de l'espace? Il serait de la folie, sûrement pour présenter le geek d'ordinateur avec autant de touches pour donc beaucoup de personnages différents, uniquement pour les empêcher de les utiliser.
La raison la plus importante est les années 1960, la pensée de l'analyseur, et c'est à la suite de la complexité de la règle à un degré d'emblée à la pédanterie.
"Le plus simple, l'analyseur est, plus vite il va jouer"
L'alphabet est de 26 capital + 26 uncapital gros caractères au total, et c'est 52. Permettant aux nombres est un supplémentaire de dix chiffres, ce qui est environ un sixième de plus!
En termes humains, ce serait comme d'avoir à laver les six affreusement saleté incrustée de pots, chacun prenant une heure à nettoyer, puis caché sous le dernier pot est un bonus supplémentaire pot pour laver et vous devez le laver! Vous devez répéter cette routine chaque jour pour le reste de votre vie, et c'est exactement ce qu'il aime. Justement!
Mark-up language documents ont tendance à bosse dans le contenu. Donc, le moins d'emplois pour l'analyseur, signifie une augmentation directe de la vitesse de rendement. Les avantages puis de descendre dans les rangs jusqu'à ce qu'ils se métamorphosent en pure lucratif performance.
Dans le "Ye olde jours de cheval, de transport et d'un Commodore 64", il a été beaucoup plus la responsabilité de l'utilisateur de compter leurs bits et des octets, manuellement, dans l'ordre du kilo-octets à prendre soin d'eux-mêmes. Cependant, comme le moderne CPU est plus en mesure de faire face de son ancien prédécesseur, les restrictions imposées par l'analyseur sont devenus plus importants que les problèmes de performances.
Si c'est une consolation, si j'étais à la conception d'un Mark-up language moi-même (qui, pour la commodité du raisonnement, nous allons appeler NAM-ÉCLAIRÉ-MAML, parce que Nicolas génial mark-up language est le plus génial mark-up language (jamais!), ensuite, il vous permettra d'utiliser n'importe quel nombre de tous les personnages dans l'ensemble de l'histoire du monde, et en effet l'univers, sans exception, et je voudrais travailler très dur pour créer certains n'ont jamais été utilisé avant les caractères de la langue à utiliser, ce qui pourrait encore être utilisées dans le document par l'utilisation de son propre caractère d'échappement qui ne ressemble à aucun autre caractère qui ne l'a jamais été utilisé avant par quiconque jamais.
Les restrictions imposées par Xml sont héritées de SGML, et nous pouvons tous convenir que, dans cette journée et l'âge de l'espace-navire de chameaux et d'autres robotique les mammifères, ils sont inutiles, stupides et aller à l'encontre de la programmation Orientée Objet.
Lecture à http://www.w3.org/TR/REC-xml/
Bien que le principe le plus simple moyen que j'ai trouvé à se faire un nom xml compatible est d'inclure le suffixe"_', il n'y a pas de standard et, comme telle, d'autres méthodes sont en cours d'utilisation.
Dans votre exemple, le premier caractère a été convertie en une valeur hexadécimale. Cette valeur hex représente le '6' caractère en ASCII, Unicode et sans doute d'autres.
Une bonne chose sur l'utilisation de valeurs en hexadécimal, c'est que tous les caractères d'un code-jeu par exemple Unicode peut être représenté.
Une mauvaise chose, c'est qu'ils ne sont pas aussi lisibles en un coup d'œil.
Un nom XML ne peut pas commencer par un chiffre, de sorte que certains autres de la représentation doit être utilisé que l'on peut entendre par "6".
L'outil a choisi d'écrire la représentation hexadécimale du caractère au lieu de cela, entouré par des traits de soulignement. Le code
\x0036
est le code hexadécimal du caractère '6', qui est de 54 en décimal. Des traits de soulignement sont des caractères valides au début d'un nom XML de sorte que cela fonctionne.Cette même technique peut être utilisée pour échapper à d'autres personnages qui ne sont pas valides dans les noms XML. Cette technique est utilisée par exemple par Microsoft XmlConvert, comme décrit ici, mais je suis sûr qu'il y a d'autres outils qui utilisent la même technique de trop.
IIRC (j'y étais, mais c'était il y a longtemps) la pensée était qu'il serait très commune à la carte de l'élément XML & attributs de la programmation en langue des constructions, qui sont représentés par des variables, et très peu (aucune?) langages de programmation permettent de noms de variables qui commencent par des chiffres. Donc, l'idée est que le XML de l'élément ou de noms d'attribut doit s'intégrer parfaitement dans la plupart des langues variable des règles de nommage. Dois-je encore le croire? Si nous faisions XML de nouveau, je serais OK avec ça? Je ne sais pas; ce serait une discussion intéressante cependant.
Que l'encodage n'est pas par défaut pour le fichier XML, mais semble requis par votre outil, des éléments doivent commencer par une petit jeu de caractères.
Que
_x0036_
séquence représente haxadecimal numéro 36 (décimal 54), qui représente votre6
caractère dans la table ASCII.