Символ фунта не отображается в HTML с XSLT2

Я пытаюсь отобразить символ фунта из XML (currencySymbol = "£").

Я использую XSLT 2 с кодировкой в ​​файле <xsl:output encoding = "ISO-8859-15"/>, и вместо этого он показывает мне .

Я пробовал разные подходы, используя UTF-8, объявляя ENTITY внутри DOCTYPE, но все равно не повезло. Я открыт для предложений.

Символ фунта (£) и евро (€) - я считаю - разные вещи. Какой из них вы пытаетесь отобразить?

James Douglas 10.04.2018 17:29

Извини, Джеймс. Я думал о евро, когда писал описание. Я пытаюсь отобразить символ фунта (£).

C. Oarga 10.04.2018 17:32

Итак, какой инструмент вы используете, чтобы посмотреть на результат трансформации?

Martin Honnen 10.04.2018 17:39

Мы разработали что-то (на Java) в нашем приложении (в компании), которое позволяет нам видеть HTML. Он принимает файл XSL в файл XML, а затем преобразует его в HTML.

C. Oarga 10.04.2018 18:15

Это довольно расплывчатое описание. Используете ли вы XSLT для создания файла HTML, а затем загружаете его в компонент Java Swing или AWT для рендеринга HTML? Или вы загружаете HTML-файл в браузере, таком как Chrome, Edge или Firefox?

Martin Honnen 10.04.2018 19:18

Извините за расплывчатое описание. Загружаем HTML-файл в браузер. Я использовал Chrome.

C. Oarga 10.04.2018 19:33

Рассмотрите возможность показать нам минимальные, но полные образцы кода ввода XML, кода XSLT, HTML, который XSLT создает вместе с кодом Java, который использует Saxon для создания HTML, тогда я уверен, что мы сможем определить, что идет не так. Но без каких-либо минимальных, но полных деталей, которые позволили бы нам воспроизвести проблему, невозможно сказать, что вам нужно изменить в вашем XSLT или Java-коде, или и в том, и в другом.

Martin Honnen 10.04.2018 21:00

В общем, если вы используете Saxon для создания вывода HTML и хотите убедиться, что директива xsl:output encoding используется для создания метаданных или кодировки HTML, указывающих кодировку в сгенерированном HTML, то Saxon должен отвечать за создание файла результатов и метод вывода должен быть html для HTML 4 или 5 или xhtml для XHTML.

Martin Honnen 10.04.2018 21:01
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
8
139
1

Ответы 1

Когда я запускаю запрос

net.sf.saxon.Query -qs:"<a>£</a>" -o:/Users/mike/Desktop/temp/pound.xml !encoding=iso-8859-15

Я получаю файл с шестнадцатеричным содержимым

0000: 3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31   <?xml version = "1
0010: 2E 30 22 20 65 6E 63 6F 64 69 6E 67 3D 22 69 73   .0" encoding = "is
0020: 6F 2D 38 38 35 39 2D 31 35 22 3F 3E 3C 61 3E A3   o-8859-15"?><a>£
0030: 3C 2F 61 3E                                       </a>

То есть знак «£» правильно закодирован как xA3.

Если я теперь изменю его на HTML с параметрами запроса

-qs:"<html><head/><body><a>£</a></body></html>" -o:/Users/mike/Desktop/temp/pound.xml !encoding=iso-8859-15 !method=html

Шестнадцатеричный вывод

0000: 3C 68 74 6D 6C 3E 0A 20 20 20 3C 68 65 61 64 3E   <html>¿   <head>
0010: 0A 20 20 20 20 20 20 3C 6D 65 74 61 20 68 74 74   ¿      <meta htt
0020: 70 2D 65 71 75 69 76 3D 22 43 6F 6E 74 65 6E 74   p-equiv = "Content
0030: 2D 54 79 70 65 22 20 63 6F 6E 74 65 6E 74 3D 22   -Type" content = "
0040: 74 65 78 74 2F 68 74 6D 6C 3B 20 63 68 61 72 73   text/html; chars
0050: 65 74 3D 69 73 6F 2D 38 38 35 39 2D 31 35 22 3E   et=iso-8859-15">
0060: 0A 20 20 20 3C 2F 68 65 61 64 3E 0A 20 20 20 3C   ¿   </head>¿   <
0070: 62 6F 64 79 3E 3C 61 3E A3 3C 2F 61 3E 3C 2F 62   body><a>£</a></b
0080: 6F 64 79 3E 0A 3C 2F 68 74 6D 6C 3E               ody>¿</html>

что снова правильно.

Поэтому я думаю, что если этот HTML-код отображается некорректно, проблема не на стороне XSLT, а, скорее, на стороне отображения. Итак, вопрос в том, как вы просматриваете файл?

iso-8859-15 - довольно необычный выбор кодировки, и в наши дни utf-8 был бы гораздо более нормальным. Если ни один из них не отображается правильно, я думаю, нам нужно знать:

(а) какое программное обеспечение вы используете для отображения файла

(б) если это браузер, то (i) какой браузер (ii) какой медиа-тип (тип содержимого) в HTTP-заголовке используется при получении файла с сервера?

Другие вопросы по теме