Как создать XML с использованием файлов CSV и XSD?
Я пытаюсь отобразить объединенные данные двух CSV-файлов в XML с помощью MapForce.
Это мой вклад:
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.
Может кто-нибудь помочь мне немного?
1 ответ
Решение
См. http://www.altova.com/forum/default.aspx?g=posts&t=1100001095 для хорошего решения, которое я получил на форуме Altova.