SAP Integration Suite中XSLT 3.0 use-package配置替代方案咨询
在SAP Integration Suite(Saxon EE 9.9)中无需修改配置文件使用XSLT 3.0包的方法
针对你遇到的无法修改Saxon EE配置文件注册包的问题,有两种可行的方式实现XSLT 3.0包的模块化引用,且不需要依赖配置文件:
1. 直接通过href属性引用同URI位置的包文件
Saxon EE 9.9支持在xsl:use-package元素中通过href属性直接指向包的物理文件路径(或URI),无需提前在配置文件中注册包名称。结合你当前能引用同URI位置样式表的环境,只需将定义好的XSLT包文件(可以是未编译的.xsl包文件,或编译后的.xar包归档)放在主样式表的同一URI路径下,然后在主样式表中使用如下语法引用:
示例(引用未编译的XSLT包文件)
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- 引用同位置的工具包 --> <xsl:use-package href="util-package.xsl" package-version="1.0"/> <!-- 主样式表逻辑 --> <xsl:template match="/"> <!-- 调用包中的工具函数 --> <result> <xsl:value-of select="util:format-date(current-date())"/> </result> </xsl:template> </xsl:stylesheet>
示例(引用编译后的XAR包)
如果你的包已经编译为Saxon的XAR归档文件,同样可以用href直接引用:
<xsl:use-package href="util-package.xar" package-version="1.0"/>
这种方式下,Saxon会直接从指定的URI加载包文件,完全绕过配置文件中的包注册表,完美适配你当前的iPaaS环境限制。
2. 将包内容作为普通样式表导入(备选方案)
如果上述包引用方式遇到兼容性问题,你也可以将原本定义在xsl:package中的工具函数、模板等内容,拆分为普通的XSLT样式表文件,放在同URI位置后通过xsl:import或xsl:include导入使用:
<xsl:import href="util-functions.xsl"/>
这种方式虽然没有用到XSLT 3.0的包特性,但能快速实现代码模块化,且完全符合你当前的环境能力。
需要注意的是,使用xsl:use-package时,确保包文件本身是用xsl:package元素定义的合法XSLT 3.0包,且package-version要与包定义中的版本一致。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

