XSL automatisch generieren
Sonya Sokolova
- xsl
Hallo,
gibt es ein Tool, daß anhand von 2 XML Schemas automatisch ein XSL Dokument generiert, das eine XML Instanz von Schema #1 in eine Instanz von Schema #2 transformieren kann?
Der Hintergrund ist folgender:
Ich möchte ein XML Dokument mit einer relativ einfachen Baumstruktur in ein Dokumente mit einer komplexeren Baumstruktur transformieren, der
Inhalt soll jedoch der gleich bleiben.
Das Ausgangsdokument könnte z.B. so aussehen:
<data>
<aaa/>
<aab/>
<aac/>
<aad/>
<aae/>
<aaf/>
<aag/>
<aah/>
<zeugs>
</egal>
</zeugs>
</data>
Daraus soll dann z.B. folgendes Dokument generiert werden:
<data>
<aac/>
<aah/>
<node_1>
<aad/>
<aaa/>
<zeugs>
</egal>
</zeugs>
</node_1>
<node_2>
<aab/>
<aag/>
<node_2.1>
<aab/>
<aae/>
</node_2.1>
</node_2>
</data>
Alle Elemente aus Dokument 1 sind auch in Dokumente 2 enthalten. Bis auf die Elemente, die die Hierarchie festlegen (<node_x>) kommen keine neuen Elemente hinzu. Für beide Dokumente existiert ein XML Schema. Die neue Hierarchie wird ausschließlich durch das XML Schema festgelegt.
Gibt es vielleicht noch andere Ansätze um Datenstrukturenveränderungen automatisch zu gestalten?
Gruß
Sonya
Moin Moin !
Das halte ich für sehr unwahrscheinlich. Selbst wenn zwei XML-Schemata zufällig oder absichtlich gleiche Tag-Namen benutzen, woher soll denn ein Konverter oder ein XSL-Generator wissen, welches Tag zu welchem Tag gehört und wie sie verschachtelt werden müssen?
Das steht allerhöchstens in der Doku zum XML-Schema, und ist zwar meistens für Menschen, aber nur sehr, sehr selten für Maschinen verständlich.
Alexander
Hallo Alexander,
Das halte ich für sehr unwahrscheinlich. Selbst wenn zwei XML-Schemata zufällig oder absichtlich gleiche Tag-Namen benutzen, woher soll denn ein Konverter oder ein XSL-Generator wissen, welches Tag zu welchem Tag gehört und wie sie verschachtelt werden müssen?
ich hoffte, dass das Tool genau danach fragt und anhand meiner Angaben die XSL erstellt (xPath?).
Vielleicht hättest Du da einen anderen Tipp: ich muss Datenübernahme aus verschiedensten Formaten, Datenbanken etc. durchführen. D.h. dass die Zielstruktur immer gleich bleibt, bloß die Quellen unterscheiden sich immer.
Müsste ich in diesem Fall immer wieder neue XSL schreiben?
Danke
Sonya
Hallo Sonya,
Vielleicht hättest Du da einen anderen Tipp: ich muss Datenübernahme aus verschiedensten Formaten, Datenbanken etc. durchführen. D.h. dass die Zielstruktur immer gleich bleibt, bloß die Quellen unterscheiden sich immer.
Heisst das Du bekommst immer wieder die gleichen Inhalte nur aus verschiedenen Quellen ? Dann definiere Dir doch ein XML Format, das Du als Ausgangspunkt für die Transformation nimmst. Dann schreibst Du Dir noch einen "Adapter" für jede Datenquelle, die genau dieses XML erzeugt. XML ausgeben aus Datenbanktabellen, etc... ist oft ziemlich einfach zu programmieren.
Ich hoffe, ich hab Dein Probelm richtig verstanden
Gruss
Marko
Hallo,
gibt es ein Tool, daß anhand von 2 XML Schemas automatisch ein XSL Dokument generiert, das eine XML Instanz von Schema #1 in eine Instanz von Schema #2 transformieren kann?
Ja. Nennt sich Gehirn.
Kein Tool kann wissen, wie du Denkst und was du braucht.
Und deine Schemas spielen dabei fröhlich und vergnügt absolut nicht die keinste Rolle.
Du kannst zwar in deinem Schemas die verschidene Strukturen für Ein- und Ausgangsdokumente definieren, aber die Mapping zwsichen den strukturen muss du selbst bestimmen und deklarieren (Wohin kommt der Inhalt vom Element-A aus Doku1 im Doku2? etc., und das kann dir kein Tool sagen!)
Was du machen kannst ist, dass du einen Tool nimmst, der dir bei der Erstellung der Mapping behilflich ist. Z.B. XMLSpy, damit kannst du XSL-Sheets generieren in dem du genau angaben machst was wohin soll, aber du kannst trotdem nicht sagen, dass er eine zweite Schema anwenden soll um damit die Erstellung deines XSL-Sheets zu überwachen.
Dem (deinem XSL-Sheet) sind nämlich deine beiden Schemas vollkommen egal.
Grüße
Thomas