0

MapForce を使用して、2 つの csv ファイルの結合データを XML にマップしようとしています。

これは私の入力です:

Page;Project;Index
PageA;ProjectA;3
PageB;ProjectA;5
PageC;ProjectB;7

Subpage;Page;File
Subpage1;PageA;1.jpg
Subpage2;PageA;2.jpg
Subpage3;PageC;3.jpg

MapForce は、必要な出力の例に基づいて XSD を作成しました:

XML:

<Pages>
    <Page Title="PageA">
        <Template Name="PageTemplate">
            <Field Name="Context">ProjectA</Field>
            <Field Name="Index">3</Field>
        </Template>
        <Template Name="ShowSubpagesTemplate">
        </Template>
        <Template Name="SubpageTemplate">
            <Field Name="Subpage">Subpage1</Field>
            <Field Name="File">1.jpg</Field>
        </Template>     
        <Template Name="SubpageTemplate">
            <Field Name="Subpage">Subpage2</Field>
            <Field Name="File">2.jpg</Field>
        </Template>             
    </Page>
    <Page Title="PageB">
        <Template Name="PageTemplate">
            <Field Name="Context">ProjectA</Field>
            <Field Name="Index">5</Field>
        </Template>
        <Template Name="ShowSubpagesTemplate">
        </Template>
    </Page>
    <Page Title="PageC">
        <Template Name="PageTemplate">
            <Field Name="Context">ProjectB</Field>
            <Field Name="Index">7</Field>
        </Template>
        <Template Name="ShowSubpagesTemplate">
        </Template>
        <Template Name="SubpageTemplate">
            <Field Name="Subpage">Subpage3</Field>
            <Field Name="File">3.jpg</Field>
        </Template>             
    </Page>
</Pages>

XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Pages">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Page" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Template" maxOccurs="unbounded">
                                <xs:complexType mixed="true">
                                    <xs:sequence>
                                        <xs:element name="Field" minOccurs="0" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:simpleContent>
                                                    <xs:extension base="xs:string">
                                                        <xs:attribute name="Name" use="required" type="xs:string"/>
                                                    </xs:extension>
                                                </xs:simpleContent>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="Name" use="required" type="xs:string"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="Title" use="required" type="xs:string"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

この XSD は正しいですか? データをマップするにはどうすればよいですか?

私はこれまでのところこれを持っています:

CSV から XML へのマッピング

結果:

<Pages>
    <Page Title="PageA">
        <Template Name="PageTemplate">
            <Field Name="ProjectA"/>
        </Template>
    </Page>
    <Page Title="PageB">
        <Template>
            <Field Name="ProjectA"/>
        </Template>
    </Page>
    <Page Title="PageC">
        <Template Name="PageTemplate">
            <Field Name="ProjectB"/>
        </Template>
    </Page>
</Pages>

さて、始めですが、目的の XML を取得する方法がわかりません。

誰かが私を少し助けてくれますか?

4

1 に答える 1

0

Altova フォーラムで得た素晴らしい解決策については、http://www.altova.com/forum/default.aspx? g=posts&t=1100001095 を参照してください。

于 2016-05-20T13:23:38.637 に答える