2015-06-18 26 views
1

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

有人能帮我吗?

我的问题是,在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不是对我很重要。

回答

1

这两个Xml都是相同的,如果使用前缀或不如Xml元素属于命名空间,则根据定义的方案是无关紧要的。它不是一个有效的要求,请求具有特定前缀的xml。即使你需要这样做,使用自定义Xslt。

+0

它是使用前缀限定元素的良好做法。一些解析器在使用默认命名空间时可能会遇到问题,并且一些贸易伙伴可能需要这些元素是合格的。 –

+0

是的,正如丹菲尔德所说,不幸的是我们的客户在默认命名空间时遇到了麻烦。 –

+0

正如我前面所说,如果你必须这样做,请使用自定义Xslt。我同意Dan关于命名空间的限定元素,但是,既然xml已经有了限定元素,所以我假设yr模式是正确的。具有前缀只是避免用每个元素声明名称空间。如果你使用yr模式验证第二个xml,它应该也是第一个有效的。如果年轻客户坚持要有前缀,可以使用自定义Xslt来完成。验证yr地图,它会生成Xsl文件,在输出窗口中检查。用它作为年的起点。一旦Dane将ys项目中的Xsl文件保存并在地图中使用它。 –

2

设置的目标模式ElementFormDefault属性Qualified

Qualified Property

这个属性可以通过单击树有问题的架构<Schema>节点上观看;注意这是一个变化的模式,没有在地图上做(尽管图像可能是什么样子):

Schema node

+0

这是客户的模式,我无法改变它。也许自定义xslt是一个选项。 –

+0

是的,映射引擎将依赖模式中的该属性。如果你不能改变它,自定义的XSLT可能是你最好的选择。 –

0

有依赖于NS前缀许多遗留解析器。即使它是一样的东西。这里的解决方案是将你的模式设置为XML类型,如果你有一个平面文件模式,你必须像Dan Field所提到的那样,将你的ElementFormDefault设置为合格,并且在XSLT中写入你想要的内容,你将得到你的命名空间