我正在尝试使用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是否正确?如何映射数据?
到目前为止我已经得到了这个:
结果:
<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。
有人可以帮我一点吗?
答案 0 :(得分:0)
请参阅http://www.altova.com/forum/default.aspx?g=posts&t=1100001095,了解我在Altova论坛上获得的一个很好的解决方案。