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