BizTalk 2020 Saxon XSLT 3.0 转换异常

Posted

技术标签:

【中文标题】BizTalk 2020 Saxon XSLT 3.0 转换异常【英文标题】:BizTalk 2020 Saxon XSLT 3.0 Transformation exception 【发布时间】:2021-01-01 01:32:55 【问题描述】:

我正在尝试进行概念验证以使用 saxon xslt 3.0 运行 BizTalk 地图 有一种方法,我们可以使用自定义扩展(xml)扩展对象来执行方法。

我正在关注此链接,但在执行 TestMap

时出现错误

Saxon 变换的扩展类 Test.TestMethod 无效,其类型应为“ExtensionFunction”或“ExtensionFunctionDefinition”

BizTalk Server 2020: A review of the new XSLT 3.0 & Custom Transform Features: Custom Engine Options (social.technet.microsoft.com)

自定义扩展 xml

<ExtensionObjects>
<ExtensionObject Namespace="http://schemas.microsoft.com/BizTalk/2003/ScriptNS0" AssemblyName="Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=11f992b93de945f2,processorArchitecture=MSIL" ClassName="Test.TestMethod" /></ExtensionObjects>

自定义扩展 xml 文件中是否缺少任何内容? 我不确定这里出了什么问题。

注意:在 BizTalk 2020 中部署应用程序后,我在运行时遇到同样的错误

【问题讨论】:

您的代码看起来如何?你实现ExtensionFunctionDefinitionExtensionFunctionCall了吗?并且不应该ClassName="Test.TestMethod" 而是命名例如ClassName="MyNamespace.MyExtensionClass"?但后者取决于你的代码看起来如何,所以在你的问题中显示出来。 @MartinHonnen :是的,我尝试使用相同的示例 --CSharpExtension 类来实现(ExtensionFunctionDefinition 和 ExtensionFunctionCall)。在该示例链接中,您是否将 MyExtensionClass 称为“ExtensionFunctionDefinition”? 不,实现ExtensionFunctionDefinition的类例如从示例中它是CSharpExtensions.Sqrt。在该示例中,CSharpExtensions 是命名空间,Sqrt 是该命名空间中实现 ExtensionFunctionDefinition 的类的名称。 是的,我已经用c#实现了。只是使用了不同的类和方法名。其余都一样 【参考方案1】:

不需要添加扩展对象。 测试地图并运行 saxon xslt 3.0,但您无法从 VS 调试 xslt。

按照这个操作:

    转到c:\Program Files (x86)\Microsoft BizTalk Server\Developer Tools\CustomTransform.xml 复制TypeAssemblyQualifiedName的值 打开 regedit.exe 并在以下注册表中创建字符串值“XsltEngine”:
64 位主机实例:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\BizTalk Server\3.0\Configuration 32 位主机实例:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\BizTalk Server\3.0\Configuration
    粘贴TypeAssemblyQualifiedName的值作为值 重启服务器

【讨论】:

【参考方案2】:

如果您仍然需要这方面的帮助,请在 MSDN Q&A Logic Apps 论坛上发布请求。

【讨论】:

以上是关于BizTalk 2020 Saxon XSLT 3.0 转换异常的主要内容,如果未能解决你的问题,请参考以下文章

Saxon 中的 BaseUri 在尝试编译 xslt 内容时导致问题

BizTalk Server 2016 映射中是不是支持 XSLT 2.0 或 3.0?

如何在 .NET 中使用 Saxon-HE 9.8 使用 XSLT 3.0

Saxon XSLT 2.0 和 RFC 822 日期格式

如何在 Saxon-HE 中获得 EXSLT 支持?

使用 SAXON 和 XSLT 合并 XML 文件