XSLT 或 Perl 更改了 href 编码



我正在使用xmlxslt和perl文件,如以下链接所示。

http://www.mediafire.com/file/yutt5ueitec4cav/Test.zip

(这是一个非常大的文件的样本(

我想运行perl文件并生成一个HTML文件作为输出。

它生成一个 HTML 文件,但对于右侧表和链接手侧之间的链接存在错误。通过单击右侧链接,它会跳转到左侧链接。它适用于所有链接,除了一个(在实际情况下更多情况(情况。这种情况包括一个德语字母。它未正确转换为 HTML。

你能让我知道问题是来自Perl还是XSLT吗?提前感谢您的帮助!

URL 必须具有方案,例如 http ,并且只能包含 8 位字符。所以生成的<a>标签应该看起来像这样

<a href="file:///C:/test/K%C3%A4se/failedImages/failed_1.png">

您没有添加正确的方案,但除此之外,如果 ä 表示为 %C3%A4(这是字符的 UTF-8 编码(,那么它是正确的

此外,不应将 <meta> 元素编码到 XSLT 代码中,因为它只是 XSLT 引擎的文本。类似的东西

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

应使用

<xsl:output media-type="text/html" encoding="UTF-8" />

以便 XSLT 引擎知道设置,并可以生成<meta>元素以及与其匹配的数据

您还需要method="html"indent="yes"

这是一个编码问题,在没有进一步信息的情况下,我可以提出的最佳建议是确保您的输入 XML 和 XSLT 都具有指定您正在使用的编码的标头,并确保在 XSLT 的根目录中有一个与之匹配的<xsl:output encoding=".."/>。XML 标头应如下所示:

<?xml version="1.0" encoding=".."?>

我相当确定您的问题很可能是您的输入 XML 没有一个,并且它假设编码错误,或者指定了错误的编码。您需要确保输入上的 XML 声明一开始是正确的,否则将无法正确读取该ä

编辑:根据您对Borodin答案的评论,这听起来更像是消耗输出的任何内容都将其读取为错误的编码; 他是对的,您从XSLT中获得的是有效的URI编码UTF8,无论您生成链接/打开资源管理器的任何东西都是URI解码它,就好像它是Windows-1252一样。

最新更新