是否有可能编写一个XSLT 1.0样式表,可以将XSLT 2.0样式表转换为XSLT 1.0样式表?

时间:2012-01-06 21:41:08

标签: xml xslt stylesheet transform

浏览器对XSLT 2.0的支持似乎还有很长的路要走(Firefox至少还没有这样做):与XSLT 1.0相比,XSLT 2.0提供了许多程序员友好的优势(例如,不再有可怕的结果树片段)......所以....

编写一个可以将XSLT 2.0样式表转换为XSLT 1.0样式表的XSLT 1.0样式表有多可行?

从理论上讲,你可以获得程序员的好处,但同时也可以获得兼容性好处......


在XSLT 1.0中手动编写这个并不是绝对必要的....但理论上可以从更高级别的语言创建困难的位(例如正则表达式引擎),这需要“编译” '('我想是'翻译'到XSLT ....

但是即使这样做(我承认这不一定是一件容易的事情),听起来结果样式表本身会非常大/效率低...... ....

听起来某些设施在XSLT 1.0中无法表达:就像读取非XML输入文件一样......

感谢您的回复!

干杯

2 个答案:

答案 0 :(得分:3)

可能的?可能,至少在XSLT为Turing complete的意义上。

可行没办法。您不仅需要在XSLT 2.0中实现所有新功能(并以某种方式处理XPath 2.0表达式),您还需要找出一些方法来处理每一个此large list of differences between the two versions中的项目,其中许多呈现正常的XSLT 1.0结果与XSLT 2.0不兼容。换句话说,没有直接,直接的翻译。

在XSLT 1.0中编写完整的XSLT 2.0实现让我感到疯狂。

答案 1 :(得分:1)

  

编写XSLT 1.0样式表的可行性如何?   哪个可以将XSLT 2.0样式表转换为XSLT 1.0样式表?

忘了这个

虽然这在理论上是可行的,但涉及的工作量将超过从头开始编写XSLT 2.0处理器的工作量。此外,结果将非常低效。

由于XSLT中的许多新功能在XSLT 1.0中没有模拟功能,因此在纯XSLT 1.0 中编写这样的转换器通常 。扩展将非常需要,这使得这个项目从一开始就不可移植,因此其实用性非常有限(如果有的话)。

XSLT 2.0的功能几乎非常难以实现或不可能没有扩展

  • 新的XPath 2.0 XDM。

  • 强类型和丰富的类型系统。

  • 序列。

  • RegEx支持。

  • 取消了RTF。

  • 支持阅读任何文本文件。

  • <xsl:for-each-group>

  • XPath 2.0 collection()函数。

  • 日期/时间/持续时间功能。

  • <xsl:function>

  • 隧道参数。

  • 带参数的
  • <xsl:apply-imports>

  • 等......,等等。