我正在使用BizTalk映射器映射到HL7 A31消息。該地圖有幾個內聯XSLT腳本functoid。由於空XML元素中的換行符導致BizTalk HL7發送管道錯誤
當XML通過放HL7發送管道,它會產生一個錯誤:
The element 'ROL_11_OfficeHomeAddress' has an invalid structure
如果我看掛起的消息,我可以看到,爲什麼出現這種情況。該ROL_11元素是空的,看起來是這樣的:
<ROL_11_OfficeHomeAddress>
</ROL_11_OfficeHomeAddress>
的開始和結束標記之間,有一個換行符和若干空格/製表符由於縮進。這與XSLT生成的完全一樣,我相信這是導致錯誤的換行符。
我可以將XSLT包裝在<xsl:if>
語句中,以在寫入XML之前檢查值。然而,這個問題發生在很多地方,看起來像這樣包裝每一個元素似乎過分。
我真正想要的是爲BizTalk的元素會自動轉換爲空單,這樣的:
<ROL_11_OfficeHomeAddress />
我相信這會解決這個問題。有什麼辦法可以告訴它這麼做嗎?
事情我已經嘗試:
使用
<xsl:strip-space>
但提出了自己的錯誤。我認爲這是因爲BizTalk將內聯XSLT包裝在其自己的代碼中,因此strip-space被指定在錯誤的地方。改變地圖的網格屬性設置縮進到沒有希望的空白將被刪除。這對暫停消息中看到的XML沒有影響。
根據this guidance添加舊式空白處理的註冊表項。再一次,這似乎根本沒有效果。
非常感謝您的回答;我沒有想過把整個事情轉換成XSLT。我遇到的唯一問題是,我仍然必須將''測試添加到可能發生的所有地方。但是,如果將整個映射轉換爲XSLT,我可以使用''函數在全局範圍內執行此操作嗎?還是我誤解了它的目的? –
2012-02-21 14:42:11
我上面編輯過 - 祝你好運! – StuartLC 2012-02-21 15:45:26