我目前正在重构一个包含数千个XSLT文件的大型XSLT 1.0库。该库设计为使用MSXML运行,因此在整个过程中都有ms:node-set()调用。令我感到震惊的是,如果我们需要将库移植到不同的XSLT引擎,那么通过并更新对节点集函数的所有引用将是一项任务。
是否可以以更便携的方式实现节点集功能,以便在移植库时有单点更改?例如,定义一个自定义函数,例如my:node-set(),它包装/覆盖ms:node-set()函数并替换库中的所有ms:node-set()引用以引用我的: node-set()代替。
我对涉及迁移到XSLT 2.0的解决方案不感兴趣
答案 0 :(得分:1)
用户指定的函数不是XSLT 1.0的一个特性(尽管某些实现支持用户定义函数作为扩展)。因此,您想到的用户定义的包装器将无法工作。 (叹气。)如果你使用node-set()的EXSLT风格,你可能会获得更好的可移植性。