午後になっても、私は BizTalk を学んでいて、この問題に行き詰まっています。
電話番号または住所の選択グループがあります。電話を出力するときに、住所フィールドの一部を非表示にすることができます。簡単にするために、「CityName」フィールドについて説明します。
私は次のことを試しました:
入力ファイルの "City" (テキスト) ノードを出力の "CityName" にマップしました。Exists論理 Functoid を入力ノードの "Address1" ノードと出力の "CityName" ノードに接続しました。私はいつもテキストが記入された都市名を取得します。
入力ファイルの "City" ノードとExists論理 Functoid をValue Mapper Functoid にマップしました。値マッパーFunctoid を出力の CityName に接続しました。address ノードで都市名を取得し (正しい)、telephone ノードで空のノードを取得します (正しくない)。
入力ファイルの "City" ノードと Exists 論理 Functoid を値マッパー (フラット化) Functoid にマップしました。値マッパー (フラット化) Functoid を出力の CityName に接続しました。address ノードで都市名を取得し (正しい)、telephone ノードで空のノードを取得します (正しくない)。
最後の2つのうちの1つが機能するはずだと思いましたが、どちらも抑制されたノードではなく空のノードを提供します。空のノードには属性がありません。
CityName ノードは、次のスキーマ タイプによって記述されます。
<xsd:complexType name="NameType">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="languageID" type="xsd:language" use="optional">
</xsd:attribute>
<xsd:attribute name="sequence" type="IntegerNumericType">
</xsd:attribute>
<xsd:attribute name="sequenceName" type="StringType" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="IntegerNumericType">
<xsd:restriction base="xsd:integer" />
</xsd:simpleType>
<xsd:simpleType name="StringType">
<xsd:restriction base="xsd:string" />
</xsd:simpleType>
空のノードの作成を強制するタイプ定義に何かありますか?
ありがとう
編集: 以下は間違った出力です。2 番目と 3 番目の Communication ノードには Address Child ノードがありますが、これはすべきではありません。
電話番号とフラットな入力スキーマの最初の住所行にループ Functoid があります。これにより、3 つの通信ノードが生成されます。アドレス行でLogical Existance Functoidを使用して、最初のノードの電話情報を抑制しています。出力スキーマの Address ノードに直接結び付けられている出力に Logical Not Functoid があります。アドレスノード全体をオフにする必要があると思いましたが、そうではありません。
論理的存在 Functoid に接続された値マッピングFunctoid を City Name および Postal code 要素に追加しようとしましたが、それらは空になりましたが、消えません。ARG!
私がチェックしたところ、フィールドはすべて MinOccurs がゼロに設定されており、デフォルト値が割り当てられているとは思えません。
<ns0:Communication>
<ns0:Address>
<ns0:AddressLine sequence="1">1234 My St</ns0:AddressLine>
<ns0:AddressLine sequence="2">Apt. 2</ns0:AddressLine>
<ns0:CityName>Kansas City</ns0:CityName>
<ns0:CountrySubDivisionCode name="State">MO</ns0:CountrySubDivisionCode>
<ns0:CountrySubDivisionCode name="County">Jackson</ns0:CountrySubDivisionCode>
<ns0:CountryCode>US</ns0:CountryCode>
<ns0:PostalCode>64099</ns0:PostalCode>
</ns0:Address>
</ns0:Communication>
<ns0:Communication sequence="1">
<ns0:ChannelCode>Telephone</ns0:ChannelCode>
<ns0:UseCode>Personal</ns0:UseCode>
<ns0:DialNumber>1234567890</ns0:DialNumber>
<ns0:Address>
<ns0:CityName />
<ns0:CountryCode />
<ns0:PostalCode>64099</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:CityName />
<ns0:CountryCode />
<ns0:PostalCode>64099</ns0:PostalCode>
</ns0:Address>
</ns0:Communication>