带有命名空间前缀的 Biztalk 映射

Biztalk mapping with namespace prefix

我需要在所有节点上生成带有命名空间前缀的输出消息。

有人可以帮我吗?

我的问题是在 BizTalk 中映射后,输出消息具有内联命名空间。

例如,我期望:

<ns0:root xmlns:ns0="http://www.domain1.com" xmlns:domain2="http://www.domain2.com">
    <domain2:element1>abc</domain2:element1>
    <ns0:element2>abc</ns0:element2>
</ns0:root>

但它是:

<root xmlns="http://www.domain1.com">
    <element1 xmlns="http://www.domain2.com">abc</element1>
    <element2 xmlns="http://www.domain1.com">abc</element2>
</root>

命名空间别名 ns0、domain2 对我来说不重要。

这两个 Xml 是相同的,是否使用前缀并不重要,因为 Xml 元素按照定义的方案属于命名空间。请求具有特定前缀的 xml 不是有效要求。即使你需要这样做,也使用自定义 Xslt。

将目标架构上的 ElementFormDefault 属性 设置为 Qualified:

可以通过单击相关模式树中的 <Schema> 节点来查看此 属性;请注意,这是对架构的更改,而不是在地图中完成(尽管图像可能看起来像):

有许多依赖 ns 前缀的遗留解析器。哪怕是一样的东西。这里的解决方案是将您的模式设置为 XML 类型,您将拥有您的命名空间,如果您有一个平面文件模式,您必须如 Dan Field 所述将您的 ElementFormDefault 设置为合格,并在 XSLT 中编写您想要的内容