[解決済み] エンベロープスキーマを使用したxmlDisassemblerでのデバッチが、空のメッセージで失敗する。
質問
BizTalk受信パイプラインで、エンベロープスキーマを使用して受信するxmlメッセージをデバッグしています。デバッチは、私がデバッチしようとしているサブメッセージを含むすべてのxmlに対してうまく機能しますが、メッセージにサブメッセージが含まれていない場合は失敗します。
デバッチ用の xpath にある要素について、スキーマで "min occurs" を 0 に、nillable = true に設定しました。以下のサンプルでは、"entry" と "resource" の要素に min occurs が 0 に設定されており、デバッグするものがないときにデバッチ機能が動作するようになると思いました。
エンベロープスキーマのアノテーションはこちらです。
<xs:annotation>
<xs:appinfo>
<schemaInfo xmlns="http://schemas.microsoft.com/BizTalk/2003" is_envelope="yes"/>
</xs:appinfo>
</xs:annotation>
<xs:element name="Bundle">
<xs:annotation>
<xs:appinfo>
<recordInfo xmlns="http://schemas.microsoft.com/BizTalk/2003" body_xpath="/*[local-name()='Bundle' and namespace-uri()='']/*[local-name()='entry' and namespace-uri()='']/*[local-name()='resource' and namespace-uri()='']"/>
</xs:appinfo>
</xs:annotation>
デバッチするメッセージがない場合のメッセージ例
<Bundle >
<type value="searchset"/>
<total value="0"/>
</Bundle>
サブメッセージが存在する場合のデバッチ用xpathの例。
<Bundle >
<type value="searchset"/>
<total value="46"/>
<entry>
<resource>
<Encounter>
entry/resource/encounters 要素を含むメッセージは正常にデバッグされますが、 "entry" 要素を含まないメッセージ (デバッグするメッセージがない) は、以下のエラーを投げます。
<ブロッククオート理由 このディスアセンブラは、次の XPath を使用してボディノードを取得することができません: "/ [ローカルネーム()='Bundle'かつ名前空間uri()=''】/。] [local-name()='entry' and namespace-uri()='']/ [local-name()='resource' and namespace-uri()='']". / [ローカル名()='バンドル'かつ名前空間-uri()='']/ [ローカル名()='entry' および名前空間-uri()='']/ [local-name()='resource'とnamespace-uri()=''の組み合わせ。]
デバッチするものがないメッセージは単に "消える" を期待しますが、代わりにグループハブでエラーになります。このエラーを取り除く方法について、何かアイデアや提案があれば、非常に感謝します。
解決方法を教えてください。
以下のbody_xpathを使用すると、'entry'のレコードを持つ'Bundle'のみを抽出することができます。
body_xpath="/*[local-name()='Bundle' and namespace-uri()=''][*[local-name()='entry' and namespace-uri()=''][count(*)>0]]/*[local-name()='entry' and namespace-uri()='']/*[local-name()='resource' and namespace-uri()='']"
または
body_xpath="/*[local-name()='Bundle' and namespace-uri()=''][*[local-name()='entry' and namespace-uri()=''][count(*)>0]]/*[local-name()='entry' and namespace-uri()='']/*[local-name()='resource' and namespace-uri()='']"
関連
-
[解決済み] XPathでnot contains()を使うには?
-
[解決済み] エンベロープスキーマを使用したxmlDisassemblerでのデバッチが、空のメッセージで失敗する。
-
[解決済み] normalize-space(.)とnormalize-space(text())の違いは何ですか?
-
[解決済み] 異なるノードに対する XPath OR 演算子
-
[解決済み] XPath - 値が等しい要素を選択する
-
[解決済み] Xpath: クラスを含み、かつ特定の子要素がテキストを含む div を選択する。
-
[解決済み】XPathを使用して、特定の属性を持つ最初の要素を選択する方法
-
[解決済み] XPath contains(text(),'some string') は、複数の Text サブノードを持つノードで使用すると動作しません。
-
[解決済み】XPath:その値に基づいて要素を選択するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] XPathでnot contains()を使うには?
-
[解決済み] エンベロープスキーマを使用したxmlDisassemblerでのデバッチが、空のメッセージで失敗する。
-
[解決済み] normalize-space(.)とnormalize-space(text())の違いは何ですか?
-
[解決済み] 異なるノードに対する XPath OR 演算子
-
[解決済み] XPath - 値が等しい要素を選択する
-
[解決済み] Xpath: クラスを含み、かつ特定の子要素がテキストを含む div を選択する。
-
[解決済み】XPathを使用して、特定の属性を持つ最初の要素を選択する方法
-
[解決済み] XPath contains(text(),'some string') は、複数の Text サブノードを持つノードで使用すると動作しません。
-
[解決済み】XPath:その値に基づいて要素を選択するには?