1

構造化された 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 の小さなスクリプト) のみを使用してこれを達成できるかどうか、またはどのように達成できるかを知っている人はいますか?

どうもありがとう、ロブ。

4

2 に答える 2

0

期待されるxmlのサブサンプルを取得することは可能ですか?応答ファイルがどのように見えるかについてのアイデアはどうですか。ルートの下に複数の要素シーケンスがあると思いますか?ターゲットスキーマに別のルートノードがある方が簡単だと思います。

すなわち。

<Trips>
   <Trip>
      <Registration />
      <Distance />
      <Duration />
   </Trip>
</Trips>

XSLTを使用しない限り、要素シーケンスの順序を維持できるとは思いません。

于 2008-12-10T13:33:43.540 に答える
0

ループと論理等価 Functoid を使用して実行できるようです。実際のスキーマまたはデータのサブサンプルのみを提供できれば、簡単に把握できます。

上記のソース スキーマは、複数の .

于 2008-12-02T18:34:00.850 に答える