浏览器对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输入文件一样......
感谢您的回复!
干杯
答案 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>
。
等......,等等。