代码之家  ›  专栏  ›  技术社区  ›  tentonipete

通过包含特殊字符的XSL转换的HTML输出

  •  2
  • tentonipete  · 技术社区  · 16 年前

    我无法将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 回复  |  直到 16 年前
        1
  •  10
  •   Kathy Van Stone    16 年前

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

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

    看看是否有帮助。

        2
  •  0
  •   Julian Aubourg    16 年前

    听起来可能很愚蠢,但您确定XML文件实际上是UTF-8吗?把它放在prolog中是一回事,但文件本身可能正在使用另一种编码。