问题
In the past, BizTalk (and the .NET framework in general) has not supported any XSLT version besides 1.0. Our company is about to upgrade to BizTalk Server 2016, and I was wondering whether it's possible (and natively supported) to use XSLT 2.0 or 3.0 for custom mapping in said BizTalk Server version?
I know it's not likely they've implemented this, but I've been roaming the internet and I can't seem to find a concrete answer to this question.
回答1:
No, it only supports XSLT 1.0.
However it has been requested on uservoice see Support for XSLT2 or XSLT3
And Microsoft responded
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.
If there are any other features or issues with BizTalk, make sure to raise or vote on them on UserVoice
回答2:
MS Support for XSLT >1.0
Sadly MS took the decision not to provide support for XSLT > 1.0. Here's their reasoning from 2004; and so far as I can see it's not been revised since. 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...
Their XslCompiledTransform
does support some additional features over XSLT 1.0; but it's non-standard and by no means full support.
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.
Workaround: Use a 3rd Party solution: e.g. Saxon
That said, in BT you can make use of C# classes within orchestrations. Saxon provides support for XSLT 3.0 for .net, so you just need to make use of their third party library. Here's a getting started guide:
http://www.saxonica.com/html/documentation/about/gettingstarted/gettingstarteddotnet.html
Feature Request
There is an open issue on the .Net Core Framework
site requesting this support. Once it's in the framework, BT would surely make use of it. Please thumbs up
this suggestion to help prioritise it: https://github.com/dotnet/corefx/issues/2295
来源:https://stackoverflow.com/questions/44841104/is-there-xslt-2-0-or-3-0-support-in-biztalk-server-2016-mapping