客户端XSLT

时间:2009-05-08 18:44:08

标签: xslt client-side

我将整个网站转换为XML / XSL,我想知道执行客户端XSLT的所有当前问题。

以下是我已经知道的(来自第一手经验):

  • 跨域XSL文件(这是一个安全问题,而不是跨浏览器)
  • disable-output-escaping(这在FF中不起作用......他们认为这是一个安全问题)

此外,对于浏览器支持,这是我所知道的:

  • Opera 9 +
  • FF 1.0 +
  • SF 2.0 +(我可能错了)
  • IE 6.0 +

任何其他人也会有所帮助:)

编辑:

至于第二个陷阱,有一个不错的解决方法,可以让你将xhtml传递给你的xsl。它的工作原理是实际转换并确保您的XHTML是有效的XML并将其作为XML放入XML中。然后在您的XSL中复制xml;)并将其输出为XHTML。

5 个答案:

答案 0 :(得分:14)

  • 速度:浏览器需要在呈现HTML之前应用XSLT转换,因此用户必须等待更长时间才能看到该页面。浏览器使用的XSLT引擎可能不是一流的。在Mac OS X上,浏览器可能会在XML转换时冻结并导致“旋转沙滩球”光标,因此用户可能会猛击屏幕并伤害他或她自己。

  • 辅助功能:不在该套装中的浏览器如屏幕阅读器怎么样?那些用户对你很重要吗?

答案 1 :(得分:5)

在性能方面......考虑到目前大多数客户端每个都有2个CPU和2 GB RAM,并且大多数服务器都没有......每个客户端有两个CPU + 2 GB。因此,卸载XSLT转换应该提高可伸缩性,并且缓存CSS + XSLT + JS 应该减少总体流量,这当然是合乎逻辑的。

说过我曾经尝试过使用XSLT生成包含SVG的XHTML,并且有史诗般的失败。最大的页面太大了(索引中有3,000多个条目),IE使用DOM来进行XSLT转换,这导致它开始变废乱。在xerces-j中完成的相同转换(在服务器上,在相同的开发盒上)大约快了1000倍。

这是浏览器猴子使用该程序的时候了; - )

一个有趣的讨论。谢谢你提高它。

干杯。基思。

答案 2 :(得分:2)

我发现传递参数到xsltfiles很难保持交叉浏览能力。我现在支持FF和IE,但Chrome因此而失败..

答案 3 :(得分:1)

我在使用xslt + xml->的项目中工作了大约1年。 html(仅限服务器端)

我遇到的主要缺点:没有用于xslt生成的好工具,这些工具倾向于web开发。没有预览的HTML。没有验证。 由此产生的xslt是一个无人能理解的混乱。这不是xslt设计师的错误,而是来自xslt处理模型的结果。

xslt / xml / urls之间的分层变得比它应该更复杂。你无法编写面向组件的方法。

通常需要多个xslt文件,这会导致客户端的许多下载。否则会导致整个项目中的大量代码重复。

我会将此视为早期优化的一种形式。你应该首先使用像wicket,jsf,tapestry,gwt等“正常”的web框架,稍后如果事实证明你的服务器性能是cpu-bound,那么你可能会用这种方式重写apllication最常用的部分。

otoh,如果您需要同时提供xml api + html界面,它会带来真正的好处。

答案 4 :(得分:0)

XSLT文件是另一个需要下载的对象,浏览器只能并行获取2个或3个项目。我的经验是整体性能(下载和生成)明显变慢。

此外,根据数据的复杂性和冗余性,您可能下载的内容远远超过您的实际需要 - 即。如果HTML已经被渲染。

相关问题