Как напечатать символ раздела (§) в XML с помощью XSLT? - PullRequest
0 голосов
/ 04 июня 2018

XML

<RevisionHistory>(R.S., D.C., § 1; June 11, 1878, 20 Stat. 102, ch. 180, § 1.)</RevisionHistory>

XSLT

<xsl:value-of select="RevisionHistory" disable-output-escaping="yes" />

Вывод:

§ = i want output this symbol
� = but wrong symbol shown

Как напечатать символ раздела (§) в XML с использованием XSLT?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Существует две основные причины, почему это происходит неправильно.

(a) символ во входном документе кодируется с использованием кодировки, отличной от той, которую, по мнению XML-анализатора, он использует.Например, возможно, символ закодирован в iso-8859-1, но синтаксический анализатор XML считает, что он закодирован в utf-8.

(b) символ в результирующем документе правильно закодирован, но программное обеспечение, котороевы используете для отображения результирующего документа не понимает эту кодировку.

Чтобы исследовать это, вам нужно установить двоичный код, который используется внутри для представления этого символа как во входных, так и в выходных документах.Чтобы определить это, используйте такой инструмент, как шестнадцатеричный редактор.

Убедитесь, что у входного файла есть декларация XML, дающая правильную кодировку.Если нет, это может быть источником проблемы.Если он есть, проверьте его правильность.

Затем сделайте то же самое для выходного файла.

Проверьте, какое программное обеспечение вы используете для отображения выходного файла.Посмотрите, если другое программное обеспечение отображает символ по-разному.Возможно, вам придется изменить настройку программного обеспечения дисплея.Если программное обеспечение для отображения представляет собой веб-браузер, вам может потребоваться проверить или изменить то, что говорят заголовки HTTP о кодировке символов документа, отправляемого в браузер.

Наконец, избавьтесь от этого отключения-вывода-экранированияприписывать.Это только добавляет дополнительные сложности и возможные источники ошибок.

0 голосов
/ 04 июня 2018

Ожидается (но не обязательно), что в документе XML будет использоваться декларация XML в начале документа с указанием используемой кодировки:

<?xml version="1.0" encoding="utf-8"?>

или

<?xml version="1.0" encoding="iso-8858-1"?>

Inпредполагается отсутствие декларации XML, UTF-8 или другой согласованной внеполосной кодировки.

Чтобы исключить возможность проблем с кодированием (если ваш XML хранится в кодировке не-UTF-8, еще нетне раскрывая его кодировку через объявление XML), вы можете изменить свой XML, чтобы использовать символьную ссылку &#167; для знака раздела:

<RevisionHistory>(R.S., D.C., &#167; 1; June 11, 1878, 20 Stat. 102, ch. 180, &#167; 1.)</RevisionHistory>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...