2015-06-18 20 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中寫入你想要的內容,你將得到你的命名空間