Xpath 将样式表从XSLT1.0转换为2.0

Xpath 将样式表从XSLT1.0转换为2.0,xpath,xslt-1.0,xslt-2.0,Xpath,Xslt 1.0,Xslt 2.0,我有一个XSLT1.0样式表,需要转换为XSLT2.0 我在这里发现了一个问题:哪个涉及同样的问题 根据这一点,将version属性更改为2.0就可以了。但这是唯一需要做的事情吗 提前感谢列出了XSLT 1.0和XSLT 2.0之间需要注意的大部分差异。我认为转换策略的选择取决于一组回归测试的好坏 如果您有一组良好的回归测试,或者引入错误的后果并不严重,那么我建议您采取以下步骤: (a) 将版本属性更改为2.0 (b) 使用XSLT2.0处理器运行测试用例,看看它们是否有效 (c) 检查任何测试

我有一个XSLT1.0样式表,需要转换为XSLT2.0

我在这里发现了一个问题:哪个涉及同样的问题

根据这一点,将version属性更改为2.0就可以了。但这是唯一需要做的事情吗


提前感谢

列出了XSLT 1.0和XSLT 2.0之间需要注意的大部分差异。

我认为转换策略的选择取决于一组回归测试的好坏

如果您有一组良好的回归测试,或者引入错误的后果并不严重,那么我建议您采取以下步骤:

(a) 将版本属性更改为2.0

(b) 使用XSLT2.0处理器运行测试用例,看看它们是否有效

(c) 检查任何测试差异并确定其原因(可能有80%的时间它会在没有差异的情况下第一次正常工作)

如果你没有良好的测试,或者你承担不起任何风险,那么你可能需要一个更加谨慎的策略。(当然,最为谨慎的是“不要改变任何事情”策略——坚持使用1.0)。在这种情况下,最好的建议可能是通过编写更多的测试用例来启动转换项目。至少,收集当前正在处理的源文档的样本以及为这些源文档生成的输出,然后使用文件比较工具比较转换后得到的输出

1.0和2.0之间存在一些不兼容;您最可能遇到的一种情况是,1.0中的xsl:value of(以及许多其他构造)会忽略所提供输入序列中第一个之后的所有节点,而XSLT2.0会输出所提供序列中的所有节点。处理这个问题有两种方法。(我的建议)确定出现此问题的位置,并修复它们,通常通过将select=“X”更改为select=“X[1]”;或者将xsl:stylesheet上的version属性更改回version=“1.0”,这将导致XSLT2.0处理器以向后兼容模式运行。依赖向后兼容模式的缺点是失去了XSLT2.0中更强类型检查的好处,这使得复杂样式表代码更容易调试


根据我的经验,在转换过程中遇到的问题更可能取决于处理器/实现的更改,而不是W3C语言的更改。您的代码可能使用的是2.0处理器不支持的供应商定义的扩展函数,或者它可能依赖于实现定义的行为,例如不同处理器之间的排序序列。例如,我见过一些代码,它们依赖于generate-id()生成的输出的特定格式,这完全依赖于实现。

谢谢,我需要的是从1.0转换到2.0。我需要知道我应该为转变做些什么。是的,我以前读过。我想要转换的简单步骤。转换并不需要所有的差异。我在一定程度上读过迈克尔·凯的书。他在流动中,希望他能看到这一点。:)谢谢,非常感谢,迈克尔。我很高兴得到你的答复