Как удалить символ спецификации из моего файла XML
Я использую xsl для управления выводом моего xml-файла, но добавляется символ спецификации.
7 ответов
File BOM Detector (бесплатная программа для Windows) позволяет легко удалить метку порядка байтов.
Просто нужно добавить это в свой файл xslt:
<xsl:output method="text"
encoding="ASCII"/>
Удалить символ спецификации из строки с помощью XSLT довольно просто:
<xsl:value-of select="translate(StringWithBOM,'','')"/>
Просто удалите первые два байта, используя любой шестнадцатеричный редактор.
У меня сложилось впечатление, что XML рекомендуется писать в Unicode, в некоторой кодировке Unicode, и что определенные кодировки Unicode указываются как содержащие начальную метку порядка байтов. Без этой метки порядка байтов ваш файл больше не будет правильно закодирован в кодировке Unicode и, следовательно, больше не будет корректным XML. Рекомендуется, чтобы процессоры XML не прощали, немедленно выходили из строя при малейшей ошибке (такой как неправильная кодировка Unicode). Какие виды процессоров XML вы хотите сломать?
Очевидно, что удаление метки порядка байтов из документа в кодировке UTF-8 делает этот документ кодированным ASCII (не Unicode), а некоторые текстовые процессоры способны использовать только документы в кодировке ASCII. С этим ты работаешь?
Какую выходную кодировку использует ваш XSL? Какая кодировка является входным документом? Откуда поступил ввод и где он был сохранен / загружен / загружен за это время?
XML и XSL должны по умолчанию использовать UTF-8, если ничего не указано. Но ясно, что здесь что-то идет не так.
Единственное, что может произойти, это то, что XML обслуживается веб-сервером, который по умолчанию настроен на использование в ISO-8859-1, довольно хороший вариант по умолчанию... до Unicode.
Немного не по теме, но очень поучительная статья Джоэла о кодировке текста открыла мне глаза. Есть много людей, которые там в противном случае очень умные о программировании, но кто упорствует в мышлении есть такая вещь, как "обычный текст" или называя их текстом "ASCII" или "ANSI". Это проблема, с которой вам действительно нужно разобраться, если вы еще этого не сделали.