BizTalkマッパーを使用してHL7 A31メッセージにマッピングしています。このマップには、いくつかのインラインXSLTスクリプトFunctoidがあります。 XMLは、HL7通されBizTalk HL7は、空のXML要素の改行によりパイプラインエラーを送信します。
は、パイプラインを送る、それがエラーを生成します。
The element 'ROL_11_OfficeHomeAddress' has an invalid structure
私は中断メッセージを見れば、これが起こった理由を、私は見ることができます。 ROL_11要素が空で、次のようになります。開始タグと終了タグの間に
<ROL_11_OfficeHomeAddress>
</ROL_11_OfficeHomeAddress>
、改行やインデントによるには、いくつかの空白/タブがあります。これはXSLTによって生成されたのとまったく同じです。私はそれがエラーの原因となっている改行であると信じています。
<xsl:if>
ステートメントでXSLTをラップして、XMLを書き込む前に値をチェックすることができます。しかし、この問題は多くの場所で発生しており、このようなすべての要素をラップするのは難しいようです。
<ROL_11_OfficeHomeAddress />
私はこの問題を解決するだろうと信じて:のBizTalkは自動的に空のいずれかに要素を変換するために、私が本当に欲しい
はこのように、あります。私はそれをするためにそれを言うことができる方法はありますか? <xsl:strip-space>
を使用して
それは、独自のエラーが発生した:
物事は私はすでに試してみました。これは、BizTalkがインラインXSLTを独自のコードでラップし、ストリップスペースが間違った場所に指定されたためです。空白が削除されるだろう期待してインデントにありませんを設定するマップのグリッドプロパティを変更
。これは中断されたメッセージに見られるXMLには何の影響も与えませんでした。
従来の空白処理のレジストリキーを追加すると、this guidanceになります。再び、これはまったく効果がないように思われた。
ありがとうございます。私はすべてをXSLTに変換することを考えていませんでした。私が持っている唯一の問題は、これが起こる可能性があるすべての場所に ''テストを追加する必要があることです。しかし、マップ全体をXSLTに変換すると、 ''関数を使ってこれをグローバルに行うことはできますか?あるいは私はその目的を誤解していますか? –
私は上記を編集しました - 幸運! – StuartLC