使用XSLT呈现符合xhtml标准的页面将无法正确呈现内联javascript块

时间:2010-07-16 12:38:00

标签: javascript xslt xhtml

我目前正在更新(很多)旧的xsl + html代码以呈现符合xhtml的代码,但我正在遇到一个页面包含内联javascript的问题。一些javascript可以从内联中删除并放入链接的js文件中。

但是,在javascript中有许多地方使用xsl元素。

在浏览器中查看输出时,渲染似乎停止在源中显示javascript的位置(源生成正常)。

我已经尝试了所有常见的CDATA和xsl:评论围绕这些javascript块的hacks,但结果仍然相同。

对此的任何帮助将不胜感激。请询问您是否需要任何进一步的信息。

2 个答案:

答案 0 :(得分:1)

尝试通过XML验证程序运行转换后的页面。这至少会告诉您它是XML兼容性还是浏览器兼容性问题。没有看到转换后的代码,很难诊断出正在发生的事情。您的问题可能与Javascript错误或无效的XML有关。此外,浏览器本身可以逐步处理XSLT并进行渲染,因为您没有指定变换是在渲染之前完成还是作为渲染的一部分完成。到达底部的最佳方法是拆开碎片。通过兼容的XSLT处理器运行XSLT以确保XSLT有效。然后通过XML验证器运行其输出,以确保您没有收到任何XML验证错误。最后,通过XHTML验证程序运行XSLT输出。如果所有这些步骤都成功,那么您可能会遇到像Javascript错误这样简单的事情。

答案 1 :(得分:0)

在执行此任务后(强制执行)中断后,我重新访问并发现阻止浏览器正确呈现内容的错误。 XSL正在错误地输出iframe和脚本元素作为自闭标记。为了防止这种情况发生,我使用<xsl:text> </xsl:text>强制在元素中添加了一些空格。

感谢您的帮助和建议。