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

Is there XSLT 2.0 or 3.0 support in BizTalk Server 2016 mapping?

过去,BizTalk(以及一般的 .NET 框架)不支持除 1.0 之外的任何 XSLT 版本。我们公司即将升级到 BizTalk Server 2016,我想知道在上述 BizTalk Server 版本中是否可以(并且原生支持)使用 XSLT 2.0 或 3.0 进行自定义映射?

我知道他们不太可能实现这个,但我一直在网上漫游,我似乎找不到这个问题的具体答案。

不,它只支持 XSLT 1.0。

然而,在停用之前已在 uservoice 上请求过它

微软回应

Tord Glad Nordahl (Program Manager, Microsoft Corp) responded · March 18, 2017 We have forwarded this request to the .NET team. We will keep this open.

不过,XSLT 3 是 BizTalk 2020 的一项功能,请参阅 What's New in BizTalk Server 2020

XSLT 3.0 New extensible model for runtime map execution, out of box wiring to work with Saxon XSLT3.0.

MS 对 XSLT 的支持 >1.0

遗憾的是,MS 决定不为 XSLT > 1.0 提供支持。这是他们从 2004 年开始的推理;据我所知,自那以后它没有被修改过。 https://blogs.msdn.microsoft.com/dareobasanjo/2004/05/13/why-you-wont-see-xslt-2-0-or-xpath-2-0-in-the-next-version-of-the-net-framework/

There are several reasons why we aren’t implementing XSLT 2.0 and XPath 2.0.

It takes a lot of effort...

他们的 XslCompiledTransform 确实支持 XSLT 1.0 的一些附加功能;但它是非标准的,绝不是完全支持的。 https://msdn.microsoft.com/en-us/library/system.xml.xsl.xslcompiledtransform(v=vs.110).aspx

The XslCompiledTransform class is an XSLT processor that supports the XSLT 1.0 syntax. It is a new implementation and includes performance gains when compared to the obsolete XslTransform class. The structure of the XslCompiledTransform class is very similar to the XslTransform class. The Load method loads and compiles the style sheet, while the Transform method executes the XSLT transform.

解决方法:使用第 3 方解决方案:例如撒克逊人

也就是说,在 BT 中,您可以在编排中使用 C# 类。 Saxon 为 .net 提供 XSLT 3.0 支持,因此您只需要使用他们的第三方库即可。这是入门指南:

http://www.saxonica.com/html/documentation/about/gettingstarted/gettingstarteddotnet.html

功能请求

.Net Core Framework 站点上有一个未解决的问题请求此支持。一旦它进入框架,BT 肯定会利用它。请 thumbs up 这个建议来帮助确定它的优先级:https://github.com/dotnet/corefx/issues/2295