【问题标题】:XSLT Converting Unicode characters to visual charactersXSLT 将 Unicode 字符转换为可视字符
【发布时间】:2014-05-15 08:02:27
【问题描述】:

我是 XSLT 的新手,我遇到一个问题,即在 XML 上应用 XSLT 样式表后,在输出 XML 中包含像 β 这样的 unicode,转换为 β。我需要的是防止 XSLT 样式表将 Unicode 转换为可视字符。

任何帮助我将不胜感激。 谢谢,

【问题讨论】:

  • 这是个错误的问题; XSLT 不这样做。检查您的output 设置。

标签: xslt xpath xslt-1.0


【解决方案1】:

XPath 使用的对象模型与 DOM 不同,它认为所有实体和 CDATA 部分都已解析。这意味着 XPath 将您在源文档中看到的 β 读取为字符 β。所以 XLST 并没有真正转换任何东西。它只是读取和输出 XPath 选择的值。

但是您可以使用 XSLT 将β 表示为结果文档中的字符实体。您可以通过在 <xsl:output> 中声明非 UTF encoding 来选择该行为,例如“US-ASCII”或“ISO-8859-1”。

假设你有这个来源:

<character>&#x03B2;</character>

将此样式表与&lt;xsl:output encoding="iso-8859-1" /&gt; 一起使用:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="yes" encoding="iso-8859-1" />
    <xsl:template match="character">
        <result><xsl:value-of select="."/></result>
    </xsl:template>
</xsl:stylesheet>

你可能会得到,这取决于你的处理器的实现

<result>&#946;</result>

<result>&#x3b2;</result>

两者都代表同一个字符。

我不确定,但我认为如果您将xsl:outputmethod="html" 属性一起使用,则该行为是XSLT 1.0 处理器中的默认行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多