Comment supprimer le caractère de nomenclature de mon fichier xml

J’utilise xsl pour contrôler la sortie de mon fichier xml, mais le caractère BOM est ajouté.

# vim file.xml :set nobomb :wq 

Le détecteur de nomenclature de fichiers (freeware pour Windows) facilite la suppression de la marque d’ordre des octets.

il suffit d’append ceci dans votre fichier xslt:

  

Décapage juste les deux premiers octets en utilisant n’importe quel éditeur hexadécimal.

Supprimer le symbole BOM de la chaîne avec XSLT est assez simple:

J’avais l’impression que XML est encouragé à être écrit en Unicode, dans certains codages Unicode, et que certains codages Unicode sont spécifiés pour contenir une marque initiale d’ordre des octets. Sans cette marque d’ordre d’octets, votre fichier n’est plus correctement encodé dans un codage Unicode et ne corrige donc plus le code XML. Les processeurs XML sont incités à pardonner, à échouer immédiatement à la moindre erreur (par exemple, un codage Unicode incorrect). Quels types de processeurs XML cherchez-vous à casser?

De toute évidence, le fait de supprimer une marque d’ordre d’octet d’un document UTF-8 fait que ce document semble être codé en ASCII (et non Unicode), et certains processeurs de texte ne peuvent utiliser que des documents codés en ASCII. Est-ce ce que vous travaillez avec?

Quel encodage de sortie votre XSL doit-il utiliser? Quel encodage est le document d’entrée? D’où viennent les entrées et où ont-elles été sauvegardées / téléchargées / téléchargées entre-temps?

XML et XSL doivent par défaut utiliser UTF-8 si rien d’autre n’est spécifié. Mais clairement, quelque chose ne va pas ici.

Une chose qui pourrait arriver est que le XML est servi par un serveur Web qui est défini par défaut pour servir dans ISO-8859-1, un très bon défaut par défaut.

Un peu hors sujet, mais l’article très instructif de Joel sur les encodages de texte m’a ouvert les yeux. Il y a beaucoup de gens qui sont autrement très intelligents en matière de programmation, mais qui persistent à penser qu’il existe un “texte en clair” ou qu’ils appellent leur texte “ASCII” ou “ANSI”. C’est un problème auquel vous devez vraiment faire face si vous ne l’avez pas encore fait.