0

おはようございます、

私はBizTalkを学ぼうとしていますが、理解できないことをしています。

従業員のアドレスのXMLを出力しています。ループするファンクトイドは、2つの「通信」要素を作成します。「CountrySubDivisionCode」を両方の子要素として表示することを期待していましたが、表示されるのは1回だけです。

<ns0:Communication sequence="1">
    <ns0:ChannelCode>Telephone</ns0:ChannelCode>
    <ns0:UseCode>Personal</ns0:UseCode>
    <ns0:DialNumber>1234567890</ns0:DialNumber>
    <ns0:Address>
        <ns0:AddressLine sequence="1">1234 My St</ns0:AddressLine>
        <ns0:CityName>Some City</ns0:CityName>
        <ns0:CountrySubDivisionCode name="County">Jackson</ns0:CountrySubDivisionCode>
        <ns0:CountrySubDivisionCode name="State">MO</ns0:CountrySubDivisionCode>
        <ns0:CountryCode>US</ns0:CountryCode>
        <ns0:PostalCode>14099</ns0:PostalCode>
    </ns0:Address>
</ns0:Communication>
<ns0:Communication sequence="2">
    <ns0:ChannelCode>Telephone</ns0:ChannelCode>
    <ns0:UseCode>Business</ns0:UseCode>
    <ns0:DialNumber>0987654321</ns0:DialNumber>
    <ns0:Address>
        <ns0:AddressLine sequence="1">1234 My St</ns0:AddressLine>
        <ns0:CityName>Some City</ns0:CityName>
        <ns0:CountryCode>US</ns0:CountryCode>
        <ns0:PostalCode>14099</ns0:PostalCode>
    </ns0:Address>
</ns0:Communication>

入力はフラットスキーマです。

電話番号を使用したCommunication要素のループ機能が1つあります。その出力は、出力スキーマのCommunication要素です。

州と郡の入力を持つ別のループ関数があります。その出力は、出力スキーマのCountrySubDivisionCode要素です。

マッピングは、何が出力され、何が出力されないかをどのように決定しますか?2番目のセットは重複しているので出力しませんか?私が見つけたすべてのチュートリアルは、同じソース資料のコピーアンドペーストバージョンのようで、かなり軽いです。

ありがとう

4

2 に答える 2

1

マップを検証し (ソリューション エクスプローラーで右クリック)、ビジュアル スタジオの出力ウィンドウで XSL リンクをクリックします。これは、生成された XSLT が表示されるので、マッパーが何をしているかを把握するための最良の方法です。

于 2011-04-12T22:34:05.463 に答える
0

私は実験によってこれを修正することができました。ループ Functoid の仕組みは次のとおりだと思います。

  • 各入力から入力値のリストを作成します
  • リストを反復処理して、入力ごとに 1 つの出力を作成します。これを行うと、他の入力が削除されます (null または空ではありません)。
  • リストが使い果たされると、出力はありません (リストは空です)。

ループ Functoid を「ネスト」していました。外側の Functoid には 3 つの入力があり、内側の Functoid には 2 つの入力がありました。最初の外部 Functoid 出力では、内部 Functoid からの 2 つの入力の両方を使用しました (位置のために抑制され、失われました)。後続のすべての外部 Functoid 出力では、内部 Functoid にはそれ以上使用する値がないため、何も出力しませんでした。

私の解決策では、アドレス部分が最初になるように、外部 Functoid への入力を再配置する必要がありました。内部 Functoid は、2 つの国区分を正しく出力しました。後続の電話列では、出力が残っておらず、必要もありませんでした。

マイケルとムシオ、助けてくれてありがとう!

于 2011-04-13T19:47:47.563 に答える