HTML вывод через XSL-преобразование с использованием специальных символов - PullRequest
2 голосов
/ 23 сентября 2009

У меня проблемы с преобразованием определенных символов из XML-канала в XHTML.

Я использую следующий пример для демонстрации проблемы.

Вот мой 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-канале?

Ответы [ 2 ]

10 голосов
/ 23 сентября 2009

Я согласен с kdgregory: выходной файл выглядит как UTF-8, но читатель считает, что он находится в другом месте (ISO-8859-1 или CP-1252 (по умолчанию для Windows)). Попробуйте добавить тип содержимого непосредственно в элемент заголовка HTML:

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

и посмотрите, поможет ли это.

0 голосов
/ 23 сентября 2009

Это может звучать глупо, но вы уверены, что XML-файл на самом деле UTF-8? Одно дело поместить его в пролог, но сам файл может использовать другую кодировку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...