0

我正在尝试使用 MapForce 将两个 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

请参阅http://www.altova.com/forum/default.aspx?g=posts&t=1100001095,了解我在 Altova 论坛上获得的一个不错的解决方案。

于 2016-05-20T13:23:38.637 回答