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

具有命名空间前缀的Biztalk映射,biztalk,biztalk-2009,Biztalk,Biztalk 2009,我需要在所有节点上生成带有名称空间前缀的输出消息 谁能帮帮我吗 我的问题是,在BizTalk中映射后,输出消息具有内联命名空间 例如,我期望: <ns0:root xmlns:ns0="http://www.domain1.com" xmlns:domain2="http://www.domain2.com"> <domain2:element1>abc</domain2:element1> <ns0:element2>abc<

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

谁能帮帮我吗

我的问题是,在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>

abc
abc
但事实是:

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

abc
abc

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

这两个Xml都是相同的,使用前缀与否无关紧要,因为根据定义的方案,Xml元素属于名称空间。请求带有特定前缀的xml不是有效的要求。即使需要这样做,也可以使用自定义Xslt。

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

可以通过单击相关架构树中的
节点来查看此属性;请注意,这是对模式的更改,而不是在映射中执行(不管图像看起来如何):


有许多传统解析器依赖于ns前缀。即使是同一件事。这里的解决方案是将您的模式设置为XML类型,您将拥有您的名称空间,如果您有一个平面文件模式,您必须如Dan Field所述将ElementFormDefault设置为Qualified,并在XSLT中写入您想要的内容,最好使用前缀限定元素。一些解析器在使用默认名称空间时可能会遇到问题,一些贸易伙伴可能会要求对元素进行限定。是的,正如Dan Field所说,不幸的是,我们的客户在使用默认名称空间时遇到了问题。正如我前面所说的,如果必须这样做,请使用自定义Xslt。我同意Dan关于使用名称空间限定元素的观点,但是两个xml都已经限定了元素,所以我假设yr模式是正确的。使用前缀只是避免在每个元素中声明名称空间。如果使用yr模式验证第二个xml,那么它应该与第一个xml一样有效。如果您的客户坚持使用前缀,您可以使用自定义Xslt。验证yr映射,它将生成Xsl文件,签入输出窗口。以此为出发点。一旦Dane在yr项目中保存Xsl文件并在map中使用它。这是客户的模式,我无法更改它。也许自定义xslt是一种选择。是的,映射引擎将依赖于模式中的该属性。如果您无法更改它,那么定制XSLT可能是您最好的选择。