У меня возникли проблемы с преобразованием определенных символов из XML-канала в XHTML.Выход HTML через преобразование XSL с использованием специальных символов
Я использую следующий пример, чтобы продемонстрировать проблему.
Вот мой XML-файл:
<?xml version="1.0" encoding="UTF-8"?>
<paragraph>some text including the –, ã and ’ characters</paragraph>
Вот XSLT Я подаю:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"
encoding="UTF-8"
indent="yes"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" />
<xsl:template match="paragraph">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<p><xsl:apply-templates/></p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Вот результирующий XHTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head></head>
<body>
<p>some text including the –, ã and ’ characters</p>
</body>
</html>
Характеры от оригинала XML заменяются новыми.
Во-первых, я хочу проверить, что что-то не так с моей кодировкой, которая вызывает эту проблему?
Я должен что-то делать с помощью сущностей, если я хочу отображать специальные символы для правильного отображения в XHTML? Если да, то как я могу использовать их в XSLT и мне нужно знать каждое возможное значение, которое может быть в моем XML-канале заранее?
Результирующий XHTML очень похож на файл UTF-8, который был открыт редактором, который ожидал ISO-8859-1 или аналогичный 8-битный формат (удвоенные символы отдают его). Взгляните на него, используя шестнадцатеричный дамп, и я уверен, что вы увидите, что преобразование работало так, как ожидалось. – kdgregory