構造化された XML ファイル形式を、よりフラットな XML 形式にマップする必要があります。通常、このためにカスタム XSLT ファイルを作成し、BizTalk マップでそれを使用します。ただし、可能であればグラフィカル マップを使用するというアイデアは気に入っています。XSLT に直接飛び込むのは簡単すぎますが、あなたをフォローしている人にとっては、マップが何をしているのかをすぐに理解するのは簡単ではありません。
テーブル ループ機能とテーブル エクストラクタ Functoid を使用してマッピングを達成できるのではないかと思いますが、数時間試してみましたが失敗しました :(
注: ソース XSD を制御することはできません。これはサードパーティからのものです。ここにあります:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="VehicleTrips">
<xs:annotation>
<xs:documentation>Comment describing your root element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="Vehicle">
<xs:complexType>
<xs:sequence>
<xs:element name="VehicleID"/>
<xs:element name="VehicleRegistration"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Trips">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="VehicleId"/>
<xs:element name="Distance"/>
<xs:element name="Duration"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
...そして、ここにターゲットの XSD があります:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Trips">
<xs:annotation>
<xs:documentation>Comment describing your root element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="VehicleRegistration"/>
<xs:element name="Distance"/>
<xs:element name="Duration"/>
</xs:sequence>
</xs:complexType>
</xs:element>
要約すると、Trips を調べて、VehicleId をキーとして Vehicle から VehicleRegistration を取得し、データをターゲット スキーマにコピーする必要があります。
Functoid (またはおそらくスクリプト Functoid の小さなスクリプト) のみを使用してこれを達成できるかどうか、またはどのように達成できるかを知っている人はいますか?
どうもありがとう、ロブ。