【发布时间】:2012-02-21 10:10:13
【问题描述】:
我正在使用 BizTalk 映射器映射到 HL7 A31 消息。该地图有几个内联 XSLT 脚本 functoid。
当 XML 通过 HL7 发送管道时,会产生错误:
元素“ROL_11_OfficeHomeAddress”的结构无效
如果我查看挂起的消息,我会明白为什么会发生这种情况。 ROL_11 元素为空,如下所示:
<ROL_11_OfficeHomeAddress>
</ROL_11_OfficeHomeAddress>
在开始和结束标记之间,由于缩进,有一个换行符和几个空格/制表符。这与 XSLT 生成的完全一样,我相信是换行符导致了错误。
我可以将 XSLT 包装在 <xsl:if> 语句中,以便在编写 XML 之前检查值。然而,这个问题在很多地方都发生了,像这样包装每个元素似乎有点过头了。
我真正想要的是让 BizTalk 自动将元素转换为空元素,如下所示:
<ROL_11_OfficeHomeAddress />
我相信这会解决问题。有什么办法可以告诉它这样做吗?
我已经尝试过的事情:
使用
<xsl:strip-space>但这引发了它自己的错误。我认为这是因为 BizTalk 将内联 XSLT 包装在自己的代码中,因此在错误的位置指定了条形空间。更改地图的网格属性以将 Indent 设置为 No,希望删除空白。这对暂停消息中看到的 XML 没有影响。
根据this guidance 添加用于旧版空白处理的注册表项。同样,这似乎根本没有效果。
【问题讨论】:
标签: xslt biztalk biztalk-2009 hl7