【问题标题】:HTML output via an XSL transform involving special characters通过涉及特殊字符的 XSL 转换的 HTML 输出
【发布时间】:2010-11-30 13:47:00
【问题描述】:

我在将特定字符从 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 提要中可能存在的每个可能的值?

【问题讨论】:

  • 生成的 XHTML 看起来很像一个 UTF-8 文件,该文件是用一个需要 ISO-8859-1 或类似 8 位格式的编辑器打开的(双倍的字符会泄露它)。使用十六进制转储查看它,我敢打赌您会看到转换按预期工作。

标签: html xml xslt xhtml


【解决方案1】:

我同意 kdgregory:输出文件看起来是 UTF-8 格式,但它的读者认为它是其他格式(ISO-8859-1 或 CP-1252(Windows 的默认设置))。尝试直接在 HTML 头元素中添加内容类型:

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

看看有没有帮助。

【讨论】:

  • 这会使文件在浏览器中正确呈现,谢谢。这也可以解释为什么它在某些浏览器中正确显示而在其他浏览器中显示不正确。
【解决方案2】:

这听起来可能很愚蠢,但您确定 xml 文件实际上是 utf-8 吗?将它放在序言中是一回事,但文件本身可能使用另一种编码。

【讨论】:

  • 我使用 XMLSpy 创建文件,我相信使用 UTF-8 作为标准。我什至在记事本中重新创建了它,专门保存为 UTF-8 以确保。
  • 输出文件呢?可能你使用的 xsl 工具有问题。
猜你喜欢
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 2012-05-01
  • 2015-12-12
  • 1970-01-01
  • 2015-06-11
  • 1970-01-01
  • 2011-08-17
相关资源
最近更新 更多