【发布时间】:2014-05-15 08:02:27
【问题描述】:
我是 XSLT 的新手,我遇到一个问题,即在 XML 上应用 XSLT 样式表后,在输出 XML 中包含像 β 这样的 unicode,转换为 β。我需要的是防止 XSLT 样式表将 Unicode 转换为可视字符。
任何帮助我将不胜感激。 谢谢,
【问题讨论】:
-
这是个错误的问题; XSLT 不这样做。检查您的
output设置。
我是 XSLT 的新手,我遇到一个问题,即在 XML 上应用 XSLT 样式表后,在输出 XML 中包含像 β 这样的 unicode,转换为 β。我需要的是防止 XSLT 样式表将 Unicode 转换为可视字符。
任何帮助我将不胜感激。 谢谢,
【问题讨论】:
output 设置。
XPath 使用的对象模型与 DOM 不同,它认为所有实体和 CDATA 部分都已解析。这意味着 XPath 将您在源文档中看到的 β 读取为字符 β。所以 XLST 并没有真正转换任何东西。它只是读取和输出 XPath 选择的值。
但是您可以使用 XSLT 将β 表示为结果文档中的字符实体。您可以通过在 <xsl:output> 中声明非 UTF encoding 来选择该行为,例如“US-ASCII”或“ISO-8859-1”。
假设你有这个来源:
<character>β</character>
将此样式表与<xsl:output encoding="iso-8859-1" /> 一起使用:
<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>β</result>
或
<result>β</result>
两者都代表同一个字符。
我不确定,但我认为如果您将xsl:output 与method="html" 属性一起使用,则该行为是XSLT 1.0 处理器中的默认行为。
【讨论】: