BizTalk 2020 XSLT 3.0 - 样式表编译期间报告错误

Posted

技术标签:

【中文标题】BizTalk 2020 XSLT 3.0 - 样式表编译期间报告错误【英文标题】:BizTalk 2020 XSLT 3.0 - Errors were reported during stylesheet compilation 【发布时间】:2020-06-21 21:30:56 【问题描述】:

我正在 BizTalk 2020 中尝试我的第一个 XSLT 3.0,并在 Visual Studio 2019 中进行“测试地图”。 以下是来自输出窗口:

    Invoking component...
    C:\Users\Administrator\source\repos\SchemaLesson\MapXSLTDemos\Map_FlightReservation_to_FlightData_3.0.btm: 
The compilation is using the CustomXslt and CustomExtensionXml tags to generate the output.  The map content is ignored.

    TestMap used the following file: 
<file:///C:\Users\Administrator\AppData\Local\Temp\inputfile.xml> as input to the map.
    C:\Users\Administrator\source\repos\SchemaLesson\MapXSLTDemos\Map_FlightReservation_to_FlightData_3.0.btm: 
error btm1050: XSL transform error: Unable to write output instance to the following <file:///C:\Users\Administrator\AppData\Local\Temp\_MapData\MapXSLTDemos\Map_FlightReservation_to_FlightData_3.0_output.xml>. 
Errors were reported during stylesheet compilation
    Test Map failure for map file <file:///C:\Users\Administrator\source\repos\SchemaLesson\MapXSLTDemos\Map_FlightReservation_to_FlightData_3.0.btm>. 
The output is stored in the following file: <file:///C:\Users\Administrator\AppData\Local\Temp\_MapData\MapXSLTDemos\Map_FlightReservation_to_FlightData_3.0_output.xml> 
    Component invocation succeeded.

对我来说,问题是存在错误 [正如它所说的“在样式表编译期间报告了错误”],但它们没有显示在输出窗口中。它们是否在输出窗口中未列出的某个神秘文件上写入磁盘?我不是要解决我的具体错误,所以我没有发布代码。我想知道如何查看“报告”的错误。

从自定义网格中,我转到属性窗口并将“XSLT 转换引擎”设置为“Saxon 9 HE”。

类似的问题是asked here。但是答案解决了具体的代码问题,而不是告诉人们如何找到错误。

【问题讨论】:

能否在 Visual Studio 中打开 XSLT,并使用 XML 菜单选择 Run XSLT with debugging? docs.microsoft.com/en-gb/biztalk/core/technical-reference/… 处的 MS 接口文档没有明确说明在 Load 调用或 Transform 调用期间错误会发生什么,因此不清楚 Saxon 是否或如何报告任何错误在样式表编译或执行期间传播或报告。如果您从命令行使用Transform.exe 运行.NET 版本的Saxon 9,它将向控制台的错误流saxonica.com/html/documentation9.8/using-xsl/commandline 报告错误。 @Dijkgraaf - 起初这确实让我看到了我的第一个错误。但显然我还有其他无法识别的错误。在我修复了第一个并尝试逐步浏览我的地图后,单击 F10 或 F11 似乎正在开始部署,但失败了。所以这似乎完全是另一个问题。 Martin 我今晚可能会试试 Saxonica 命令行。我希望这不是必需的,Visual Studio 会处理所有事情。 @MartinHonnen - 我能够使用 Saxonica 命令行找到错误 - 一旦我安装了它 (***.com/questions/60627181/…)。我认为如果 Microsoft 没有捕获这些错误并在输出窗口中显示它们,这是一个错误。 张贴在 MSDN 论坛上,看看他们是否会承认这是一个错误并可能在未来的更新中修复。 social.msdn.microsoft.com/Forums/en-US/… 【参考方案1】:

您需要关注这篇文章: Create custom XSLT transform

    转到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的值作为值 重启服务器

【讨论】:

这个问题是 7 个月前的问题,我的 XSLT 出现错误,但 Visual Studio 没有显示实际错误。你是说你的答案解决了这个问题吗?如果 XSLT 代码正确,我可以毫无问题地运行 Saxon XSLT。 对不起,我现在从 Biz 20 开始 :) 所以我读到这个问题已通过累积更新 1 修复。support.microsoft.com/en-gb/help/4538666/… ypu 可以找到这些解决方案:修复:测试地图不提供有关 XSLT 样式表中错误的详细信息 酷,我还没有检查累积更新。 我尝试安装和工作。你可以在这里下载:microsoft.com/en-us/download/details.aspx?id=101582

以上是关于BizTalk 2020 XSLT 3.0 - 样式表编译期间报告错误的主要内容,如果未能解决你的问题,请参考以下文章

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

Biztalk/XSLT - 映射没有任何关联的所属段

BizTalk 循环仿函数

Marklogic xml 转换中的 XSLT 3.0 支持

XSLT 3.0 中的日期排序

如何判断我编写的 XSLT 3.0 是不是实际上是流式传输 XML?