我正在使用xml
,xslt
和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一样。