[xSLT] csv in xml umwandeln (xslt?)

schlumsch

Cadet 4th Year
Registriert
Feb. 2008
Beiträge
73
Hallo allerseits,


ich habe eine Frage zu xslt. Ich möchte ein csv-file in ein xml umwandeln. dabei möchte ich in einem Zwischenschritt eine Prüfung einbauen, ob das csv-file einem bestimmten Format genügt und dannd die Konvertierung durchführen.

Für den Fall xml2xml tut dies xslt wenn ich das richtig sehe. Gibt es auch eine Möglochkeit für csv2xml? ... eventuell existiert dafür ja auch eine andere Technologie als xslt, jedenfalls brauche ich am Ende des Tages ein script welches ich laufen lassen kann.

Ich habe quasi ein csv in welchem jede Zeile einen abgeschlossenen Datensatz repräsentiert. An einer bestimmten Position der Zeile, z.b. Element 3, steht ein String welcher definiert wie viele Attribute der Datensatz haben darf und welche Bedeutung diese haben. Kann (wie?) ich vor der Umwandlung in xml eben dieses prüfen?

Danke schon einmal, Gruß schlumsch
 
XSLT kann nur XML -> XML oder XML -> was anderes, nicht aber was anderes -> XML. Zur Verarbeitung von CSV-Dateien existiert meines Wissens keine eigene Sprache.

Ich würde das in einer herkömmlichen Programmiersprache mit Hilfe einer XML-Bibliothek (zum Erzeugen des Resultats) lösen. CSV zu parsen ist ja nicht schwer, bzw. gibt es in einigen Sprachen (z. B. PHP) sogar extra Funktionen dafür.
 
Ich hab vor wenigen Wochen einen invidiuellen CSV->PHP-Konverter programmiert gehabt. Mit PHP übrigens für ein Wirtschaftswaren-System.

Jedoch ohne fgetcsv, files() tut es auch und dann nach dem 'character' splitten, fgetcsv macht eigentlich genau das selbe. Wobei CSV nicht mehr "Comma-Sepated-Value" heißt, sondern mitunter "Charachter-Separated-Value", je nach Dateninhalt sind Kommas sehr ungünstig, wenn z.B. Texte drine sind.
 
Okay, also erzeuge ich mir quasi zuerst ein xml und übersetze dieses dann via xslt. (?) Als absoluter neuling in xslt muss ich da gleich nochmal nachfragen - mit xslt kann ich dann den von mir unten beschriebenen Sachverhalt umsetzen? Also zum Beispiel Anhand des 3ten Strings in einer Zeile überprüfen wie viele Strings die Zeile insgesammt hat und diese dann um weitere Elemente anreichern?

Bsp:

01|02|Objekt|03|04

soll werden zu

<Objekt>
<Bedeutung1>
<01>
</Bedeutung1>
<Bedeutung2>
<02>
</bedeutung2>
...
</Objekt>

?? :)
 
Du brauchst dann kein XSLT mehr. Mach das Überprüfen gleich beim Erzeugen des XMLs.
 
Ja das ist klar. Nur wenn ich das Problem in irgendeiner Sprache wie Java etc löse, dann muss ich jedesmal wenn sich das Format des csv-files ändert durch meinen Quellcode durchwurschteln und die betreffenden (evtl. viele) stellen ändern. Ich hatte gehofft irgendwo eine Art Schemadefinition (in welchem Format auch immer) hinterlegen zu können welche (im Idealfall im textformat) angibt welche Objekte welche Attribute haben dürfen. Mein Code / xslt... sollte dann einfach über diese Definition rumpeln, mein csv auf einhaltung der Definition prüfen und mir am Ende mein xml erstellen.

Ich ahne schin das heut nicht weihnachten ist :)
 
Das Problem ist, daß sich ändernde Formate einfach doof sind :D

Machbar ist es natürlich, aber es gibt halt keine fertige Lösung dafür. Da mußt du wohl selbst eine schreiben.
 
Könntest du ja machen.
Defeniere selbst ein Schema und lese es selbst beim Erzeugen wieder aus.

Vielleicht wärst du schon fertig anstatt eine bequemere Möglichkeit zu finden ;)

Erzängung:
Der Code war quatsch, man bräuchte eine Art Elemten-Baum, also eine Hierachische Informationen in Form von Arrays zu speichern.
 
Zuletzt bearbeitet:
Zurück
Oben