web-dev-qa-db-fra.com

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é.

67
raluxgaza
# vim file.xml
:set nobomb
:wq
165
Benedikt Waldvogel

File BOM Detector (freeware pour Windows) facilite la suppression de la marque d'ordre des octets.

18
Anthony Faull

il suffit d'ajouter ceci dans votre fichier xslt:

<xsl:output method="text"
        encoding="ASCII"/>
2
ken

Supprimez simplement les deux premiers octets à l'aide de n'importe quel éditeur hexadécimal.

1
Marko

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

<xsl:value-of select="translate(StringWithBOM,'','')"/>

1
dr_leevsey

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

De toute évidence, la suppression d'une marque d'ordre des octets d'un document codé UTF-8 fait que ce document semble être ASCII codé (pas Unicode), et certains processeurs de texte ne peuvent utiliser que ASCII documents encodés. Est-ce avec cela que vous travaillez?

0
yfeldblum

Quel encodage de sortie votre XSL doit-il utiliser? Quel encodage est le document d'entrée? D'où provient l'entrée et où a-t-elle été enregistrée/téléchargée/téléchargée entre-temps?

XML et XSL devraient 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, une très bonne valeur par défaut ... pré-Unicode.

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 là-bas qui sont par ailleurs très intelligents en matière de programmation, mais qui persistent à penser qu'il existe une chose telle que "texte brut" ou à appeler leur texte "ASCII" ou "ANSI". C'est un problème auquel vous devez vraiment vous attaquer si vous ne l'avez pas encore fait.

0
AmbroseChapel