【问题标题】:XSL transformation give me wrong encodingXSL 转换给了我错误的编码
【发布时间】:2013-06-17 16:01:03
【问题描述】:

我得到了一个 xsl 文件,它将一个 xml 文件转换为另一个具有不同 xml 格式的文件。 xsl 文件以:

开头
        ?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:msxsl="urn:schemas-microsoft-com:xslt"

然后输出开始于:

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

以及将要转换的所有元素的其余部分,例如很多行:

        <xsl:element name="tns:corporateName" >
          <xsl:value-of select="@CorpOrgname"/>
        </xsl:element>

一切看起来都不错,除了生成的 xml 文件在第 1 行有这个标签:

 <?xml version="1.0" encoding="Windows-1252"?

我不明白这个编码是从哪里来的。当我在本地调试文件时,结果是 utf-8,但当这个应用程序使用它时不是。

是否有强制它更多设置为 utf-8 的方法?因为这是一种需求。接收系统是一些 Unix 系统。

我有一个原始文件的例子。那个我将转换,它是 utf-8 格式(无论如何,notepad++ 所说的)。

我在这里遗漏了什么吗,除了语法 encoding="utf-8" 之外,还有其他方法可以设置结果:s 编码吗?

【问题讨论】:

  • 如何运行转换,您使用哪个 XSLT 处理器?
  • 嗯,最终用户使用的应用程序是旧技术(Centura),并且调用了一个 .net com-visible 类(regasm),它将原始 xml 文件作为调用中的参数,作为它的路径。然后 .net-app 正在使用这些信息,只是用 xsl 转换它,并保存它。

标签: xml xslt xml-parsing


【解决方案1】:

看看转换是如何运行的。也许输出被发送到 DOM 树,然后由 DOM 序列化程序而不是 XSLT 序列化程序进行序列化 - 在这种情况下,样式表中请求的编码将被忽略。

【讨论】:

  • 嗨。你是正确的目标。我与负责将文件放入他们的代码中以进行进一步处理的团队进行了交谈。当我们查看代码时,我们看到它是用“System.Text.Encoding.GetEncoding(1252)”硬编码的。非常感谢你让我走上正轨。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-29
  • 2017-08-17
  • 2021-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多