如何在BizTalk 2020中使用XSLT 2.0?解决current-dateTime()函数报错
BizTalk 2020中XSLT 2.0函数
current-dateTime()报错的解决方法 问题原因
BizTalk Server 2020默认搭载MSXML引擎,仅支持XSLT 1.0规范,而current-dateTime()是XSLT 2.0新增的标准函数,因此会触发"未知函数"的编译错误(报错截图显示编译时提示'current-dateTime()' is an unknown XSLT function)。
解决方案
方案1:用XSLT 1.0兼容写法替代
如果不需要完整的XSLT 2.0功能,可以用XSLT 1.0支持的方式获取当前时间:
- 在XSLT的stylesheet节点添加动态属性:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" now="{system-property('xsl:date-time')}">
- 在需要调用时间的位置引用该属性:
<xsl:value-of select="document('')/xsl:stylesheet/@now" />
这种写法利用MSXML特性,会自动将当前时间注入到now属性中。
方案2:集成Saxon引擎启用XSLT 2.0支持
是的,要在BizTalk中使用完整的XSLT 2.0功能,必须引入第三方XSLT处理器,Saxon是业界主流选择,具体步骤:
- 下载Saxon的.NET版本(推荐免费开源的Saxon-HE,或按需选择商用版Saxon-PE/EE),将对应的DLL文件部署到BizTalk服务器的全局程序集缓存(GAC)中
- 配置BizTalk映射使用自定义处理器:
- 打开目标BizTalk映射,右键空白区域选择「属性」
- 在属性面板中设置「Custom XSLT Path」为你的XSLT 2.0文件路径
- 找到「XSLT Processor」选项,选择「Custom」,并将处理器类型设置为
net.sf.saxon.TransformerFactoryImpl
- 确保BizTalk主机服务账户拥有访问Saxon DLL文件的权限
内容的提问来源于stack exchange,提问作者iamramanavenkat
相关产品推荐
相关产品推荐

